- 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)
- Overview of accessing and changing values (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.17 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
- add_num/3
- 2.2
- arg/3
- 1.4.5 2.10.4
- as_string()
- as_wstring()
- assert
- 1.8.1 2.12.1
- at_halt/1
- 2.5.7.6
- atom_chars/2
- 1.2 1.4.9 2.5.6 2.10.8
- atom_or_string_as_string()
- atomic/1
- 2.10.5
- atomic_as_string()
- average/3
- 1.3.3 2.2 2.6.3
- between/3
- 2.2
- blob_data()
- call()
- can_unify/2
- 2.2 2.12.1
- cappend/3
- 2.2
- close_my_blob/1
- 2.5.7.6 2.5.7.6 2.5.7.6
- create_my_blob/2
- 2.5.7.6
- duplicate()
- entry/1
- 1.4.11 2.10.10
- eq1/1
- 2.2
- eq2/2
- 2.2
- eq3/2
- 2.2
- erase()
- error/2
- 2.16.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_null()
- is_valid()
- likes/2
- 2.2
- load_foreign_library/1
- 1.9.2 2.13.3
- my_blob_properties/2
- 2.5.7.6
- name_arity()
- name_arity/3
- 2.2
- nify_term()
- not_null()
- open/3
- 1.10.3 2.14.1.2
- operator!=()
- operator<()
- operator<=()
- operator==()
- operator>()
- operator>=()
- print_message/2
- 1.10.1 2.14.1
- qsave_program/[1,2]
- 2.5.7.6
- range_cpp/3
- 2.2
- read/1
- 1.4.10 2.10.9
- register_atom()
- reset()
- reset_term_refs()
- size_tindex()
- square_roots/2
- 2.2
- term()
- throw/1
- 2.1 2.4
- unifiable/3
- 2.2
- unregister_atom()
- use_foreign_library/1
- 2.4
- word/1
- 1.8.1 2.12.1
- write()
- write/1
- 1.3.1 1.4.2 2.6.1 2.10.1
- write_list/1
- 2.2
- NAMED_PREDICATE()
- NAMED_PREDICATE_NONDET()
- P
- PlAtom
- 1.4.3 1.6
- PlAtom!=()
- PlAtom()
- PlAtom==()
- PlAtomkey,ValueTypevalue()
- PlBlob::acquire()
- PlBlob::compare_fields()
- PlBlob::write_fields()
- PlBlob::PlBlob::load()
- PlBlob::PlBlob::pre_delete()
- PlBlob::PlBlob::save()
- PlCall()
- PlCompound
- 1.4.5
- PlCheckFail()
- PlDomainError
- 1.10
- PlEngine
- 1.11
- PlEx()
- 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::close()
- PlFrame::discard()
- PlFrame::rewind()
- PlQuery
- 1.3.3 1.5 1.8
- PlQuery::cut()
- PlQuery::next_solution()
- PlRecord()
- PlRegister
- 1.9
- PlRecord()
- PlRecordExternalCopy()
- PREDICATE()
- PREDICATE0()
- PREDICATE_NONDET()
- PlRewindOnFail()
- PlStream::release()
- 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::as_atom()
- PlTerm::as_bool()
- PlTerm::as_double()
- PlTerm::as_float()
- PlTerm::as_int()
- PlTerm::as_int32_t()
- PlTerm::as_int64_t()
- PlTerm::as_long()
- PlTerm::as_nil()
- PlTerm::as_pointer()
- PlTerm::as_size_t()
- PlTerm::as_string()
- PlTerm::as_uint()
- PlTerm::as_uint32_t()
- PlTerm::as_uint64_t()
- PlTerm::as_ulong()
- PlTerm::as_wstring()
- PlTerm::call()
- PlTerm::compare()
- PlTerm::copy_term_ref()
- PlTerm::eq_if_atom()
- PlTerm::get_arg()
- PlTerm::get_atom()
- PlTerm::get_atom_ex()
- PlTerm::get_atom_nchars()
- PlTerm::get_attr()
- PlTerm::get_blob()
- PlTerm::get_bool()
- PlTerm::get_bool_ex()
- PlTerm::get_char_ex()
- PlTerm::get_chars()
- PlTerm::get_compound_name_arity()
- PlTerm::get_dict_key()
- PlTerm::get_file_name()
- PlTerm::get_float()
- PlTerm::get_float_ex()
- PlTerm::get_functor()
- PlTerm::get_head()
- PlTerm::get_int64_ex()
- PlTerm::get_integer()
- PlTerm::get_integer_ex()
- PlTerm::get_intptr()
- PlTerm::get_intptr_ex()
- PlTerm::get_list()
- PlTerm::get_list_chars()
- PlTerm::get_list_ex()
- PlTerm::get_list_nchars()
- PlTerm::get_long()
- PlTerm::get_long_ex()
- PlTerm::get_module()
- PlTerm::get_name_arity()
- PlTerm::get_nchars()
- PlTerm::get_nil()
- PlTerm::get_nil_ex()
- PlTerm::get_pointer()
- PlTerm::get_pointer_ex()
- PlTerm::get_size_ex()
- PlTerm::get_tail()
- PlTerm::get_uint64_ex()
- PlTerm::get_wchars()
- PlTerm::integer()
- PlTerm::is_acyclic()
- PlTerm::is_atom()
- PlTerm::is_atom_or_string()
- PlTerm::is_atomic()
- PlTerm::is_attvar()
- PlTerm::is_blob()
- PlTerm::is_callable()
- PlTerm::is_compound()
- PlTerm::is_dict()
- PlTerm::is_float()
- PlTerm::is_functor()
- PlTerm::is_ground()
- PlTerm::is_integer()
- PlTerm::is_list()
- PlTerm::is_number()
- PlTerm::is_pair()
- PlTerm::is_rational()
- PlTerm::is_string()
- PlTerm::is_variable()
- PlTerm::must_be_acyclic()
- PlTerm::must_be_atom()
- PlTerm::must_be_atom_or_string()
- PlTerm::must_be_atomic()
- PlTerm::must_be_attvar()
- PlTerm::must_be_callable()
- PlTerm::must_be_compound()
- PlTerm::must_be_dict()
- PlTerm::must_be_float()
- PlTerm::must_be_ground()
- PlTerm::must_be_integer()
- PlTerm::must_be_list()
- PlTerm::must_be_number()
- PlTerm::must_be_pair()
- PlTerm::must_be_rational()
- PlTerm::must_be_string()
- PlTerm::must_be_variable()
- PlTerm::name()
- PlTerm::put_atom()
- PlTerm::put_atom_chars()
- PlTerm::put_atom_nchars()
- PlTerm::put_blob()
- PlTerm::put_bool()
- PlTerm::put_chars()
- PlTerm::put_float()
- PlTerm::put_functor()
- PlTerm::put_integer()
- PlTerm::put_list()
- PlTerm::put_list_chars()
- PlTerm::put_list_codes()
- PlTerm::put_list_nchars()
- PlTerm::put_list_ncodes()
- PlTerm::put_nil()
- PlTerm::put_pointer()
- PlTerm::put_string_chars()
- PlTerm::put_string_nchars()
- PlTerm::put_term()
- PlTerm::put_variable()
- PlTerm::record()
- PlTerm::type()
- PlTerm::unify_atom()
- PlTerm::unify_blob()
- PlTerm::unify_bool()
- PlTerm::unify_bool_ex()
- PlTerm::unify_chars()
- PlTerm::unify_float()
- PlTerm::unify_functor()
- PlTerm::unify_integer()
- PlTerm::unify_list()
- PlTerm::unify_list_chars()
- PlTerm::unify_list_codes()
- PlTerm::unify_list_ex()
- PlTerm::unify_nil()
- PlTerm::unify_nil_ex()
- 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
- PlTerm::get_file_nameW()
- PlWrap()
- T
- cppThrow()
- plThrow()
- V
- template<ValueType,StoredValueType>AtomMap::AtomMap()