- 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
- Sample code (version 2)
- Introduction (version 2)
- The life of a PREDICATE (version 2)
- Overview (version 2)
- Examples (version 2)
- Rationale 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)
- Classes for the recorded database: PlRecord and PlRecordExternalCopy
- 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.21 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.6.2
- arg/3
- 1.4.5 2.10.6
- as_string()
- as_wstring()
- assert
- 1.8.1 2.16.1
- at_halt/1
- 2.5.6.5
- atom_chars/2
- 1.2 1.4.9 2.5.3 2.10.10
- average/3
- 1.3.3 2.2 2.6.3
- between/3
- 2.2
- blob_data()
- can_unify/2
- 2.2
- cappend/3
- 2.2
- close_my_blob/1
- 2.5.6.5 2.5.6.5 2.5.6.5
- create_my_blob/2
- 2.5.6.5
- duplicate()
- entry/1
- 1.4.11 2.10.12
- eq1/1
- 2.2
- eq2/2
- 2.2
- eq3/2
- 2.2
- erase()
- error/2
- 2.20.2
- fail/0
- 2.4
- find()
- functor/3
- 2.2
- happy/1
- 2.2
- hello/1
- 1.3.1 2.6.1
- int_info/2
- 2.2
- 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()
- likes/2
- 2.2
- load_foreign_library/1
- 1.9.2 2.17.3
- my_blob_properties/2
- 2.5.6.5
- name_arity/3
- 2.2
- not_null()
- open/3
- 1.10.3 2.18.3
- print_message/2
- 1.10.1 2.18.1
- range_cpp/3
- 2.2
- read/1
- 1.4.10 2.10.11
- register_atom()
- reset()
- square_roots/2
- 2.2
- term()
- throw/1
- 2.1 2.4
- type()
- unifiable/3
- 2.2
- unregister_atom()
- use_foreign_library/1
- 2.4
- word/1
- 1.8.1 2.16.1
- write/1
- 1.3.1 1.4.2 2.6.1 2.10.3
- write_list/1
- 2.2
- NAMED_PREDICATE()
- NAMED_PREDICATE_NONDET()
- P
- PlAtom
- 1.4.3 1.6
- PlAtom!=()
- PlAtom()
- PlAtom==()
- PlAtomkey,ValueTypevalue()
- PlCall()
- PlCompound
- 1.4.5
- PlDomainError
- 1.10
- PlDomainError()
- 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
- PlExistenceError()
- PlFrame
- 1.8.1 1.8.1 1.8.1 1.8.1 1.8.1 1.12.1
- PlFrame::rewind()
- PlPermissionError()
- PlQuery
- 1.3.3 1.5 1.8
- PlQuery::cut()()
- PlQuery::next_solution()
- PlRecord()
- PlRegister
- 1.9
- PlRecord()
- PlRecordExternalCopy()
- 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
- PlTypeError()
- T
- cppThrow()
- plThrow()
- V
- template<ValueType,StoredValueType>AtomMap::AtomMap()