source: vis_dev/glu-2.3/src/avl/avl.h @ 21

Last change on this file since 21 was 13, checked in by cecile, 13 years ago

library glu 2.3

File size: 1.8 KB
Line 
1/*
2 * Revision Control Information
3 *
4 * /projects/hsis/CVS/utilities/avl/avl.h,v
5 * rajeev
6 * 1.3
7 * 1995/08/08 22:36:24
8 *
9 */
10#ifndef AVL_INCLUDED
11#define AVL_INCLUDED
12
13
14typedef struct avl_node_struct avl_node;
15struct avl_node_struct {
16    avl_node *left, *right;
17    char *key;
18    char *value;
19    int height;
20};
21
22
23typedef struct avl_tree_struct avl_tree;
24struct avl_tree_struct {
25    avl_node *root;
26    int (*compar)(const void *, const void *);
27    int num_entries;
28    int modified;
29};
30
31
32typedef struct avl_generator_struct avl_generator;
33struct avl_generator_struct {
34    avl_tree *tree;
35    avl_node **nodelist;
36    int count;
37};
38
39
40#define AVL_FORWARD     0
41#define AVL_BACKWARD    1
42
43
44EXTERN avl_tree *avl_init_table ARGS((int (*)(const void *, const void *)));
45EXTERN int avl_delete ARGS((avl_tree *, void *, void *));
46EXTERN int avl_insert ARGS((avl_tree *, void *, void *));
47EXTERN int avl_lookup ARGS((avl_tree *, const void *, void *));
48EXTERN int avl_first ARGS((avl_tree *, char **, char **));
49EXTERN int avl_last ARGS((avl_tree *, char **, char **));
50EXTERN int avl_find_or_add ARGS((avl_tree *, char *, char ***));
51EXTERN int avl_count ARGS((avl_tree *));
52EXTERN int avl_numcmp ARGS((const void *, const void *));
53EXTERN int avl_check_tree ARGS((avl_tree *tree));
54EXTERN int avl_gen ARGS((avl_generator *, char **, char **));
55EXTERN void avl_foreach ARGS((avl_tree *, void (*)(const void *, const void *), int));
56EXTERN void avl_free_table ARGS((avl_tree *, void (*)(char *), void (*)(char *)));
57EXTERN void avl_free_gen ARGS((avl_generator *));
58EXTERN avl_generator *avl_init_gen ARGS((avl_tree *, int));
59
60#define avl_is_member(tree, key)        avl_lookup(tree, key, (char **) 0)
61
62#define avl_foreach_item(table, gen, dir, key_p, value_p)       \
63    for(gen = avl_init_gen(table, dir);                         \
64            avl_gen(gen, key_p, value_p) || (avl_free_gen(gen),0);)
65
66#endif
Note: See TracBrowser for help on using the repository browser.