The list below summarises the classes defined in the C++ interface.
term_t
(for more details on
term_t
, see
Interface
Data Types). This is a "base class" whose constructor is protected;
subclasses specify the actual contents. Additional methods allow
checking the Prolog type, unification, comparison, conversion to native
C++-data types, etc. See section
2.10.3.
The subclass constructors are as follows. If a constructor fails
(e.g., out of memory), a PlException
is thrown.
PlTerm
with constructors for building a term
that contains an atom.PlTerm
with constructors for building a term
that contains an uninstantiated variable. Typically this term is then
unified with another object.PlTerm
with constructors for building a term
from a C term_t
.PlTerm
with constructors for building a term
that contains a Prolog integer from a
long
.8PL_put_integer()
takes a long
argument.PlTerm
with constructors for building a term
that contains a Prolog integer from a int64_t
.PlTerm
with constructors for building a term
that contains a Prolog integer from a uint64_t
.PlTerm
with constructors for building a term
that contains a Prolog integer from a size_t
.PlTerm
with constructors for building a term
that contains a Prolog float.PlTerm
with constructors for building a term
that contains a raw pointer. This is mainly for backwards compatibility;
new code should use blobs.PlTerm
with constructors for building a term
that contains a Prolog string object.PlTerm
with constructors for building Prolog
lists of character integer values.PlTerm
with constructors for building Prolog
lists of one-character atoms (as atom_chars/2).PlTerm
for building and analysing Prolog lists.
Additional subclasses of PlTerm
are:
PlTerm
with constructors for building compound
terms. If there is a single string argument, then PL_chars_to_term()
or PL_wchars_to_term() is used to parse the string and create the
term. If the constructor has two arguments, the first is name of a
functor and the second is a PlTermv
with the arguments.[]
operator is overloaded to access elements in this vector. PlTermv
is used to build complex terms and provide argument-lists to Prolog
goals.PlExceptionBase
, representing a Prolog
exception. Provides methods for the Prolog communication and mapping to
human-readable text representation.
PlException
object for representing a Prolog
type_error
exception.PlException
object for representing a Prolog
domain_error
exception.PlException
object for representing a Prolog
existence_error
exception.PlException
object for representing a Prolog
permission_error
exception.std::exception
, to allow
catching
PlException
, PlExceptionFail
or PlFail
in a single "catch" clause.atom_t
) in their internal
Prolog representation for fast comparison. (For more details on
atom_t
, see
Interface
Data Types).functor_t
, which maps to the internal
representation of a name/arity pair.predicate_t
, which maps to the internal
representation of a Prolog predicate.module_t
, which maps to the internal
representation of a Prolog module.return false
instead
if failure is expected. An error can be signaled by calling
Plx_raise_exception() or one of the PL_*_error() functions and then
throwing PlFail
; but it's better style to create the error
throwing one of the subclasses of PlException
e.g.,
throw PlTypeError("int", t)
.PlException
object and throws it. If the
enclosing code doesn't intercept the exception, the PlException
object is turned back into a Prolog error when control returns to Prolog
from the PREDICATE() macros.PlException
object, so a PlExceptionFail
object is thrown. This is turned into failure by the PREDICATE() macro,
resulting in normal Prolog error handling.