Logtalk 2.29.1 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1744 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
7316eb490c
commit
d79dd807e6
@ -2,7 +2,7 @@
|
|||||||
@misc{logtalkweb,
|
@misc{logtalkweb,
|
||||||
author = "Paulo Moura",
|
author = "Paulo Moura",
|
||||||
title = "Logtalk web site",
|
title = "Logtalk web site",
|
||||||
howpublished = "\url{http://www.logtalk.org/}"
|
howpublished = "\url{http://logtalk.org/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
school = "Department of Informatics, University of Beira Interior, Portugal",
|
school = "Department of Informatics, University of Beira Interior, Portugal",
|
||||||
month = sep,
|
month = sep,
|
||||||
year = 2003,
|
year = 2003,
|
||||||
howpublished = "\url{http://www.logtalk.org/papers/thesis.pdf}"
|
howpublished = "\url{http://logtalk.org/papers/thesis.pdf}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -42,7 +42,7 @@
|
|||||||
Title = "{Category-Based Composition in Object-Oriented Languages}",
|
Title = "{Category-Based Composition in Object-Oriented Languages}",
|
||||||
month = nov,
|
month = nov,
|
||||||
year = 2000,
|
year = 2000,
|
||||||
howpublished = "\url{http://www.logtalk.org/papers/categories_ecoop.pdf}",
|
howpublished = "\url{http://logtalk.org/papers/categories_ecoop.pdf}",
|
||||||
annote = "Submitted to ECOOP 2001"
|
annote = "Submitted to ECOOP 2001"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +54,7 @@
|
|||||||
number = "DMI 2000/1",
|
number = "DMI 2000/1",
|
||||||
month = jul,
|
month = jul,
|
||||||
year = 2000,
|
year = 2000,
|
||||||
howpublished = "\url{http://www.logtalk.org/files/trdmi20001a4.pdf.gz}"
|
howpublished = "\url{http://logtalk.org/files/trdmi20001a4.pdf.gz}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +63,7 @@
|
|||||||
Title = "{Category-Based Composition in Object-Oriented Languages}",
|
Title = "{Category-Based Composition in Object-Oriented Languages}",
|
||||||
month = apr,
|
month = apr,
|
||||||
year = 2000,
|
year = 2000,
|
||||||
howpublished = "\url{http://www.logtalk.org/papers/categories_oopsla.pdf}",
|
howpublished = "\url{http://logtalk.org/papers/categories_oopsla.pdf}",
|
||||||
annote = "Submitted to OOPSLA 2000"
|
annote = "Submitted to OOPSLA 2000"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -9,7 +9,8 @@ Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
|||||||
This file contains detailed instructions for customizing your Logtalk
|
This file contains detailed instructions for customizing your Logtalk
|
||||||
installation and working environment. Customization is mostly done on
|
installation and working environment. Customization is mostly done on
|
||||||
a per-user basis by editing files on the Logtalk user folder (whose
|
a per-user basis by editing files on the Logtalk user folder (whose
|
||||||
path is sorted on the LOGTALKUSER environment variable).
|
path is stored on the LOGTALKUSER environment variable; the folder itself
|
||||||
|
can be created by running the "cplgtdirs" shell command).
|
||||||
|
|
||||||
|
|
||||||
1. SETTING LIBRARY PATHS
|
1. SETTING LIBRARY PATHS
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
|
||||||
|
|
||||||
This file contains detailed instructions for installing and configuring
|
The recommended way of installing Logtalk is to use, whenever possible, one
|
||||||
Logtalk. You should also consult the "scripts/NOTES" file for a description
|
of the provided installers. This file contains detailed instructions for
|
||||||
of a set of shell scripts that might be used for Logtalk installation on
|
manual installation and configuration of Logtalk. You should also consult
|
||||||
some operating-systems and for easy Logtalk integration with popular
|
the "scripts/NOTES" file for a description of a set of shell scripts that
|
||||||
Prolog compilers.
|
might be used for Logtalk installation on some operating-systems and for
|
||||||
|
easy Logtalk integration with popular Prolog compilers.
|
||||||
|
|
||||||
Note that the broad compatibility of Logtalk, both with Prolog compilers and
|
Note that the broad compatibility of Logtalk, both with Prolog compilers and
|
||||||
operating-systems, together with all the possible user scenarios, means that
|
operating-systems, together with all the possible user scenarios, means that
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -10,32 +10,36 @@ Quick start
|
|||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
||||||
1. Install Logtalk by following the instructions on the "INSTALL" file.
|
1. Install Logtalk by using either the installer provided for your
|
||||||
Depending on your operating-system, working environment, and favorite
|
operating-system (when available) or by following the instructions
|
||||||
Prolog compiler, you may already have a script or a shortcut installed
|
on the "INSTALL" file. Depending on your operating-system, working
|
||||||
for easily running Logtalk with your favorite Prolog compiler. If so,
|
environment, and favorite Prolog compiler, you may already have a
|
||||||
skip the instructions below for starting up Logtalk.
|
script or a shortcut installed for easily running Logtalk with your
|
||||||
|
favorite Prolog compiler. If so, skip the instructions below for
|
||||||
|
starting up Logtalk.
|
||||||
|
|
||||||
2. Open the "manuals/index.html" file with a web browser.
|
2. Open the "manuals/index.html" file with a web browser.
|
||||||
|
|
||||||
3. Select the "Tutorial" link. This will provide you with a basic understanding
|
3. Select the "Tutorial" link. This will provide you with a basic
|
||||||
of the main Logtalk concepts.
|
understanding of the main Logtalk concepts.
|
||||||
|
|
||||||
4. Go back to the "index.html" file and select the "User Manual" link and then
|
4. Go back to the "index.html" file and select the "User Manual"
|
||||||
the Installing and running Logtalk links. This will provide you with a basic
|
link and then the Installing and running Logtalk links. This will
|
||||||
understanding of how to start Logtalk and compile and load Logtalk code.
|
provide you with a basic understanding of how to start Logtalk and
|
||||||
|
compile and load Logtalk code.
|
||||||
|
|
||||||
|
|
||||||
Assuming that Logtalk supports your Prolog compiler:
|
Assuming that Logtalk supports your Prolog compiler:
|
||||||
|
|
||||||
1. Read the "NOTES" file in the "configs" sub-directory to check if any patch
|
1. Read the "NOTES" file in the "configs" sub-directory to check if
|
||||||
or workaround is needed for your compiler.
|
any patch or workaround is needed for your compiler.
|
||||||
|
|
||||||
2. Start your Prolog compiler.
|
2. Start your Prolog compiler.
|
||||||
|
|
||||||
3. Change the current working directory of your Prolog session to the Logtalk
|
3. Change the current working directory of your Prolog session to the
|
||||||
installation directory. If you don't know which predicate to use, check the
|
Logtalk installation directory. If you don't know which predicate to
|
||||||
"configs/NOTES" file or your Prolog compiler reference manual.
|
use, check the "configs/NOTES" file or your Prolog compiler reference
|
||||||
|
manual.
|
||||||
|
|
||||||
4. Compile and load the config file for your Prolog compiler.
|
4. Compile and load the config file for your Prolog compiler.
|
||||||
|
|
||||||
@ -75,18 +79,18 @@ them on your Prolog interpreter top-level.
|
|||||||
|
|
||||||
Ready to start writing your own programs?
|
Ready to start writing your own programs?
|
||||||
|
|
||||||
1. Read the User Manual sections on "Programming in Logtalk" and "Running and
|
1. Read the User Manual sections on "Programming in Logtalk" and "Running
|
||||||
debugging Logtalk programs".
|
and debugging Logtalk programs".
|
||||||
|
|
||||||
2. Take a look at the "wenv" sub-directory. There you will find syntax
|
2. Take a look at the "wenv" sub-directory. There you will find syntax
|
||||||
configuration files for popular text editors that enable syntax coloring
|
configuration files for popular text editors that enable syntax coloring
|
||||||
and other goodies when editing Logtalk source files.
|
and other goodies when editing Logtalk source files.
|
||||||
|
|
||||||
3. Create a sub-directory with a suitable name to hold all the files of your
|
3. Create a sub-directory with a suitable name to hold all the files of
|
||||||
application. You may want to add the directory path to the libpaths.pl file
|
your application. You may want to add the directory path to the libpaths.pl
|
||||||
mentioned above in order to easily load your application.
|
file mentioned above in order to easily load your application.
|
||||||
|
|
||||||
4. Copy to this sub-directory a loader file from one of the example directories
|
4. Copy to this sub-directory a loader file from one of the example
|
||||||
and modify it to load your own source files.
|
directories and modify it to load your own source files.
|
||||||
|
|
||||||
5. Have fun!
|
5. Have fun!
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -81,7 +81,8 @@ with just the word "help" in the subject or in the message body.
|
|||||||
|
|
||||||
Logtalk can be installed either from sources by running a few shell scripts
|
Logtalk can be installed either from sources by running a few shell scripts
|
||||||
or by using one of the provided installers, depending on your operating
|
or by using one of the provided installers, depending on your operating
|
||||||
system. See the file "INSTALL.txt" for detailed instructions.
|
system. For manual installation, see the file "INSTALL.txt" for detailed
|
||||||
|
instructions.
|
||||||
|
|
||||||
See the user manual for a description of the source files organization
|
See the user manual for a description of the source files organization
|
||||||
and for using instructions (to read the user manual open the file
|
and for using instructions (to read the user manual open the file
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -10,6 +10,102 @@ RELEASE NOTES
|
|||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
2.29.1 - December 28, 2006
|
||||||
|
|
||||||
|
Added a Logtalk version of John Fletcher's Prolog XML parser (see the
|
||||||
|
folder "contributions/xml_parser").
|
||||||
|
|
||||||
|
Added shell scripts for helping building the distribution files of a
|
||||||
|
new Logtalk release. Updated the MacOS X installer package to set
|
||||||
|
default values for the Logtalk environment variables. Corrected a bug
|
||||||
|
in the logtalk.spec file where the default value for the LOGTALKUSER
|
||||||
|
environment variable only worked for the user doing the RPM installation.
|
||||||
|
|
||||||
|
Corrected a bug in the reporting of the line number where a compilation
|
||||||
|
error (or warning) occurred. Extended support for reporting warning and
|
||||||
|
error line numbers to Quintus Prolog, Ciao Prolog, Qu-Prolog, and
|
||||||
|
ECLiPSe.
|
||||||
|
|
||||||
|
Corrected a bug when using partial lists with the predicates nth0/3-4
|
||||||
|
and nth1/3-4 provided by the "list" library object.
|
||||||
|
|
||||||
|
Improved "philosophers" multi-threading programming example.
|
||||||
|
|
||||||
|
|
||||||
|
2.29.0 - December 18, 2006
|
||||||
|
|
||||||
|
Added a new built-in, empty object named "logtalk", which can play the
|
||||||
|
role of both a class and a prototype. It may be used to define class
|
||||||
|
hierarchies without forcing the use of metaclasses or reflective
|
||||||
|
designs.
|
||||||
|
|
||||||
|
Added a built-in protocol named "monitoring" with declarations for
|
||||||
|
the before/3 and after/3 public event handler predicates. Updated
|
||||||
|
the Logtalk compiler to print a warning when defining an event handler
|
||||||
|
with no reference to the "monitoring" protocol.
|
||||||
|
|
||||||
|
The default value of the compiler flag events/1 is now off. As most
|
||||||
|
applications do not use events, this setting ensures the best possible
|
||||||
|
message processing performance for those applications.
|
||||||
|
|
||||||
|
Removed the experimental threaded_call/2 and threaded_exit/2 thread
|
||||||
|
predicates, replaced by new threaded_once/1, threaded_ignore/1,
|
||||||
|
threaded_race/1, threaded_peek/1, and threaded_discard/1 predicates.
|
||||||
|
Renamed predicate directive atomic/1 to synchronized/1. Added new
|
||||||
|
entity directive synchronized/0. Added support for new "synchronized"
|
||||||
|
and "threaded" entity properties.
|
||||||
|
|
||||||
|
Corrected a bug when using threaded calls as initialization goals
|
||||||
|
within threaded objects.
|
||||||
|
|
||||||
|
Corrected an elusive bug in the Logtalk compiler where a source file
|
||||||
|
may not be properly closed when it contains a syntax error (thanks
|
||||||
|
to Robert Shiplett for the bug report).
|
||||||
|
|
||||||
|
Corrected a bug in the implementation of the built-in methods retract/1
|
||||||
|
and retractall/1 that could result in unexpected exceptions. Updated
|
||||||
|
the built-in method assertz/1 to always use the lookup cache.
|
||||||
|
|
||||||
|
Corrected a bug in the compilation of empty classes that are not
|
||||||
|
instances of a metaclass.
|
||||||
|
|
||||||
|
Corrected a bug in the built-in method predicate_property/2 where some
|
||||||
|
predicate properties may not be returned when enumerating properties
|
||||||
|
using backtracking.
|
||||||
|
|
||||||
|
Modified the SWI-Prolog config file and integration scripts to set
|
||||||
|
the flag "iso" to "true". Corrected an elusive bug in the definition
|
||||||
|
of predicate '$lgt_directory_exists'/1 that resulted in "library not
|
||||||
|
found" errors when loading Logtalk source files from within the
|
||||||
|
SWI-Prolog initialization file (thanks to Robert Shiplett for the bug
|
||||||
|
report).
|
||||||
|
|
||||||
|
Updated the K-Prolog config file to workaround a problem when using
|
||||||
|
library notation due to failure to check directory existence with the
|
||||||
|
provided "libpaths.pl" file.
|
||||||
|
|
||||||
|
Added a RELAX NG file describing the structure of the XML documenting
|
||||||
|
files generated by Logtalk.
|
||||||
|
|
||||||
|
Corrected a bug in the Logtalk DTD file (missing "copyright" tag
|
||||||
|
declaration).
|
||||||
|
|
||||||
|
Corrected a bug in the lgt2*.js scripts where the "custom.ent" file
|
||||||
|
was not being copied when generating (X)HTML and PDF files.
|
||||||
|
|
||||||
|
Added a new multi-threading example, "philosophers", illustrating a
|
||||||
|
possible implementation of the "dining philosophers" problem.
|
||||||
|
|
||||||
|
Improved the "metapredicates" example in order to illustrate the use
|
||||||
|
of closures instead of goals as meta-arguments.
|
||||||
|
|
||||||
|
Added a reference to the "e" Windows text editor, which supports
|
||||||
|
the MacOS X TextMate 1.x text editor syntax configuration files.
|
||||||
|
|
||||||
|
Updated the manuals index pages in order to workaround browsers bugs
|
||||||
|
with parsing of empty "span" tags (e.g. Internet Explorer and Opera).
|
||||||
|
|
||||||
|
|
||||||
2.28.2 - November 6, 2006
|
2.28.2 - November 6, 2006
|
||||||
|
|
||||||
Corrected a compiler bug where unknown entities will not be report when
|
Corrected a compiler bug where unknown entities will not be report when
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -140,5 +140,15 @@ could be used to bypass predicate scope declarations, meta-predicates that
|
|||||||
use closures must be re-implemented to use the new call/N Logtalk built-in
|
use closures must be re-implemented to use the new call/N Logtalk built-in
|
||||||
predicate. The directive metapredicate/1 is now deprecated, the directive
|
predicate. The directive metapredicate/1 is now deprecated, the directive
|
||||||
meta_predicate/1 should be used instead. There are also changes to the
|
meta_predicate/1 should be used instead. There are also changes to the
|
||||||
config files that render the Logtalk runtime imcompatible with the config
|
config files that render the Logtalk runtime incompatible with the config
|
||||||
files of previous versions.
|
files of previous versions.
|
||||||
|
|
||||||
|
Logtalk 2.29.0 makes some incompatible changes to the experimental support
|
||||||
|
for multi-threading programming that may imply updating any application that
|
||||||
|
uses the multi-threading predicates. The default value of the compiler flag
|
||||||
|
events/1 is now off. Applications using event-driven programming must either
|
||||||
|
turn this flag on or compile source files with the events(on) option. The
|
||||||
|
library protocol "event_handlersp" is now deprecated; new code should use
|
||||||
|
instead the built-in "monitoring" protocol. The new support for "threaded"
|
||||||
|
and "synchronized" entity properties implies implying recompilation of all
|
||||||
|
objects and categories.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -18,3 +18,9 @@ iso8601.lgt
|
|||||||
one of the documentation helper scripts to transform the
|
one of the documentation helper scripts to transform the
|
||||||
resulting XML file into (X)HTML or PDF documentation. Your
|
resulting XML file into (X)HTML or PDF documentation. Your
|
||||||
feedback is appreciated.
|
feedback is appreciated.
|
||||||
|
|
||||||
|
xml_parser
|
||||||
|
Contributed by: John Fletcher
|
||||||
|
|
||||||
|
This folder contains a Logtalk version of John Fletcher's
|
||||||
|
Prolog XML parser (http://www.zen37763.zen.co.uk/xml.pl.html).
|
||||||
|
19
Logtalk/contributions/xml_parser/NOTES.txt
Normal file
19
Logtalk/contributions/xml_parser/NOTES.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
=================================================================
|
||||||
|
Logtalk - Object oriented extension to Prolog
|
||||||
|
Release 2.29.1
|
||||||
|
|
||||||
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
|
=================================================================
|
||||||
|
|
||||||
|
|
||||||
|
This folder contains a Logtalk version of John Fletcher's Prolog XML
|
||||||
|
parser:
|
||||||
|
|
||||||
|
http://www.zen37763.zen.co.uk/xml.pl.html
|
||||||
|
|
||||||
|
To load this XML parser and for sample queries, please see the SCRIPT
|
||||||
|
file.
|
||||||
|
|
||||||
|
For a detailed description of this XML parser, please see the comments
|
||||||
|
in the "xml.lgt" source file or convert the automatically generated
|
||||||
|
documentation to HTML or PDF.
|
34
Logtalk/contributions/xml_parser/SCRIPT.txt
Normal file
34
Logtalk/contributions/xml_parser/SCRIPT.txt
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
=================================================================
|
||||||
|
Logtalk - Object oriented extension to Prolog
|
||||||
|
Release 2.29.1
|
||||||
|
|
||||||
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
|
=================================================================
|
||||||
|
|
||||||
|
|
||||||
|
% start by loading the necessary library support files (if not
|
||||||
|
% already loaded):
|
||||||
|
|
||||||
|
| ?- logtalk_load(library(types_loader)).
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
% now you are ready for loading the XML parser:
|
||||||
|
|
||||||
|
| ?- logtalk_load(xml_parser(loader)).
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
% let's try some examples (the goals generate XML files named qi.xml):
|
||||||
|
|
||||||
|
| ?- logtalk_load(xml_parser(examples)).
|
||||||
|
...
|
||||||
|
|
||||||
|
| ?- test(q1).
|
||||||
|
...
|
||||||
|
|
||||||
|
| ?- test(q2).
|
||||||
|
...
|
||||||
|
|
||||||
|
| ?- test(q12).
|
||||||
|
...
|
36
Logtalk/contributions/xml_parser/bib.xml
Normal file
36
Logtalk/contributions/xml_parser/bib.xml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<bib>
|
||||||
|
<book year="1994">
|
||||||
|
<title>TCP/IP Illustrated</title>
|
||||||
|
<author><last>Stevens</last><first>W.</first></author>
|
||||||
|
<publisher>Addison-Wesley</publisher>
|
||||||
|
<price> 65.95</price>
|
||||||
|
</book>
|
||||||
|
|
||||||
|
<book year="1992">
|
||||||
|
<title>Advanced Programming in the Unix environment</title>
|
||||||
|
<author><last>Stevens</last><first>W.</first></author>
|
||||||
|
<publisher>Addison-Wesley</publisher>
|
||||||
|
<price>65.95</price>
|
||||||
|
</book>
|
||||||
|
|
||||||
|
<book year="2000">
|
||||||
|
<title>Data on the Web</title>
|
||||||
|
<author><last>Abiteboul</last><first>Serge</first></author>
|
||||||
|
<author><last>Buneman</last><first>Peter</first></author>
|
||||||
|
<author><last>Suciu</last><first>Dan</first></author>
|
||||||
|
<publisher>Morgan Kaufmann Publishers</publisher>
|
||||||
|
<price>39.95</price>
|
||||||
|
</book>
|
||||||
|
|
||||||
|
<book year="1999">
|
||||||
|
<title>The Economics of Technology and Content for Digital TV</title>
|
||||||
|
<editor>
|
||||||
|
<last>Gerbarg</last><first>Darcy</first>
|
||||||
|
<affiliation>CITI</affiliation>
|
||||||
|
</editor>
|
||||||
|
<publisher>Kluwer Academic Publishers</publisher>
|
||||||
|
<price>129.95</price>
|
||||||
|
</book>
|
||||||
|
|
||||||
|
</bib>
|
||||||
|
|
15
Logtalk/contributions/xml_parser/books.xml
Normal file
15
Logtalk/contributions/xml_parser/books.xml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<chapter>
|
||||||
|
<title>Data Model</title>
|
||||||
|
<section>
|
||||||
|
<title>Syntax For Data Model</title>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>XML</title>
|
||||||
|
<section>
|
||||||
|
<title>Basic Syntax</title>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<title>XML and Semistructured Data</title>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
</chapter>
|
387
Logtalk/contributions/xml_parser/examples.lgt
Normal file
387
Logtalk/contributions/xml_parser/examples.lgt
Normal file
@ -0,0 +1,387 @@
|
|||||||
|
/* Using xml.pl to solve XML Query Cases - An Example
|
||||||
|
*
|
||||||
|
* The following is a complete example to illustrate how the module can be used;
|
||||||
|
* it exercises both the input and output parsing modes of xml::parse/[2,3], and
|
||||||
|
* illustrates the use of xml::subterm/2 to access the nodes of a "document value
|
||||||
|
* model". It's written for Quintus Prolog, but should port to other Prologs
|
||||||
|
* easily.
|
||||||
|
*
|
||||||
|
* The entry-point of the program is the test/1 predicate.
|
||||||
|
*
|
||||||
|
* test( +QueryId ) executes a Prolog implementation of a Query from Use Case
|
||||||
|
* "XMP": Experiences and Exemplars, in the W3C's XML Query Use Cases, which
|
||||||
|
* "contains several example queries that illustrate requirements gathered from
|
||||||
|
* the database and document communities".
|
||||||
|
* <http://www.w3.org/TR/2002/WD-xmlquery-use-cases-20021115/#xmp>
|
||||||
|
*
|
||||||
|
* QueryId is one of q1…q12 selecting which of the 12 use cases is executed.
|
||||||
|
* The XML output is written to the file [QueryId].xml in the current directory.
|
||||||
|
*
|
||||||
|
* xml::pp/1 is used to display the resulting "document value model"
|
||||||
|
% data-structures on the user output (stdout) stream.
|
||||||
|
*/
|
||||||
|
test( Query ) :-
|
||||||
|
xml_query( Query, ResultElement ),
|
||||||
|
% Parse output XML into the Output chars
|
||||||
|
xml::parse( Codes, xml([], [ResultElement]) ),
|
||||||
|
atom_concat( Query, '.xml', OutputFile ),
|
||||||
|
% Write OutputFile from the Output list of chars
|
||||||
|
open( OutputFile, write, Output ),
|
||||||
|
put_codes( Codes, Output ),
|
||||||
|
close( Output ),
|
||||||
|
% Pretty print OutputXML
|
||||||
|
write( 'Output XML' ), nl,
|
||||||
|
xml::pp( xml([], [ResultElement]) ).
|
||||||
|
|
||||||
|
/* xml_query( +QueryNo, ?OutputXML ) when OutputXML is an XML Document Value Model
|
||||||
|
* produced by running an example taken, identified by QueryNo from the XML Query
|
||||||
|
* "XMP" use case.
|
||||||
|
*/
|
||||||
|
|
||||||
|
% Q1: List books published by Addison-Wesley after 1991, including their year and
|
||||||
|
% title.
|
||||||
|
|
||||||
|
xml_query( q1, element(bib, [], Books) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Publisher, publisher ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(book, [year=Year], [Title]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, element(book, Attributes, Content) ),
|
||||||
|
xml::subterm( Content, Publisher ),
|
||||||
|
xml::subterm( Publisher, Text ),
|
||||||
|
text_value( Text, "Addison-Wesley" ),
|
||||||
|
list::member( year=Year, Attributes ),
|
||||||
|
number_codes( YearNo, Year ),
|
||||||
|
YearNo > 1991,
|
||||||
|
xml::subterm( Content, Title )
|
||||||
|
),
|
||||||
|
Books
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q2: Create a flat list of all the title-author pairs, with each pair enclosed
|
||||||
|
% in a "result" element.
|
||||||
|
|
||||||
|
xml_query( q2, element(results, [], Results) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(result, [], [Title,Author]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
xml::subterm( Book, Author )
|
||||||
|
),
|
||||||
|
Results
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q3: For each book in the bibliography, list the title and authors, grouped
|
||||||
|
% inside a "result" element.
|
||||||
|
|
||||||
|
xml_query( q3, element(results, [], Results) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(result, [], [Title|Authors]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
findall( Author, xml::subterm(Book, Author), Authors )
|
||||||
|
),
|
||||||
|
Results
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q4: For each author in the bibliography, list the author's name and the titles
|
||||||
|
% of all books by that author, grouped inside a "result" element.
|
||||||
|
|
||||||
|
xml_query( q4, element(results, [], Results) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall( Author, xml::subterm(Bibliography, Author), AuthorBag ),
|
||||||
|
sort( AuthorBag, Authors ),
|
||||||
|
findall(
|
||||||
|
element(result, [], [Author|Titles]),
|
||||||
|
(
|
||||||
|
list::member( Author, Authors ),
|
||||||
|
findall( Title, (
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Author ),
|
||||||
|
xml::subterm( Book, Title )
|
||||||
|
),
|
||||||
|
Titles
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Results
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q5: For each book found at both bn.com and amazon.com, list the title of the
|
||||||
|
% book and its price from each source.
|
||||||
|
|
||||||
|
xml_query( q5, element('books-with-prices', [], BooksWithPrices) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
element_name( Review, entry ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
input_document( 'reviews.xml', Reviews ),
|
||||||
|
findall(
|
||||||
|
element('book-with-prices', [], [
|
||||||
|
Title,
|
||||||
|
element('price-bn',[], BNPrice ),
|
||||||
|
element('price-amazon',[], AmazonPrice )
|
||||||
|
] ),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
xml::subterm( Reviews, Review ),
|
||||||
|
xml::subterm( Review, Title ),
|
||||||
|
xml::subterm( Book, element(price,_, BNPrice) ),
|
||||||
|
xml::subterm( Review, element(price,_, AmazonPrice) )
|
||||||
|
),
|
||||||
|
BooksWithPrices
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q6: For each book that has at least one author, list the title and first two
|
||||||
|
% authors, and an empty "et-al" element if the book has additional authors.
|
||||||
|
|
||||||
|
xml_query( q6, element(bib, [], Results) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(book, [], [Title,FirstAuthor|Authors]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
findall( Author, xml::subterm(Book, Author), [FirstAuthor|Others] ),
|
||||||
|
other_authors( Others, Authors )
|
||||||
|
),
|
||||||
|
Results
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q7: List the titles and years of all books published by Addison-Wesley after
|
||||||
|
% 1991, in alphabetic order.
|
||||||
|
|
||||||
|
xml_query( q7, element(bib, [], Books) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Publisher, publisher ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
Title-element(book, [year=Year], [Title]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, element(book, Attributes, Book) ),
|
||||||
|
xml::subterm( Book, Publisher ),
|
||||||
|
xml::subterm( Publisher, Text ),
|
||||||
|
text_value( Text, "Addison-Wesley" ),
|
||||||
|
list::member( year=Year, Attributes ),
|
||||||
|
number_codes( YearNo, Year ),
|
||||||
|
YearNo > 1991,
|
||||||
|
xml::subterm( Book, Title )
|
||||||
|
),
|
||||||
|
TitleBooks
|
||||||
|
),
|
||||||
|
keysort( TitleBooks, TitleBookSet ),
|
||||||
|
range( TitleBookSet, Books ).
|
||||||
|
|
||||||
|
% Q8: Find books in which the name of some element ends with the string "or" and
|
||||||
|
% the same element contains the string "Suciu" somewhere in its content. For each
|
||||||
|
% such book, return the title and the qualifying element.
|
||||||
|
|
||||||
|
xml_query( q8, element(bib, [], Books) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
element_name( QualifyingElement, QualifyingName ),
|
||||||
|
list::append( "Suciu", _Back, Suffix ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(book, [], [Title,QualifyingElement]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, QualifyingElement ),
|
||||||
|
atom_codes( QualifyingName, QNChars ),
|
||||||
|
list::append( _QNPrefix, "or", QNChars ),
|
||||||
|
xml::subterm( QualifyingElement, TextItem ),
|
||||||
|
text_value( TextItem, TextValue ),
|
||||||
|
list::append( _Prefix, Suffix, TextValue ),
|
||||||
|
xml::subterm( Book, Title )
|
||||||
|
),
|
||||||
|
Books
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q9: In the document "books.xml", find all section or chapter titles that
|
||||||
|
% contain the word "XML", regardless of the level of nesting.
|
||||||
|
|
||||||
|
xml_query( q9, element(results, [], Titles) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
list::append( "XML", _Back, Suffix ),
|
||||||
|
input_document( 'books.xml', Books ),
|
||||||
|
findall(
|
||||||
|
Title,
|
||||||
|
(
|
||||||
|
xml::subterm( Books, Title ),
|
||||||
|
xml::subterm( Title, TextItem ),
|
||||||
|
text_value( TextItem, TextValue ),
|
||||||
|
list::append( _Prefix, Suffix, TextValue )
|
||||||
|
),
|
||||||
|
Titles
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q10: In the document "prices.xml", find the minimum price for each book, in the
|
||||||
|
% form of a "minprice" element with the book title as its title attribute.
|
||||||
|
|
||||||
|
xml_query( q10, element(results, [], MinPrices) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Price, price ),
|
||||||
|
input_document( 'prices.xml', Prices ),
|
||||||
|
findall( Title, xml::subterm(Prices, Title), TitleBag ),
|
||||||
|
sort( TitleBag, TitleSet ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
findall(
|
||||||
|
element(minprice, [title=TitleString], [MinPrice]),
|
||||||
|
(
|
||||||
|
list::member( Title, TitleSet ),
|
||||||
|
xml::subterm( Title, TitleText ),
|
||||||
|
text_value( TitleText, TitleString ),
|
||||||
|
findall( PriceValue-Price, (
|
||||||
|
xml::subterm( Prices, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
xml::subterm( Book, Price ),
|
||||||
|
xml::subterm( Price, Text ),
|
||||||
|
text_value( Text, PriceChars ),
|
||||||
|
number_codes( PriceValue, PriceChars )
|
||||||
|
),
|
||||||
|
PriceValues
|
||||||
|
),
|
||||||
|
minimum( PriceValues, PriceValue-MinPrice )
|
||||||
|
),
|
||||||
|
MinPrices
|
||||||
|
).
|
||||||
|
|
||||||
|
% Q11: For each book with an author, return the book with its title and authors.
|
||||||
|
% For each book with an editor, return a reference with the book title and the
|
||||||
|
% editor's affiliation.
|
||||||
|
|
||||||
|
xml_query( q11, element(bib, [], Results) ) :-
|
||||||
|
element_name( Title, title ),
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book, book ),
|
||||||
|
element_name( Editor, editor ),
|
||||||
|
element_name( Affiliation, affiliation ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element(book, [], [Title,FirstAuthor|Authors]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
findall( Author, xml::subterm(Book, Author), [FirstAuthor|Authors] )
|
||||||
|
),
|
||||||
|
Books
|
||||||
|
),
|
||||||
|
findall(
|
||||||
|
element(reference, [], [Title,Affiliation]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book ),
|
||||||
|
xml::subterm( Book, Title ),
|
||||||
|
xml::subterm( Book, Editor ),
|
||||||
|
xml::subterm( Editor, Affiliation )
|
||||||
|
),
|
||||||
|
References
|
||||||
|
),
|
||||||
|
list::append( Books, References, Results ).
|
||||||
|
|
||||||
|
% Q12: Find pairs of books that have different titles but the same set of authors
|
||||||
|
% (possibly in a different order).
|
||||||
|
|
||||||
|
xml_query( q12, element(bib, [], Pairs) ) :-
|
||||||
|
element_name( Author, author ),
|
||||||
|
element_name( Book1, book ),
|
||||||
|
element_name( Book2, book ),
|
||||||
|
element_name( Title1, title ),
|
||||||
|
element_name( Title2, title ),
|
||||||
|
input_document( 'bib.xml', Bibliography ),
|
||||||
|
findall(
|
||||||
|
element('book-pair', [], [Title1,Title2]),
|
||||||
|
(
|
||||||
|
xml::subterm( Bibliography, Book1 ),
|
||||||
|
findall( Author, xml::subterm(Book1, Author), AuthorBag1 ),
|
||||||
|
sort( AuthorBag1, AuthorSet ),
|
||||||
|
xml::subterm( Bibliography, Book2 ),
|
||||||
|
Book2 @< Book1,
|
||||||
|
findall( Author, xml::subterm(Book2, Author), AuthorBag2 ),
|
||||||
|
sort( AuthorBag2, AuthorSet ),
|
||||||
|
xml::subterm( Book1, Title1 ),
|
||||||
|
xml::subterm( Book2, Title2 )
|
||||||
|
),
|
||||||
|
Pairs
|
||||||
|
).
|
||||||
|
|
||||||
|
% Auxilliary Predicates
|
||||||
|
|
||||||
|
other_authors( [], [] ).
|
||||||
|
other_authors( [Author|Authors], [Author|EtAl] ) :-
|
||||||
|
et_al( Authors, EtAl ).
|
||||||
|
|
||||||
|
et_al( [], [] ).
|
||||||
|
et_al( [_|_], [element('et-al',[],[])] ).
|
||||||
|
|
||||||
|
text_value( [pcdata(Text)], Text ).
|
||||||
|
text_value( [cdata(Text)], Text ).
|
||||||
|
|
||||||
|
element_name( element(Name, _Attributes, _Content), Name ).
|
||||||
|
|
||||||
|
|
||||||
|
/* range( +Pairs, ?Range ) when Pairs is a list of key-datum pairs and Range
|
||||||
|
* is the list of data.
|
||||||
|
*/
|
||||||
|
range( [], [] ).
|
||||||
|
range( [_Key-Datum|Pairs], [Datum|Data] ) :-
|
||||||
|
range( Pairs, Data ).
|
||||||
|
|
||||||
|
/* minimum( +List, ?Min ) is true if Min is the least member of List in the
|
||||||
|
* standard order.
|
||||||
|
*/
|
||||||
|
minimum( [H|T], Min ):-
|
||||||
|
minimum1( T, H, Min ).
|
||||||
|
|
||||||
|
minimum1( [], Min, Min ).
|
||||||
|
minimum1( [H|T], Min0, Min ) :-
|
||||||
|
compare( Relation, H, Min0 ),
|
||||||
|
minimum2( Relation, H, Min0, T, Min ).
|
||||||
|
|
||||||
|
minimum2( '=', Min0, Min0, T, Min ) :-
|
||||||
|
minimum1( T, Min0, Min ).
|
||||||
|
minimum2( '<', Min0, _Min1, T, Min ) :-
|
||||||
|
minimum1( T, Min0, Min ).
|
||||||
|
minimum2( '>', _Min0, Min1, T, Min ) :-
|
||||||
|
minimum1( T, Min1, Min ).
|
||||||
|
|
||||||
|
/* input_document( +File, ?XML ) reads File and parses the input into the
|
||||||
|
* "Document Value Model" XML.
|
||||||
|
*/
|
||||||
|
input_document( File, XML ) :-
|
||||||
|
% Read InputFile as a list of chars
|
||||||
|
open( File, read, Input ),
|
||||||
|
get_codes( Input, Codes ),
|
||||||
|
close( Input ),
|
||||||
|
% Parse the Input chars into the term XML
|
||||||
|
xml::parse( Codes, XML ).
|
||||||
|
|
||||||
|
|
||||||
|
put_codes( [], _ ).
|
||||||
|
put_codes( [Code|Codes], Output ) :-
|
||||||
|
put_code( Output, Code ),
|
||||||
|
put_codes( Codes, Output ).
|
||||||
|
|
||||||
|
|
||||||
|
get_codes( Input, [Code|Codes] ) :-
|
||||||
|
\+ at_end_of_stream( Input ),
|
||||||
|
get_code( Input, Code ),
|
||||||
|
get_codes( Input, Codes ).
|
||||||
|
get_codes( _, [] ).
|
13
Logtalk/contributions/xml_parser/loader.lgt
Normal file
13
Logtalk/contributions/xml_parser/loader.lgt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
:- initialization(
|
||||||
|
logtalk_load(xml)).
|
||||||
|
|
||||||
|
/*
|
||||||
|
If you intend to use the FOP XSL:FO processor for generating PDF documenting
|
||||||
|
files, comment the directive above and uncomment the directive below
|
||||||
|
|
||||||
|
:- initialization(
|
||||||
|
logtalk_load(
|
||||||
|
xml,
|
||||||
|
[xmlsref(standalone)])).
|
||||||
|
*/
|
32
Logtalk/contributions/xml_parser/prices.xml
Normal file
32
Logtalk/contributions/xml_parser/prices.xml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<prices>
|
||||||
|
<book>
|
||||||
|
<title>Advanced Programming in the Unix environment</title>
|
||||||
|
<source>www.amazon.com</source>
|
||||||
|
<price>65.95</price>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<title>Advanced Programming in the Unix environment</title>
|
||||||
|
<source>www.bn.com</source>
|
||||||
|
<price>65.95</price>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<title>TCP/IP Illustrated</title>
|
||||||
|
<source>www.amazon.com</source>
|
||||||
|
<price>65.95</price>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<title>TCP/IP Illustrated</title>
|
||||||
|
<source>www.bn.com</source>
|
||||||
|
<price>65.95</price>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<title>Data on the Web</title>
|
||||||
|
<source>www.amazon.com</source>
|
||||||
|
<price>34.95</price>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<title>Data on the Web</title>
|
||||||
|
<source>www.bn.com</source>
|
||||||
|
<price>39.95</price>
|
||||||
|
</book>
|
||||||
|
</prices>
|
25
Logtalk/contributions/xml_parser/reviews.xml
Normal file
25
Logtalk/contributions/xml_parser/reviews.xml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
<reviews>
|
||||||
|
<entry>
|
||||||
|
<title>Data on the Web</title>
|
||||||
|
<price>34.95</price>
|
||||||
|
<review>
|
||||||
|
A very good discussion of semi-structured database
|
||||||
|
systems and XML.
|
||||||
|
</review>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<title>Advanced Programming in the Unix environment</title>
|
||||||
|
<price>65.95</price>
|
||||||
|
<review>
|
||||||
|
A clear and detailed discussion of UNIX programming.
|
||||||
|
</review>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<title>TCP/IP Illustrated</title>
|
||||||
|
<price>65.95</price>
|
||||||
|
<review>
|
||||||
|
One of the best books on TCP/IP.
|
||||||
|
</review>
|
||||||
|
</entry>
|
||||||
|
</reviews>
|
2426
Logtalk/contributions/xml_parser/xml.lgt
Normal file
2426
Logtalk/contributions/xml_parser/xml.lgt
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -107,11 +107,11 @@
|
|||||||
|
|
||||||
|
|
||||||
:- object(stack_monitor,
|
:- object(stack_monitor,
|
||||||
implements(event_handlersp)).
|
implements(monitoring)).
|
||||||
|
|
||||||
:- info([
|
:- info([
|
||||||
version is 1.0,
|
version is 1.1,
|
||||||
date is 1998/3/23,
|
date is 2006/12/14,
|
||||||
author is 'Paulo Moura',
|
author is 'Paulo Moura',
|
||||||
comment is 'Monitor for brick movements printing an ascii representation of each brick position.']).
|
comment is 'Monitor for brick movements printing an ascii representation of each brick position.']).
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -112,22 +112,22 @@ yes
|
|||||||
|
|
||||||
% parsing URLs:
|
% parsing URLs:
|
||||||
|
|
||||||
| ?- url::parse("http://www.logtalk.org", Components).
|
| ?- url::parse("http://logtalk.org", Components).
|
||||||
|
|
||||||
Components = [protocol(http), address([www, logtalk, org]), path([]), file('')]
|
Components = [protocol(http), address([www, logtalk, org]), path([]), file('')]
|
||||||
yes
|
yes
|
||||||
|
|
||||||
| ?- url::parse("http://www.logtalk.org/", Components).
|
| ?- url::parse("http://logtalk.org/", Components).
|
||||||
|
|
||||||
Components = [protocol(http), address([www, logtalk, org]), path(['']), file('')]
|
Components = [protocol(http), address([www, logtalk, org]), path(['']), file('')]
|
||||||
yes
|
yes
|
||||||
|
|
||||||
| ?- url::parse("http://www.logtalk.org/cvs", Components).
|
| ?- url::parse("http://logtalk.org/cvs", Components).
|
||||||
|
|
||||||
Components = [protocol(http), address([www, logtalk, org]), path([cvs]), file('')]
|
Components = [protocol(http), address([www, logtalk, org]), path([cvs]), file('')]
|
||||||
yes
|
yes
|
||||||
|
|
||||||
| ?- url::parse("http://www.logtalk.org/cvs.html", Components).
|
| ?- url::parse("http://logtalk.org/cvs.html", Components).
|
||||||
|
|
||||||
Components = [protocol(http), address([www, logtalk, org]), path([]), file('cvs.html')]
|
Components = [protocol(http), address([www, logtalk, org]), path([]), file('cvs.html')]
|
||||||
yes
|
yes
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
% singleton variables in predicate clause
|
% singleton variables in predicate clause
|
||||||
predicate(A) :-
|
predicate(A) :-
|
||||||
write(C).
|
write(C).
|
||||||
|
|
||||||
:- end_object.
|
:- end_object.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -89,7 +89,7 @@ no
|
|||||||
|
|
||||||
% another example: expert system rules:
|
% another example: expert system rules:
|
||||||
|
|
||||||
| rules::prove(weather(Wheather)).
|
| ?- rules::prove(weather(Wheather)).
|
||||||
|
|
||||||
Wheather = raining
|
Wheather = raining
|
||||||
yes
|
yes
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
:- public([weather/1, weekday/1, time/1, goto/1]).
|
:- public([weather/1, weekday/1, time/1, goto/1]).
|
||||||
:- dynamic([weather/1, weekday/1, time/1, goto/1]).
|
:- dynamic([weather/1, weekday/1, time/1, goto/1]).
|
||||||
|
|
||||||
|
:- dynamic(if/1).
|
||||||
|
|
||||||
:- op(200, fx, if).
|
:- op(200, fx, if).
|
||||||
:- op(100, xfx, then).
|
:- op(100, xfx, then).
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
@ -59,3 +59,30 @@ exit: sort([4,9],[4,9])
|
|||||||
Sorted = [1,2,3,4,9] ?
|
Sorted = [1,2,3,4,9] ?
|
||||||
|
|
||||||
yes
|
yes
|
||||||
|
|
||||||
|
|
||||||
|
% call the meta-predicate apply/2 directly:
|
||||||
|
|
||||||
|
| ?- meta::test_this.
|
||||||
|
|
||||||
|
1, meta
|
||||||
|
|
||||||
|
yes
|
||||||
|
|
||||||
|
|
||||||
|
% send an apply/2 message to self:
|
||||||
|
|
||||||
|
| ?- desc::test_self.
|
||||||
|
|
||||||
|
2, desc
|
||||||
|
|
||||||
|
yes
|
||||||
|
|
||||||
|
|
||||||
|
% send an apply/2 message from another object:
|
||||||
|
|
||||||
|
| ?- test::test_obj.
|
||||||
|
|
||||||
|
3, test
|
||||||
|
|
||||||
|
yes
|
||||||
|
56
Logtalk/examples/metapredicates/closures.lgt
Normal file
56
Logtalk/examples/metapredicates/closures.lgt
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
/* Logtalk meta-predicates accept not only goals but also closures
|
||||||
|
as meta-arguments as illustrated in this example
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
:- object(meta).
|
||||||
|
|
||||||
|
% the meta_predicate/1 directive below changes the interpretation of meta-calls on apply/2
|
||||||
|
% clauses; the integer argument ("1") implies that the first argument is a closure that will
|
||||||
|
% be used to construct a goal by appending exactly one additional argument
|
||||||
|
|
||||||
|
:- public(apply/2).
|
||||||
|
:- mode(apply(+callable, ?term), zero_or_more).
|
||||||
|
:- meta_predicate(apply(1, *)).
|
||||||
|
|
||||||
|
apply(Closure, Arg) :- % the Logtalk compiler verifies that any closure which is a
|
||||||
|
call(Closure, Arg). % meta-argument is used within a call/N method that honors the
|
||||||
|
% meta-predicate directive (in this case, apply(1, *) => call/2)
|
||||||
|
|
||||||
|
:- public(test_this/0). % simple predicate for testing calls to a local meta-predicate
|
||||||
|
|
||||||
|
test_this :-
|
||||||
|
apply(foo(X), Y),
|
||||||
|
write((X, Y)), nl.
|
||||||
|
|
||||||
|
foo(1, meta).
|
||||||
|
|
||||||
|
:- end_object.
|
||||||
|
|
||||||
|
|
||||||
|
:- object(desc,
|
||||||
|
extends(meta)).
|
||||||
|
|
||||||
|
:- public(test_self/0). % simple predicate for testing calls to a meta-predicate
|
||||||
|
% defined in an ancestor object
|
||||||
|
test_self :-
|
||||||
|
::apply(foo(X), Y),
|
||||||
|
write((X, Y)), nl.
|
||||||
|
|
||||||
|
foo(2, desc).
|
||||||
|
|
||||||
|
:- end_object.
|
||||||
|
|
||||||
|
|
||||||
|
:- object(test).
|
||||||
|
|
||||||
|
:- public(test_obj/0). % simple predicate for testing calls to a meta-predicate
|
||||||
|
% defined in another object
|
||||||
|
test_obj :-
|
||||||
|
meta::apply(foo(X), Y),
|
||||||
|
write((X, Y)), nl.
|
||||||
|
|
||||||
|
foo(3, test).
|
||||||
|
|
||||||
|
:- end_object.
|
@ -1,13 +1,15 @@
|
|||||||
|
|
||||||
:- initialization(
|
:- initialization(
|
||||||
logtalk_load(
|
logtalk_load([
|
||||||
[metapredicates])).
|
closures,
|
||||||
|
metapredicates])).
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If you intend to use the FOP XSL:FO processor for generating PDF documenting
|
If you intend to use the FOP XSL:FO processor for generating PDF documenting
|
||||||
files, comment the directive above and uncomment the directive below
|
files, comment the directive above and uncomment the directive below
|
||||||
|
|
||||||
:- initialization(
|
:- initialization(
|
||||||
logtalk_load(
|
logtalk_load([
|
||||||
[metapredicates], [xmlsref(standalone)])).
|
closures,
|
||||||
|
metapredicates], [xmlsref(standalone)])).
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
|
|
||||||
:- object(message_counter,
|
:- object(message_counter,
|
||||||
implements(event_handlersp),
|
implements(monitoring),
|
||||||
imports(monitor)).
|
imports(monitor)).
|
||||||
|
|
||||||
|
|
||||||
:- info([
|
:- info([
|
||||||
version is 1.0,
|
version is 1.1,
|
||||||
author is 'Paulo Moura',
|
author is 'Paulo Moura',
|
||||||
date is 1998/3/23,
|
date is 2006/12/14,
|
||||||
comment is 'Message counter monitor.']).
|
comment is 'Message counter monitor.']).
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
|
|
||||||
:- object(stop_watch,
|
:- object(stop_watch,
|
||||||
implements(event_handlersp),
|
implements(monitoring),
|
||||||
imports(monitor)).
|
imports(monitor)).
|
||||||
|
|
||||||
|
|
||||||
:- info([
|
:- info([
|
||||||
version is 1.0,
|
version is 1.1,
|
||||||
author is 'Paulo Moura',
|
author is 'Paulo Moura',
|
||||||
date is 1998/3/23,
|
date is 2006/12/14,
|
||||||
comment is 'Message executing time monitor.']).
|
comment is 'Message executing time monitor.']).
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
|
|
||||||
|
% we use a parametric object in order to give an interpretation to an
|
||||||
|
% object proxy arguments and to encapsulate relevant predicates:
|
||||||
|
|
||||||
:- object(circle(_Radius, _Color)).
|
:- object(circle(_Radius, _Color)).
|
||||||
|
|
||||||
:- public([
|
:- public([
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
=================================================================
|
=================================================================
|
||||||
Logtalk - Object oriented extension to Prolog
|
Logtalk - Object oriented extension to Prolog
|
||||||
Release 2.28.2
|
Release 2.29.1
|
||||||
|
|
||||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||||
=================================================================
|
=================================================================
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user