Annotation of researchv10dc/cmd/gre/re.h, revision 1.1.1.1

1.1       root        1: #ifndef        RE_H
                      2: #define RE_H
                      3: 
                      4: # if defined(__cplusplus)
                      5: extern "C" {   /* C++ 2.0 */
                      6: # endif
                      7: 
                      8: typedef struct re_bm
                      9: {
                     10:        int delta0[256], *delta2;
                     11:        unsigned char cmap[256];
                     12:        char *bmpat;
                     13:        int patlen;
                     14: } re_bm;
                     15: 
                     16: typedef struct re_cw
                     17: {
                     18:        int maxdepth, mindepth;
                     19:        char seenerror;         /* set if we called re_error */
                     20:        long nodeid;
                     21:        int step[256];
                     22:        unsigned char map[256];
                     23:        struct Node *root;
                     24: } re_cw;
                     25: 
                     26: typedef enum
                     27: {
                     28:        Literal, Dot, Carat, Dollar, Charclass, Compcharclass,          /* 0-5 */
                     29:        Cat, Alternate, Star, Plus, Quest, Backref, Group, EOP,         /* 6-13 */
                     30:        /* not in grammar, just helping */
                     31:        Lpar, Rpar, Backslash, Null
                     32: } Exprtype;
                     33: 
                     34: typedef struct Expr
                     35: {
                     36:        Exprtype type;
                     37:        char reallit;           /* just for dollar and -G, dammit! */
                     38:        char backref;           /* backref used here or below */
                     39:        char parens;            /* parens used here or below */
                     40:        char seenerror;         /* set if we called re_error */
                     41:        int id;
                     42:        unsigned int lit;
                     43:        long flen;
                     44:        int *follow;
                     45:        struct Expr *l, *r, *parent;
                     46: } Expr;
                     47: typedef enum Parsetype { greparse, grepparse, egrepparse } Parsetype;
                     48: 
                     49: #define                RE_DOLLAR       256
                     50: #define                RE_CARAT        257
                     51: #define                RE_HIGH         258     /* always 1+last constant */
                     52: 
                     53: typedef struct State
                     54: {
                     55:        struct State *tab[RE_HIGH];
                     56:        char out;       /* matched */
                     57:        char init;      /* inital state */
                     58:        long npos;
                     59:        int pos;        /* index into posbase */
                     60: } State;
                     61: 
                     62: typedef struct Positionset
                     63: {
                     64:        long count;
                     65:        int last;
                     66:        int *base;
                     67: } Positionset;
                     68: 
                     69: typedef enum {
                     70:        br_re, br_group, br_br, br_cat, br_alt, br_star, br_plus, br_quest
                     71: } Br_type;
                     72: 
                     73: typedef struct Br
                     74: {
                     75:        Br_type type;
                     76:        Expr *e;
                     77:        int group;
                     78:        struct re_re *r;
                     79:        struct Br *lb, *rb;
                     80: } Br;
                     81: 
                     82: typedef struct re_re
                     83: {
                     84:        int *posbase;
                     85:        int nposalloc, posnext, posreset;
                     86:        int maxid;
                     87:        Expr *root;
                     88:        Expr **ptr;
                     89:        unsigned char mymap[256];
                     90:        Positionset firstpos, begin, tmp;
                     91:        int nstates, statelim;
                     92:        State *states;
                     93:        State istate;
                     94:        int initialstate;
                     95:        int carat;
                     96:        int flushed;
                     97:        int threshhold;         /* resize cache every threshhold flushes */
                     98:        int backref;
                     99:        int parens;
                    100:        Br *br;
                    101: } re_re;
                    102: 
                    103: /*
                    104:        matching routine endpoint markers
                    105: */
                    106: #define                RE_BEG          1               /* beginning matches ^ */
                    107: #define                RE_END          2               /* end matches $ */
                    108: 
                    109: # ifdef USE_STDIO
                    110: #  include <stdio.h>
                    111: #  if defined(__STDC__) || defined(c_plusplus) || defined(__cplusplus)
                    112: extern void re_refile(re_re*, FILE*);
                    113: extern re_re *re_filere(FILE*);
                    114: #  else
                    115: extern void re_refile();
                    116: extern re_re *re_filere();
                    117: #  endif
                    118: # endif /* USE_STDIO */
                    119: 
                    120: # if defined(__STDC__) || defined(c_plusplus) || defined(__cplusplus)
                    121: # define VOID void
                    122: typedef int (*RDFN)(char**, char**);
                    123: typedef int (*MATCHFN)(char**,char**);
                    124: typedef int (*PROCFN)(VOID*, RDFN, MATCHFN);
                    125: extern re_bm *re_bmcomp(char*, char*, unsigned char*);
                    126: extern int re_bmexec(VOID*, RDFN, MATCHFN);
                    127: extern void re_bmfree(re_bm*);
                    128: extern void re_cwadd(re_cw*, unsigned char*, unsigned char*);
                    129: extern void re_cwcomp(re_cw*);
                    130: extern int re_cwexec(VOID*, RDFN, MATCHFN);
                    131: extern void re_cwfree(re_cw*);
                    132: extern re_cw *re_cwinit(unsigned char*);
                    133: extern void re_error(char*);
                    134: extern int re_paren(re_re *e);
                    135: extern re_re *re_recomp(char*, char*, unsigned char*);
                    136: extern re_cw *re_recw(re_re*, unsigned char*);
                    137: extern int re_reexec(re_re*, char*, char*, char*[10][2]);
                    138: extern void re_refree(re_re*);
                    139: #else
                    140: # define VOID char
                    141: typedef int (*RDFN)();
                    142: typedef int (*MATCHFN)();
                    143: typedef int (*PROCFN)();
                    144: extern re_bm *re_bmcomp();
                    145: extern int re_bmexec();
                    146: extern void re_bmfree();
                    147: extern void re_cwadd();
                    148: extern void re_cwcomp();
                    149: extern int re_cwexec();
                    150: extern void re_cwfree();
                    151: extern re_cw *re_cwinit();
                    152: extern void re_error();
                    153: extern int re_paren();
                    154: extern re_re *re_recomp();
                    155: extern re_cw *re_recw();
                    156: extern int re_reexec();
                    157: extern void re_refree();
                    158: # endif
                    159: 
                    160: # if defined(__cplusplus)
                    161: }              /* C++ 2.0 */
                    162: # endif
                    163: #endif

unix.superglobalmegacorp.com

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