|Did you know ...||Search Documentation:|
|Porting from version 1 to version 2|
The easiest way of porting from
is to change the
#include "SWI-cpp.h" to
"SWI-cpp2.h" and look at the warning and error messages. Where
possible, version 2 keeps old interfaces with a "deprecated" flag if
there is a better way of doing things with version 2.
Here is a list of typical changes:
term_t, PlTerm_integer(i), PlTerm_float(v), or PlTerm_pointer(p).
wchar_tand replace them by
std::wstringif appropriate. For example,
cout << "Hello " << A1.as_string().c_str()() << endlcan be replaced by
cout << "Hello " << A1.as_string() << endl. In general,
std::stringis safer than
char*because the latter can potentially point to freed memory.
falsefrom a predicate for failure, you can do
throw PlFail(). This mechanism is also used by PlCheck(rc). Note that throwing an exception is significantly slower than returning
false, so performance-critical code should avoid PlCheck(rc).
SWI-Prologand throw a PlFail() exception to short-circuit execution and return failure (
false) to Prolog.
PlAtom::handlehas been replaced by
PlTerm::refhas been replaced by
PlFunctor::functorhas been replaced by
for unification has been deprecated, replaced by various
unify_XXX‘methods (PlTerm::unify_term(t2), PlTerm::unify_atom(a), etc.).
static_cast<char*>(t)is replaced by
static_cast<int32_t>(t)is replaced by
longbecause of problems porting between Unix and Windows platforms; instead, use