2 A C++ interface to SWI-Prolog (Version 2)
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • A C++ interface to SWI-Prolog
        • A C++ interface to SWI-Prolog (Version 2)
          • Summary of changes between Versions 1 and 2
          • Introduction (version 2)
          • The life of a PREDICATE (version 2)
          • Overview (version 2)
          • Examples (version 2)
          • Rational for changes from version 1 (version 2)
          • Porting from version 1 to version 2
          • The class PlFail (version 2)
          • The class PlTerm (version 2)
          • The class PlTermv (version 2)
          • The class PlAtom - Supporting Prolog constants (version 2)
          • Unification and foreign frames (version 2)
          • The class PlRegister (version 2)
          • The class PlQuery (version 2)
          • The PREDICATE and PREDICATE_NONDET macros (version 2)
          • Exceptions (version 2)
          • Embedded applications (version 2)
          • Considerations (version 2)
          • Conclusions (version 2)

2.10 The class PlTermv (version 2)

The class PlTermv represents an array of term-references. This type is used to pass the arguments to a foreignly defined predicate, construct compound terms (see PlTerm::PlTerm(const char *name, PlTermv arguments)) and to create queries (see PlQuery).

The only useful member function is the overloading of [], providing (0-based) access to the elements. Range checking is performed and raises a domain_error exception.

The constructors for this class are below.

PlTermv :: PlTermv(int size)
Create a new array of term-references, all holding variables.
PlTermv :: PlTermv(int size, term_t t0)
Convert a C-interface defined term-array into an instance.
PlTermv :: PlTermv(PlTerm ...)
Create a vector from 1 to 5 initialising arguments. For example:
load_file(const char *file)
{ return PlCall("compile", PlTermv(file));
}

If the vector has to contain more than 5 elements, the following construction should be used:

{ PlTermv av(10);

  av[0] = "hello";
  ...
}