add missing interface functions.
This commit is contained in:
parent
c8ee7259d7
commit
0d38d67dfa
|
@ -368,6 +368,7 @@ extern X_API int PL_compare(term_t, term_t);
|
|||
/* begin PL_unify_* functions =============================*/
|
||||
extern X_API int PL_unify(term_t, term_t);
|
||||
extern X_API int PL_unify_atom(term_t, atom_t);
|
||||
extern X_API int PL_unify_arg(int, term_t, atom_t);
|
||||
extern X_API int PL_unify_atom_chars(term_t, const char *);
|
||||
extern X_API int PL_unify_atom_nchars(term_t, size_t len, const char *);
|
||||
extern X_API int PL_unify_float(term_t, double);
|
||||
|
@ -391,6 +392,7 @@ extern X_API int PL_is_atomic(term_t);
|
|||
extern X_API int PL_is_compound(term_t);
|
||||
extern X_API int PL_is_float(term_t);
|
||||
extern X_API int PL_is_functor(term_t, functor_t);
|
||||
extern X_API int PL_is_ground(term_t);
|
||||
extern X_API int PL_is_integer(term_t);
|
||||
extern X_API int PL_is_list(term_t);
|
||||
extern X_API int PL_is_number(term_t);
|
||||
|
@ -420,6 +422,7 @@ extern X_API int PL_toplevel(void);
|
|||
extern X_API term_t PL_exception(qid_t);
|
||||
extern X_API int PL_call_predicate(module_t, int, predicate_t, term_t);
|
||||
extern X_API int PL_call(term_t, module_t);
|
||||
extern X_API void PL_register_foreign(const char *, int, foreign_t (*)(void), int);
|
||||
extern X_API void PL_register_foreign_in_module(const char *, const char *, int, foreign_t (*)(void), int);
|
||||
extern X_API void PL_register_extensions(const PL_extension *);
|
||||
extern X_API void PL_load_extensions(const PL_extension *);
|
||||
|
@ -441,8 +444,6 @@ extern X_API void *PL_realloc(void*,int);
|
|||
extern X_API void PL_free(void *);
|
||||
extern X_API int PL_eval_expression_to_int64_ex(term_t t, int64_t *val);
|
||||
|
||||
#define PL_register_foreign(name, arity, function, flags) PL_register_foreign_in_module(NULL, (name), (arity), (function), (flags))
|
||||
|
||||
extern X_API int Sprintf(const char * fm,...);
|
||||
extern X_API int Sdprintf(const char *,...);
|
||||
|
||||
|
|
|
@ -1327,9 +1327,36 @@ X_API int PL_unify_list(term_t tt, term_t h, term_t tail)
|
|||
} else if (!IsPairTerm(t)) {
|
||||
return FALSE;
|
||||
}
|
||||
Yap_PutInSlot(h,HeadOfTerm(t));
|
||||
Yap_PutInSlot(tail,TailOfTerm(t));
|
||||
return TRUE;
|
||||
return
|
||||
Yap_unify(Yap_GetFromSlot(h),HeadOfTerm(t)) &&
|
||||
Yap_unify(Yap_GetFromSlot(tail),TailOfTerm(t));
|
||||
}
|
||||
|
||||
/* SWI: int PL_unify_list(term_t ?t, term_t +h, term_t -t)
|
||||
YAP long int unify(YAP_Term* a, Term* b) */
|
||||
X_API int PL_unify_arg(int index, term_t tt, term_t arg)
|
||||
{
|
||||
Term t = Deref(Yap_GetFromSlot(tt)), to;
|
||||
if (index < 0)
|
||||
return FALSE;
|
||||
if (IsVarTerm(t) || IsAtomOrIntTerm(t)) {
|
||||
return FALSE;
|
||||
} else if (IsPairTerm(t)) {
|
||||
if (index == 1)
|
||||
to = HeadOfTerm(t);
|
||||
else if (index == 2)
|
||||
to = TailOfTerm(t);
|
||||
else
|
||||
return FALSE;
|
||||
} else {
|
||||
Functor f = FunctorOfTerm(t);
|
||||
if (IsExtensionFunctor(f))
|
||||
return FALSE;
|
||||
if (index > ArityOfFunctor(f))
|
||||
return FALSE;
|
||||
to = ArgOfTerm(index, t);
|
||||
}
|
||||
return Yap_unify(Yap_GetFromSlot(t),to);
|
||||
}
|
||||
|
||||
/* SWI: int PL_unify_list(term_t ?t, term_t +h, term_t -t)
|
||||
|
@ -1706,6 +1733,11 @@ X_API int PL_is_atom(term_t t)
|
|||
return IsAtomTerm(Yap_GetFromSlot(t));
|
||||
}
|
||||
|
||||
X_API int PL_is_ground(term_t t)
|
||||
{
|
||||
return Yap_IsGroundTerm(Yap_GetFromSlot(t));
|
||||
}
|
||||
|
||||
X_API int PL_is_atomic(term_t ts)
|
||||
{
|
||||
YAP_Term t = Yap_GetFromSlot(ts);
|
||||
|
@ -2110,6 +2142,11 @@ X_API void PL_register_extensions(const PL_extension *ptr)
|
|||
PL_load_extensions(ptr);
|
||||
}
|
||||
|
||||
X_API void PL_register_foreign(const char *name, int arity, foreign_t (*function)(void), int flags)
|
||||
{
|
||||
PL_register_foreign_in_module(NULL, name, arity, function, flags);
|
||||
}
|
||||
|
||||
X_API void PL_load_extensions(const PL_extension *ptr)
|
||||
{
|
||||
/* ignore flags for now */
|
||||
|
|
Reference in New Issue