QP_is_*() #include <quintus/quintus.h>
int QP_is_variable(term)
QP_term_ref term;
int QP_is_atom(term)
QP_term_ref term;
int QP_is_integer(term)
QP_term_ref term;
int QP_is_float(term)
QP_term_ref term;
int QP_is_compound(term)
QP_term_ref term;
int QP_is_list(term)
QP_term_ref term;
int QP_is_db_reference(term)
QP_term_ref term;
int QP_is_atomic(term)
QP_term_ref term;
int QP_is_number(term)
QP_term_ref term;
These C functions and macros can be used to test the type of the Prolog terms passed to C through the foreign interface.
QP_is_variable()
QP_is_atom()
QP_is_integer()
QP_is_float()
QP_is_compound()
QP_is_list()
QP_is_db_reference()
QP_is_atomic()
QP_is_number()
print_type() is a C function that prints the type of
the Prolog term passed to it.
foo.pl
foreign(print_type, c, print_type(+term)).
foo.c
#include <quintus/quintus.h>
void print_type(term)
QP_term_ref term;
{
if (QP_is_atom(term)) {
QP_printf("Term is an atom\n");
} else if (QP_is_integer(term)) {
QP_printf("Term is an integer\n");
} else if (QP_is_float(term)) {
QP_printf("Term is a float\n");
} else if (QP_is_variable(term)) {
QP_printf("Term is a variable\n");
} else if (QP_is_db_reference(term)) {
QP_printf("Term is a database reference\n");
} else if (QP_is_compound(term)) {
if (QP_is_list(term)) {
QP_printf("Term is a list\n");
} else {
QP_printf("Term is a compound term\n");
}
} else {
QP_printf("Unrecognized term\n");
}
}
QP_get_*(), QP_put_*(), QP_new_term_ref()