QP_compare()

Synopsis

     #include <quintus/quintus.h>
     
     int QP_compare(term1, term2)
     QP_term_ref term1;
     QP_term_ref term2;
     

Compares the two terms referenced by term1 and term2. Both arguments are term1 before term2

Description

The comparison uses the standard total ordering of Prolog terms (also used by the built-in Prolog predicate compare/3).


In Standard Order:
Ret Value
term1 before term2
-1
term1 same as term2
0
term1 after term2
1

Examples

c_compare(term1, term2) is an equivalent C version of the Prolog builtin compare/3:

                                     
foo.pl
foreign(c_compare, c, c_compare(+term, +term, +term)).
                                      
foo.c
#include <quintus/quintus.h> int c_compare(t1, t2, t3) QP_term_ref t1, t2; { int res; QP_term_ref l_than = QP_new_term_ref(); QP_term_ref equal = QP_new_term_ref(); QP_term_ref g_than = QP_new_term_ref(); QP_put_atom(l_than, QP_atom_from_string("<")); QP_put_atom(equal, QP_atom_from_string("=")); QP_put_atom(g_than, QP_atom_from_string(">")); res = QP_compare(t2, t3); if ( res < 0) { return QP_unify(t1, l_than); } else if (res == 0) { return QP_unify(t1, equal); } else if (res > 0) { return QP_unify(t1, g_than); } }

See Also:

QP_unify(), compare/3