- Documentation
- Reference manual
- Packages
- A C++ interface to SWI-Prolog
- A C++ interface to SWI-Prolog
- Summary of changes between Versions 1 and 2
- A simple example
- Sample code
- Introduction
- The life of a PREDICATE
- Overview
- Examples
- Rationale for changes from version 1
- Porting from version 1 to version 2
- The class PlFail
- Overview of accessing and changing values
- The class PlRegister
- The class PlQuery
- The PREDICATE and PREDICATE_NONDET macros
- Exceptions
- Embedded applications
- Considerations
- Conclusions
- A C++ interface to SWI-Prolog
- A C++ interface to SWI-Prolog
1.18 Conclusions
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.7.2
- add_num/3
- 1.3
- arg/3
- 1.11.4
- as_string()
- as_wstring()
- assert
- 1.13.1
- at_halt/1
- 1.6.8.6
- atom_chars/2
- 1.6.6 1.11.8
- atom_or_string_as_string()
- atomic/1
- 1.11.5
- atomic_as_string()
- average/3
- 1.3 1.7.3
- between/3
- 1.3
- blob_data()
- call()
- can_unify/2
- 1.3 1.13.1
- cappend/3
- 1.3
- check_stream()
- close_my_blob/1
- 1.6.8.6 1.6.8.6 1.6.8.6
- create_my_blob/2
- 1.6.8.6
- data()
- duplicate()
- entry/1
- 1.11.10
- eq1/1
- 1.3
- eq2/2
- 1.3
- eq3/2
- 1.3
- erase()
- error/2
- 1.17.2
- fail/0
- 1.5
- find()
- functor/3
- 1.3
- happy/1
- 1.3
- hello/1
- 1.7.1
- int_info/2
- 1.3
- is_null()
- is_valid()
- likes/2
- 1.3
- load_foreign_library/1
- 1.14.3
- my_blob_properties/2
- 1.6.8.6
- my_file_close/1
- 1.6.8.8
- my_file_open/4
- 1.6.8.8
- name_arity()
- name_arity/3
- 1.3
- nify_term()
- not_null()
- open/3
- 1.15.1.2
- operator!=()
- operator<()
- operator<=()
- operator=()
- operator==()
- operator>()
- operator>=()
- print_message/2
- 1.15.1
- qsave_program/[1,2]
- 1.6.8.6
- range_cpp/3
- 1.3
- read/1
- 1.11.9
- register_atom()
- reset()
- reset_term_refs()
- size_tindex()
- square_roots/2
- 1.3
- term()
- throw/1
- 1.1 1.5
- unifiable/3
- 1.3
- unregister_atom()
- use_foreign_library/1
- 1.5
- word/1
- 1.13.1
- write()
- write/1
- 1.7.1 1.11.1
- write_list/1
- 1.3
- NAMED_PREDICATE()
- NAMED_PREDICATE_NONDET()
- P
- PlAtom!=()
- PlAtom()
- PlAtom==()
- PlAtomkey,ValueTypevalue()
- PlBlob::acquire()
- PlBlob::compare_fields()
- PlBlob::write_fields()
- PlBlob::PlBlob::load()
- PlBlob::PlBlob::pre_delete()
- PlBlob::PlBlob::save()
- PlCall()
- PlCheckFail()
- PlEx()
- PlFrame::close()
- PlFrame::discard()
- PlFrame::rewind()
- PlQuery
- 1.13
- PlQuery::cut()
- PlQuery::next_solution()
- PlRecord()
- PlRecord()
- PREDICATE()
- PREDICATE0()
- PREDICATE_NONDET()
- PlRewindOnFail()
- PlStream::release()
- 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::free_term_ref()
- PlTerm::free_term_ref_reset()
- 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_tail::append()
- PlTerm_tail::close()
- PlTerm_tail::next()
- PlTermScoped::get()
- PlTermScoped::release()
- PlTermScoped::reset()
- PlTermScoped::swap()
- PlTermScoped=()
- PlTerm::get_file_nameW()
- PlWrap()
- T
- plThrow()
- V
- template<ValueType,StoredValueType>AtomMap::AtomMap()