92 #define add_on(l, x) l = push(l, first_node(x)) 93 #define next_one(l) l = list_rest(l) 123 if (is_equal == NULL) is_equal =
is_same;
151 if (!(*is_equal).Run(
first_node(list), key)) {
226 return strcmp((
char *)item1, (
char *)item2) == 0 ? 1 : 0;
237 if (list1 ==
NIL_LIST)
return (list2);
260 if (x++ == item_num)
return (var_list);
348 if (compare == NULL) compare = (
int_compare)strcmp;
355 else if (result < 0) {
372 if (is_equal == NULL) is_equal =
is_same;
void(* void_dest)(void *)
void * nth_cell(LIST var_list, int item_num)
LIST push(LIST list, void *element)
#define copy_first(l1, l2)
int is_same(void *item1, void *item2)
LIST search(LIST list, void *key, int_compare is_equal)
int(* int_compare)(void *, void *)
LIST push_last(LIST list, void *item)
#define set_rest(l, cell)
void insert(LIST list, void *node)
LIST s_adjoin(LIST var_list, void *variable, int_compare compare)
LIST reverse_d(LIST list)
LIST join(LIST list1, LIST list2)
void destroy_nodes(LIST list, void_dest destructor)
LIST delete_d(LIST list, void *key, int_compare is_equal)