= is defined for the Types PlTerm,
long, double, char *, wchar_t*
and
PlAtom. It performs Prolog
unification and returns TRUE if successful and FALSE
otherwise.
The boolean return-value leads to somewhat unconventional-looking code as normally, assignment returns the value assigned in C. Unification however is fundamentally different to assignment as it can succeed or fail. Here is a common example.
PREDICATE(hostname, 1)
{ char buf[32];
if ( gethostname(buf, sizeof(buf)) == 0 )
return A1 = buf;
return FALSE;
}