Annotation of researchv10dc/cmd/gre/re.h, revision 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.