- 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)
- A C++ interface to SWI-Prolog (Version 2)
- A C++ interface to SWI-Prolog
2.19 Conclusions (version 2)
In this document, we presented a high-level interface to Prolog exploiting automatic type-conversion and exception-handling defined in C++.
Programming using this interface is much more natural and requires only little extra resources in terms of time and memory.
Especially the smooth integration between C++ and Prolog exceptions reduce the coding effort for type checking and reporting in foreign predicates.
Index
- ?
- add/3
- 1.3.2 2.5.2
- arg/3
- 1.4.5 2.9.6
- as_string()
- as_wstring()
- assert
- 1.8.1 2.14.1
- atom_chars/2
- 1.2 1.4.9 2.4.2 2.9.10
- average/3
- 1.3.3 2.5.3
- blob_data()
- entry/1
- 1.4.11 2.9.12
- error/2
- 2.18.2
- fail/0
- 2.3
- hello/1
- 1.3.1 2.5.1
- is_acyclic()
- is_atom()
- is_atomic()
- is_callable()
- is_compound()
- is_dict()
- is_float()
- is_functor()
- is_ground()
- is_integer()
- is_list()
- is_null()
- is_number()
- is_pair()
- is_rational()
- is_string()
- is_valid()
- is_variable()
- load_foreign_library/1
- 1.9.2 2.15.3
- not_null()
- open/3
- 1.10.3 2.16.3
- print_message/2
- 1.10.1 2.16.1
- read/1
- 1.4.10 2.9.11
- register_atom()
- reset()
- throw/1
- 2.3
- type()
- unregister_atom()
- use_foreign_library/1
- 2.3
- word/1
- 1.8.1 2.14.1
- write/1
- 1.3.1 1.4.2 2.5.1 2.9.3
- NAMED_PREDICATE()
- NAMED_PREDICATE_NONDET()
- P
- PlAtom
- 1.4.3 1.6
- PlAtom!=()
- PlAtom==()
- PlCall()
- PlCompound
- 1.4.5
- PlDomainError
- 1.10
- PlEngine
- 1.11
- PlException
- 1.2 1.2 1.2 1.2 1.10 1.10 1.10 1.10.1 1.10.1 1.10.1
- PlFrame
- 1.8.1 1.8.1 1.8.1 1.8.1 1.8.1 1.12.1
- PlFrame::rewind()
- PlQuery
- 1.3.3 1.5 1.8
- PlQuery::cut()()
- PlQuery::next_solution()
- PlRegister
- 1.9
- PREDICATE0()
- PREDICATE_NONDET()
- PlTail
- 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11 1.4.11
- PlTail::append()
- PlTail::close()
- PlTail::next()
- PlTerm
- 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.3.1 1.3.1 1.3.2 1.3.2 1.4 1.4.1 1.4.2 1.4.2 1.4.3 1.4.4 1.4.4 1.4.4 1.4.5 1.4.5 1.4.5 1.4.6 1.10 1.10.1 1.12.1
- PlTerm!=()
- PlTerm::arity()
- PlTerm::compare()
- PlTerm::name()
- PlTerm::type()
- PlTerm::unify_atom()
- PlTerm::unify_blob()
- PlTerm::unify_chars()
- PlTerm::unify_float()
- PlTerm::unify_functor()
- PlTerm::unify_integer()
- PlTerm::unify_list_chars()
- PlTerm::unify_list_codes()
- PlTerm::unify_nil()
- PlTerm::unify_pointer()
- PlTerm::unify_string()
- PlTerm::unify_term()
- PlTerm<()
- PlTerm<=()
- PlTerm=()
- PlTerm==()
- PlTerm>()
- PlTerm>=()
- PlTerm[]()
- PlTermv
- 1.2 1.4.10 1.5 1.9
- PlTypeEror
- 1.10 1.10.1
- T
- cppThrow()
- plThrow()