28 #include "pips_config.h"
72 debug_on(
"CELL_RELATIONS_OPERATORS_DEBUG_LEVEL");
79 for(l_cr1 = l1; !
ENDP(l_cr1);
POP(l_cr1))
83 bool combinable =
false;
94 if ( (*cr1_cr2_combinable_p)(cr1,cr2) )
98 list l_res_tmp = (*cr1_cr2_binary_op)(cr1,cr2);
99 l_res = (*union_op)(l_res, l_res_tmp);
102 if (prec_l_cr2 !=
NIL)
103 CDR(prec_l_cr2) =
CDR(l_cr2);
127 l_res =
gen_nconc(l_res, (*cr1_unary_op)(cr1));
138 for(l_cr2 = l2; !
ENDP(l_cr2);
POP(l_cr2))
143 l_res =
gen_nconc(l_res, (*cr2_unary_op)(cr2));
void free_cell_relation(cell_relation p)
list cell_relations_generic_binary_op(list l1, list l2, bool(*cr1_cr2_combinable_p)(cell_relation, cell_relation), list(*cr1_cr2_binary_op)(cell_relation, cell_relation), list(*cr1_unary_op)(cell_relation), list(*cr2_unary_op)(cell_relation), list(*union_op)(list, list))
functions specific to cell_relations
#define pips_debug_pv(level, message, pv)
#define pips_debug_pvs(level, message, l_pv)
#define CELL_RELATION(x)
CELL_RELATION.
#define cell_relation_undefined
#define ENDP(l)
Test if a list is empty.
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
#define CDR(pcons)
Get the list less its first element.
#define list_undefined
Undefined list definition :-)
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
The structure used to build lists in NewGen.