• Places
    • Home
    • Graphs
    • Prefixes
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • CPACK
    • Home
    • List packs
    • Submit pack
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
    • SWISH Prolog shell
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

1.11 Overview of accessing and changing values
All Application Manual Name SummaryHelp

  • Documentation
    • Reference manual
    • Packages
      • A C++ interface to SWI-Prolog
        • A C++ interface to SWI-Prolog
          • Overview of accessing and changing values
            • Converting PlTerm to native C and C++ types
            • Unification
            • Comparison
            • Analysing compound terms
            • Miscellaneous
            • The class PlTerm_string
            • The class PlCodeList
            • The class PlCharList
            • The class PlCompound
            • The class PlTerm_tail
            • The class PlTermv
            • The class PlAtom - Supporting Prolog constants
            • Classes for the recorded database: PlRecord and PlRecordExternalCopy

1.11.1 Converting PlTerm to native C and C++ types

These are deprecated and replaced by the various as_*() methods.

PlTerm can be converted to the following types:

PlTerm ::operator term_t(void)
This cast is used for integration with the C-interface primitives.
PlTerm ::operator long(void)
Yields a long if the PlTerm is a Prolog integer or float that can be converted without loss to a long. Throws a type_error exception otherwise.
PlTerm ::operator int(void)
Same as for long, but might represent fewer bits.
PlTerm ::operator double(void)
Yields the value as a C double if PlTerm represents a Prolog integer or float.
PlTerm ::operator wchar_t *(void)
PlTerm ::operator char *(void)
Converts the Prolog argument using PL_get_chars() using the flags CVT_ALL|CVT_WRITE|BUF_RING, which implies Prolog atoms and strings are converted to the represented text. All other data is handed to write/1. If the text is static in Prolog, a direct pointer to the string is returned. Otherwise the text is saved in a ring of 16 buffers and must be copied to avoid overwriting.
PlTerm ::operator void *(void)
Extracts pointer value from a term. The term should have been created by PlTerm::PlTerm(void*).

In addition, the Prolog type (PL_VARIABLE, PL_ATOM, ... PL_DICT) can be determined using the type() method. There are also boolean methods that check the type:

int PlTerm::type()
See PL_term_type()
bool PlTerm::is_variable()
See PL_is_variable()
bool PlTerm::is_ground()
See PL_is_ground()
bool PlTerm::is_atom(S)
ee PL_is_atom()
bool PlTerm::is_integer(S)
ee PL_is_integer()
bool PlTerm::is_string(S)
ee PL_is_string()
bool PlTerm::is_atom_or_string(I)
s true if either PlTerm::is_atom() or PlTerm::is_string() is true.
bool PlTerm::is_float(S)
ee PL_is_float()
bool PlTerm::is_rational(S)
ee PL_is_rational()
bool PlTerm::is_compound(S)
ee PL_is_compound()
bool PlTerm::is_callable(S)
ee PL_is_callable()
bool PlTerm::is_list(S)
ee PL_is_list()
bool PlTerm::is_dict(S)
ee PL_is_dict()
bool PlTerm::is_pair(S)
ee PL_is_pair()
bool PlTerm::is_atomic(S)
ee PL_is_atomic()
bool PlTerm::is_number(S)
ee PL_is_number()
bool PlTerm::is_acyclic(S)
ee PL_is_acyclic()
bool PlTerm::is_functor(PlFunctor)
See PL_is_functor()

ClioPatria (version V3.1.1-51-ga0b30a5)