Not all functionality of the C-interface is provided, but as
PlTerm
and term_t
are essentially the same
thing with type-conversion between the two (using the unwrap()
method), this interface can be freely mixed with the functions defined
for plain C. For checking return codes from C functions, it is
recommended to use PlCheckFail()
or PlCheck_PL().
Using this interface rather than the plain C-interface requires a
little more resources. More term-references are wasted (but reclaimed on
return to Prolog or using PlFrame
). Use of some
intermediate types (functor_t
etc.) is not supported in the
current interface, causing more hash-table lookups. This could be fixed,
at the price of slighly complicating the interface.
Global terms and atoms need to be handled slightly differently in C++ than in C - see section 1.17.3