Annotation of researchv10dc/cmd/odist/pax/src/lib/libodelta/suftree.h, revision 1.1.1.1

1.1       root        1: /* the type of list elements we play with */
                      2: typedef char   Element;
                      3: 
                      4: /* for suffix trees, a tree node looks like this */
                      5: typedef struct _ts_
                      6: {
                      7:        Element         *_label;        /* substring labeling the edge */
                      8:        long int        _length;        /* the length of the string */
                      9:        struct _ts_     *_child;        /* list of children */
                     10:        struct _ts_     *_sibling;      /* link for the child list */
                     11:        union
                     12:        {       /* these two fields are mutual exclusive */
                     13:                struct _ts_     *_link;         /* sub-link */
                     14:                Element         *_suffix;       /* suffix */
                     15:        }       _uls_;
                     16: }      Suftree;
                     17: 
                     18: /* short hand for various fields in a tree node */
                     19: #define        LABEL(n)        ((n)->_label)
                     20: #define LENGTH(n)      ((n)->_length)
                     21: #define CHILD(n)       ((n)->_child)
                     22: #define SIBLING(n)     ((n)->_sibling)
                     23: #define LINK(n)                ((n)->_uls_._link)
                     24: #define SUFFIX(n)      ((n)->_uls_._suffix)
                     25: 
                     26: extern Suftree *bldsuftree();
                     27: extern long    mtchsuftree();
                     28: 
                     29: 
                     30: /* the following definitions are not to be seen by users */
                     31: #ifdef _IN_SUF_TREE
                     32: #ifdef DEBUG
                     33: #define ASSERT(p)      if(!(p)) abort();
                     34: #else
                     35: #define ASSERT(p)
                     36: #endif /*DEBUG*/
                     37: 
                     38: #ifndef NULL
                     39: #define NULL   (0L)
                     40: #endif /*NULL*/
                     41: 
                     42: #ifndef NIL
                     43: #define NIL(type)      ((type*)NULL)
                     44: #endif /*NIL*/
                     45: 
                     46: #define ALLOCSIZE      256     /* amount of nodes to allocate each time */
                     47: #define NEXT(n)                ((n)->_sibling)
                     48: 
                     49: #endif /*_IN_SUF_TREE*/

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.