|
Tesseract
3.02
|
Go to the source code of this file.
Classes | |
| struct | list_rec |
Defines | |
| #define | NIL_LIST (LIST) 0 |
| #define | list_rest(l) ((l) ? (l)->next : NIL_LIST) |
| #define | first_node(l) ((l) ? (l)->node : NIL_LIST) |
| #define | copy_first(l1, l2) (l2=push(l2, first_node(l1))) |
| #define | iterate(l) for (; (l) != NIL_LIST; (l) = list_rest (l)) |
| #define | iterate_list(x, l) for ((x)=(l); (x)!=0; (x)=list_rest(x)) |
| #define | JOIN_ON(list1, list2) ((list1) = join ((list1), (list2))) |
| #define | pop_off(list) ((list) = pop (list)) |
| #define | push_on(list, thing) ((list) = push (list, (LIST) (thing))) |
| #define | second_node(l) first_node (list_rest (l)) |
| #define | set_rest(l, cell) ((l)->next = (cell)) |
| #define | third(l) first_node (list_rest (list_rest (l))) |
Typedefs | |
| typedef list_rec * | LIST |
Functions | |
| int | count (LIST var_list) |
| LIST | delete_d (LIST list, void *key, int_compare is_equal) |
| LIST | delete_d (LIST list, void *key, TessResultCallback2< int, void *, void * > *is_equal) |
| LIST | destroy (LIST list) |
| void | destroy_nodes (LIST list, void_dest destructor) |
| void | insert (LIST list, void *node) |
| int | is_same_node (void *item1, void *item2) |
| int | is_same (void *item1, void *item2) |
| LIST | join (LIST list1, LIST list2) |
| LIST | last (LIST var_list) |
| void * | nth_cell (LIST var_list, int item_num) |
| LIST | pop (LIST list) |
| LIST | push (LIST list, void *element) |
| LIST | push_last (LIST list, void *item) |
| LIST | reverse (LIST list) |
| LIST | reverse_d (LIST list) |
| LIST | s_adjoin (LIST var_list, void *variable, int_compare compare) |
| LIST | search (LIST list, void *key, int_compare is_equal) |
| LIST | search (LIST list, void *key, TessResultCallback2< int, void *, void * > *) |
| #define copy_first | ( | l1, | |
| l2 | |||
| ) | (l2=push(l2, first_node(l1))) |
| #define iterate | ( | l | ) | for (; (l) != NIL_LIST; (l) = list_rest (l)) |
| #define iterate_list | ( | x, | |
| l | |||
| ) | for ((x)=(l); (x)!=0; (x)=list_rest(x)) |
| #define JOIN_ON | ( | list1, | |
| list2 | |||
| ) | ((list1) = join ((list1), (list2))) |
| #define push_on | ( | list, | |
| thing | |||
| ) | ((list) = push (list, (LIST) (thing))) |
| int count | ( | LIST | var_list | ) |
Definition at line 108 of file oldlist.cpp.
{
int temp = 0;
iterate (var_list) temp += 1;
return (temp);
}
| LIST delete_d | ( | LIST | list, |
| void * | key, | ||
| int_compare | is_equal | ||
| ) |
Definition at line 125 of file oldlist.cpp.
{
LIST result = NIL_LIST;
LIST last_one = NIL_LIST;
if (is_equal == NULL)
is_equal = is_same;
while (list != NIL_LIST) {
if (!(*is_equal) (first_node (list), key)) {
if (last_one == NIL_LIST) {
last_one = list;
list = list_rest (list);
result = last_one;
set_rest(last_one, NIL_LIST);
}
else {
set_rest(last_one, list);
last_one = list;
list = list_rest (list);
set_rest(last_one, NIL_LIST);
}
}
else {
list = pop (list);
}
}
return (result);
}
| LIST delete_d | ( | LIST | list, |
| void * | key, | ||
| TessResultCallback2< int, void *, void * > * | is_equal | ||
| ) |
Definition at line 154 of file oldlist.cpp.
{
LIST result = NIL_LIST;
LIST last_one = NIL_LIST;
while (list != NIL_LIST) {
if (!(*is_equal).Run (first_node (list), key)) {
if (last_one == NIL_LIST) {
last_one = list;
list = list_rest (list);
result = last_one;
set_rest(last_one, NIL_LIST);
}
else {
set_rest(last_one, list);
last_one = list;
list = list_rest (list);
set_rest(last_one, NIL_LIST);
}
}
else {
list = pop (list);
}
}
return (result);
}
Definition at line 204 of file oldlist.cpp.
{
if (destructor == NULL)
destructor = memfree;
while (list != NIL_LIST) {
(*destructor) (first_node (list));
list = pop (list);
}
}
| void insert | ( | LIST | list, |
| void * | node | ||
| ) |
| int is_same | ( | void * | item1, |
| void * | item2 | ||
| ) |
Definition at line 252 of file oldlist.cpp.
{
return (!strcmp ((char *) item1, (char *) item2));
}
| int is_same_node | ( | void * | item1, |
| void * | item2 | ||
| ) |
Definition at line 241 of file oldlist.cpp.
{
return (item1 == item2);
}
Definition at line 264 of file oldlist.cpp.
Definition at line 277 of file oldlist.cpp.
| void* nth_cell | ( | LIST | var_list, |
| int | item_num | ||
| ) |
Definition at line 289 of file oldlist.cpp.
{
int x = 0;
iterate(var_list) {
if (x++ == item_num)
return (var_list);
}
return (var_list);
}
Definition at line 357 of file oldlist.cpp.
{
LIST newlist = NIL_LIST;
iterate (list) copy_first (list, newlist);
return (newlist);
}
Definition at line 371 of file oldlist.cpp.
| LIST s_adjoin | ( | LIST | var_list, |
| void * | variable, | ||
| int_compare | compare | ||
| ) |
Definition at line 384 of file oldlist.cpp.
{
LIST l;
int result;
if (compare == NULL)
compare = (int_compare) strcmp;
l = var_list;
iterate(l) {
result = (*compare) (variable, first_node (l));
if (result == 0)
return (var_list);
else if (result < 0) {
insert(l, variable);
return (var_list);
}
}
return (push_last (var_list, variable));
}
| LIST search | ( | LIST | list, |
| void * | key, | ||
| int_compare | is_equal | ||
| ) |
Definition at line 413 of file oldlist.cpp.
| LIST search | ( | LIST | list, |
| void * | key, | ||
| TessResultCallback2< int, void *, void * > * | |||
| ) |
Definition at line 422 of file oldlist.cpp.
{
iterate (list) if ((*is_equal).Run(first_node (list), key))
return (list);
return (NIL_LIST);
}