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 =============================*/
|
/* begin PL_unify_* functions =============================*/
|
||||||
extern X_API int PL_unify(term_t, term_t);
|
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_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_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_atom_nchars(term_t, size_t len, const char *);
|
||||||
extern X_API int PL_unify_float(term_t, double);
|
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_compound(term_t);
|
||||||
extern X_API int PL_is_float(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_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_integer(term_t);
|
||||||
extern X_API int PL_is_list(term_t);
|
extern X_API int PL_is_list(term_t);
|
||||||
extern X_API int PL_is_number(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 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_predicate(module_t, int, predicate_t, term_t);
|
||||||
extern X_API int PL_call(term_t, module_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_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_register_extensions(const PL_extension *);
|
||||||
extern X_API void PL_load_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 void PL_free(void *);
|
||||||
extern X_API int PL_eval_expression_to_int64_ex(term_t t, int64_t *val);
|
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 Sprintf(const char * fm,...);
|
||||||
extern X_API int Sdprintf(const char *,...);
|
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)) {
|
} else if (!IsPairTerm(t)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
Yap_PutInSlot(h,HeadOfTerm(t));
|
return
|
||||||
Yap_PutInSlot(tail,TailOfTerm(t));
|
Yap_unify(Yap_GetFromSlot(h),HeadOfTerm(t)) &&
|
||||||
return TRUE;
|
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)
|
/* 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));
|
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)
|
X_API int PL_is_atomic(term_t ts)
|
||||||
{
|
{
|
||||||
YAP_Term t = Yap_GetFromSlot(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);
|
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)
|
X_API void PL_load_extensions(const PL_extension *ptr)
|
||||||
{
|
{
|
||||||
/* ignore flags for now */
|
/* ignore flags for now */
|
||||||
|
|
Reference in New Issue