Annotation of 43BSD/contrib/emacs/src/regex.h, revision 1.1.1.1

1.1       root        1: /* Definitions for data structures callers pass the regex library.
                      2:    Copyright (C) 1985 Richard M. Stallman
                      3: 
                      4: This program is distributed in the hope that it will be useful,
                      5: but without any warranty.  No author or distributor
                      6: accepts responsibility to anyone for the consequences of using it
                      7: or for whether it serves any particular purpose or works at all,
                      8: unless he says so in writing.
                      9: 
                     10:    Permission is granted to anyone to distribute verbatim copies
                     11:    of this program's source code as received, in any medium, provided that
                     12:    the copyright notice, the nonwarraty notice above
                     13:    and this permission notice are preserved,
                     14:    and that the distributor grants the recipient all rights
                     15:    for further redistribution as permitted by this notice,
                     16:    and informs him of these rights.
                     17: 
                     18:    Permission is granted to distribute modified versions of this
                     19:    program's source code, or of portions of it, under the above
                     20:    conditions, plus the conditions that all changed files carry
                     21:    prominent notices stating who last changed them and that the
                     22:    derived material, including anything packaged together with it and
                     23:    conceptually functioning as a modification of it rather than an
                     24:    application of it, is in its entirety subject to a permission
                     25:    notice identical to this one.
                     26: 
                     27:    Permission is granted to distribute this program (verbatim or
                     28:    as modified) in compiled or executable form, provided verbatim
                     29:    redistribution is permitted as stated above for source code, and
                     30:     A.  it is accompanied by the corresponding machine-readable
                     31:       source code, under the above conditions, or
                     32:     B.  it is accompanied by a written offer, with no time limit,
                     33:       to distribute the corresponding machine-readable source code,
                     34:       under the above conditions, to any one, in return for reimbursement
                     35:       of the cost of distribution.   Verbatim redistribution of the
                     36:       written offer must be permitted.  Or,
                     37:     C.  it is distributed by someone who received only the
                     38:       compiled or executable form, and is accompanied by a copy of the
                     39:       written offer of source code which he received along with it.
                     40: 
                     41:    Permission is granted to distribute this program (verbatim or as modified)
                     42:    in executable form as part of a larger system provided that the source
                     43:    code for this program, including any modifications used,
                     44:    is also distributed or offered as stated in the preceding paragraph.
                     45: 
                     46: In other words, you are welcome to use, share and improve this program.
                     47: You are forbidden to forbid anyone else to use, share and improve
                     48: what you give them.   Help stamp out software-hoarding!  */
                     49: 
                     50: 
                     51: #ifndef RE_NREGS
                     52: #define RE_NREGS 10
                     53: #endif
                     54: 
                     55: /* This data structure is used to represent a compiled pattern. */
                     56: 
                     57: struct re_pattern_buffer
                     58:   {
                     59:     char *buffer;      /* Space holding the compiled pattern commands. */
                     60:     int allocated;     /* Size of space that  buffer  points to */
                     61:     int used;          /* Length of portion of buffer actually occupied */
                     62:     char *fastmap;     /* Pointer to fastmap, if any, or zero if none. */
                     63:                        /* re_search uses the fastmap, if there is one,
                     64:                           to skip quickly over totally implausible characters */
                     65:     char *translate;   /* Translate table to apply to all characters before comparing.
                     66:                           Or zero for no translation.
                     67:                           The translation is applied to a pattern when it is compiled
                     68:                           and to data when it is matched. */
                     69:     char fastmap_accurate;
                     70:                        /* Set to zero when a new pattern is stored,
                     71:                           set to one when the fastmap is updated from it. */
                     72:     char can_be_null;   /* Set to one by compiling fastmap
                     73:                           if this pattern might match the null string.
                     74:                           It does not necessarily match the null string
                     75:                           in that case, but if this is zero, it cannot.  */
                     76:   };
                     77: 
                     78: /* Structure to store "register" contents data in.
                     79: 
                     80:    Pass the address of such a structure as an argument to re_match, etc.,
                     81:    if you want this information back.
                     82: 
                     83:    start[i] and end[i] record the string matched by \( ... \) grouping i,
                     84:    for i from 1 to RE_NREGS - 1.
                     85:    start[0] and end[0] record the entire string matched. */
                     86: 
                     87: struct re_registers
                     88:   {
                     89:     int start[RE_NREGS];
                     90:     int end[RE_NREGS];
                     91:   };
                     92: 
                     93: char *re_compile_pattern ();

unix.superglobalmegacorp.com

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