NEURON
regexp.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1987, 1988, 1989, 1990, 1991 Stanford University
3  * Copyright (c) 1991 Silicon Graphics, Inc.
4  *
5  * Permission to use, copy, modify, distribute, and sell this software and
6  * its documentation for any purpose is hereby granted without fee, provided
7  * that (i) the above copyright notices and this permission notice appear in
8  * all copies of the software and related documentation, and (ii) the names of
9  * Stanford and Silicon Graphics may not be used in any advertising or
10  * publicity relating to the software without the specific, prior written
11  * permission of Stanford and Silicon Graphics.
12  *
13  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
14  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
15  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  * IN NO EVENT SHALL STANFORD OR SILICON GRAPHICS BE LIABLE FOR
18  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
19  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
21  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22  * OF THIS SOFTWARE.
23  */
24 
25 /*
26  * Regexp - regular expression searching
27  */
28 
29 #ifndef iv_regexp_h
30 #define iv_regexp_h
31 
32 #include <InterViews/enter-scope.h>
33 
34 /*
35  * These definitions are from Henry Spencers public-domain regular
36  * expression matching routines.
37  *
38  * Definitions etc. for regexp(3) routines.
39  *
40  * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
41  * not the System V one.
42  */
43 #define NSUBEXP 10
44 struct regexp {
45  char *startp[NSUBEXP];
46  char *endp[NSUBEXP];
47  char *textStart;
48  char regstart; /* Internal use only. */
49  char reganch; /* Internal use only. */
50  char *regmust; /* Internal use only. */
51  int regmlen; /* Internal use only. */
52  char program[1]; /* Unwarranted chumminess with compiler. */
53 };
54 
55 /*
56  * The first byte of the regexp internal "program" is actually this magic
57  * number; the start node begins in the second byte.
58  */
59 #define REGEXP_MAGIC 0234
60 
61 class Regexp {
62 public:
63  Regexp(const char*);
64  Regexp(const char*, int length);
65  ~Regexp();
66 
67  const char* pattern() const;
68  int Search(const char* text, int length, int index, int range);
69  int Match(const char* text, int length, int index);
70  int BeginningOfMatch(int subexp = 0);
71  int EndOfMatch(int subexp = 0);
72 private:
73  char* pattern_;
75 };
76 
77 #endif
char * regmust
Definition: regexp.h:50
#define text
Definition: plot.cpp:81
static char * pattern
Definition: regexp.cpp:82
#define NSUBEXP
Definition: regexp.h:43
char program[1]
Definition: regexp.h:52
char * pattern_
Definition: regexp.h:73
char reganch
Definition: regexp.h:49
char * startp[NSUBEXP]
Definition: regexp.h:45
char * endp[NSUBEXP]
Definition: regexp.h:46
regexp * c_pattern
Definition: regexp.h:74
char regstart
Definition: regexp.h:48
Definition: regexp.h:61
int regmlen
Definition: regexp.h:51
Definition: regexp.h:44
short index
Definition: cabvars.h:11
char * textStart
Definition: regexp.h:47
#define Regexp
Definition: _defines.h:222