1 |
/* $Id$ */ |
2 |
|
3 |
/************************************************* |
4 |
* Perl-Compatible Regular Expressions * |
5 |
*************************************************/ |
6 |
|
7 |
/* In its original form, this is the .in file that is transformed by |
8 |
"configure" into pcre.h. |
9 |
|
10 |
Copyright (c) 1997-2005 University of Cambridge |
11 |
|
12 |
----------------------------------------------------------------------------- |
13 |
Redistribution and use in source and binary forms, with or without |
14 |
modification, are permitted provided that the following conditions are met: |
15 |
|
16 |
* Redistributions of source code must retain the above copyright notice, |
17 |
this list of conditions and the following disclaimer. |
18 |
|
19 |
* Redistributions in binary form must reproduce the above copyright |
20 |
notice, this list of conditions and the following disclaimer in the |
21 |
documentation and/or other materials provided with the distribution. |
22 |
|
23 |
* Neither the name of the University of Cambridge nor the names of its |
24 |
contributors may be used to endorse or promote products derived from |
25 |
this software without specific prior written permission. |
26 |
|
27 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
28 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
29 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
30 |
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
31 |
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
32 |
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
33 |
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
34 |
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
35 |
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
36 |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
37 |
POSSIBILITY OF SUCH DAMAGE. |
38 |
----------------------------------------------------------------------------- |
39 |
*/ |
40 |
|
41 |
#ifndef _PCRE_H |
42 |
#define _PCRE_H |
43 |
|
44 |
/* The file pcre.h is build by "configure". Do not edit it; instead |
45 |
make changes to pcre.in. */ |
46 |
|
47 |
#define PCRE_MAJOR 6 |
48 |
#define PCRE_MINOR 3 |
49 |
#define PCRE_DATE 15-Aug-2005 |
50 |
|
51 |
/* Win32 uses DLL by default; it needs special stuff for exported functions. */ |
52 |
|
53 |
#ifdef _WIN32 |
54 |
# ifdef PCRE_DEFINITION |
55 |
# ifdef DLL_EXPORT |
56 |
# define PCRE_DATA_SCOPE __declspec(dllexport) |
57 |
# endif |
58 |
# else |
59 |
# ifndef PCRE_STATIC |
60 |
# define PCRE_DATA_SCOPE extern __declspec(dllimport) |
61 |
# endif |
62 |
# endif |
63 |
#endif |
64 |
|
65 |
/* For other operating systems, we use the standard "extern". */ |
66 |
|
67 |
#ifndef PCRE_DATA_SCOPE |
68 |
# ifdef __cplusplus |
69 |
# define PCRE_DATA_SCOPE extern "C" |
70 |
# else |
71 |
# define PCRE_DATA_SCOPE extern |
72 |
# endif |
73 |
#endif |
74 |
|
75 |
/* Have to include stdlib.h in order to ensure that size_t is defined; |
76 |
it is needed here for malloc. */ |
77 |
|
78 |
#include <stdlib.h> |
79 |
|
80 |
/* Allow for C++ users */ |
81 |
|
82 |
#ifdef __cplusplus |
83 |
extern "C" { |
84 |
#endif |
85 |
|
86 |
/* Options */ |
87 |
|
88 |
#define PCRE_CASELESS 0x00000001 |
89 |
#define PCRE_MULTILINE 0x00000002 |
90 |
#define PCRE_DOTALL 0x00000004 |
91 |
#define PCRE_EXTENDED 0x00000008 |
92 |
#define PCRE_ANCHORED 0x00000010 |
93 |
#define PCRE_DOLLAR_ENDONLY 0x00000020 |
94 |
#define PCRE_EXTRA 0x00000040 |
95 |
#define PCRE_NOTBOL 0x00000080 |
96 |
#define PCRE_NOTEOL 0x00000100 |
97 |
#define PCRE_UNGREEDY 0x00000200 |
98 |
#define PCRE_NOTEMPTY 0x00000400 |
99 |
#define PCRE_UTF8 0x00000800 |
100 |
#define PCRE_NO_AUTO_CAPTURE 0x00001000 |
101 |
#define PCRE_NO_UTF8_CHECK 0x00002000 |
102 |
#define PCRE_AUTO_CALLOUT 0x00004000 |
103 |
#define PCRE_PARTIAL 0x00008000 |
104 |
#define PCRE_DFA_SHORTEST 0x00010000 |
105 |
#define PCRE_DFA_RESTART 0x00020000 |
106 |
#define PCRE_FIRSTLINE 0x00040000 |
107 |
|
108 |
/* Exec-time and get/set-time error codes */ |
109 |
|
110 |
#define PCRE_ERROR_NOMATCH (-1) |
111 |
#define PCRE_ERROR_NULL (-2) |
112 |
#define PCRE_ERROR_BADOPTION (-3) |
113 |
#define PCRE_ERROR_BADMAGIC (-4) |
114 |
#define PCRE_ERROR_UNKNOWN_NODE (-5) |
115 |
#define PCRE_ERROR_NOMEMORY (-6) |
116 |
#define PCRE_ERROR_NOSUBSTRING (-7) |
117 |
#define PCRE_ERROR_MATCHLIMIT (-8) |
118 |
#define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */ |
119 |
#define PCRE_ERROR_BADUTF8 (-10) |
120 |
#define PCRE_ERROR_BADUTF8_OFFSET (-11) |
121 |
#define PCRE_ERROR_PARTIAL (-12) |
122 |
#define PCRE_ERROR_BADPARTIAL (-13) |
123 |
#define PCRE_ERROR_INTERNAL (-14) |
124 |
#define PCRE_ERROR_BADCOUNT (-15) |
125 |
#define PCRE_ERROR_DFA_UITEM (-16) |
126 |
#define PCRE_ERROR_DFA_UCOND (-17) |
127 |
#define PCRE_ERROR_DFA_UMLIMIT (-18) |
128 |
#define PCRE_ERROR_DFA_WSSIZE (-19) |
129 |
#define PCRE_ERROR_DFA_RECURSE (-20) |
130 |
|
131 |
/* Request types for pcre_fullinfo() */ |
132 |
|
133 |
#define PCRE_INFO_OPTIONS 0 |
134 |
#define PCRE_INFO_SIZE 1 |
135 |
#define PCRE_INFO_CAPTURECOUNT 2 |
136 |
#define PCRE_INFO_BACKREFMAX 3 |
137 |
#define PCRE_INFO_FIRSTBYTE 4 |
138 |
#define PCRE_INFO_FIRSTCHAR 4 /* For backwards compatibility */ |
139 |
#define PCRE_INFO_FIRSTTABLE 5 |
140 |
#define PCRE_INFO_LASTLITERAL 6 |
141 |
#define PCRE_INFO_NAMEENTRYSIZE 7 |
142 |
#define PCRE_INFO_NAMECOUNT 8 |
143 |
#define PCRE_INFO_NAMETABLE 9 |
144 |
#define PCRE_INFO_STUDYSIZE 10 |
145 |
#define PCRE_INFO_DEFAULT_TABLES 11 |
146 |
|
147 |
/* Bit flags for the pcre_extra structure */ |
148 |
|
149 |
#define PCRE_EXTRA_STUDY_DATA 0x0001 |
150 |
#define PCRE_EXTRA_MATCH_LIMIT 0x0002 |
151 |
#define PCRE_EXTRA_CALLOUT_DATA 0x0004 |
152 |
#define PCRE_EXTRA_TABLES 0x0008 |
153 |
|
154 |
/* Types */ |
155 |
|
156 |
struct real_pcre; /* declaration; the definition is private */ |
157 |
typedef struct real_pcre pcre; |
158 |
|
159 |
/* The structure for passing additional data to pcre_exec(). This is defined in |
160 |
such as way as to be extensible. Always add new fields at the end, in order to |
161 |
remain compatible. */ |
162 |
|
163 |
typedef struct pcre_extra { |
164 |
unsigned long int flags; /* Bits for which fields are set */ |
165 |
void *study_data; /* Opaque data from pcre_study() */ |
166 |
unsigned long int match_limit; /* Maximum number of calls to match() */ |
167 |
void *callout_data; /* Data passed back in callouts */ |
168 |
const unsigned char *tables; /* Pointer to character tables */ |
169 |
} pcre_extra; |
170 |
|
171 |
/* The structure for passing out data via the pcre_callout_function. We use a |
172 |
structure so that new fields can be added on the end in future versions, |
173 |
without changing the API of the function, thereby allowing old clients to work |
174 |
without modification. */ |
175 |
|
176 |
typedef struct pcre_callout_block { |
177 |
int version; /* Identifies version of block */ |
178 |
/* ------------------------ Version 0 ------------------------------- */ |
179 |
int callout_number; /* Number compiled into pattern */ |
180 |
int *offset_vector; /* The offset vector */ |
181 |
const char *subject; /* The subject being matched */ |
182 |
int subject_length; /* The length of the subject */ |
183 |
int start_match; /* Offset to start of this match attempt */ |
184 |
int current_position; /* Where we currently are in the subject */ |
185 |
int capture_top; /* Max current capture */ |
186 |
int capture_last; /* Most recently closed capture */ |
187 |
void *callout_data; /* Data passed in with the call */ |
188 |
/* ------------------- Added for Version 1 -------------------------- */ |
189 |
int pattern_position; /* Offset to next item in the pattern */ |
190 |
int next_item_length; /* Length of next item in the pattern */ |
191 |
/* ------------------------------------------------------------------ */ |
192 |
} pcre_callout_block; |
193 |
|
194 |
/* Indirection for store get and free functions. These can be set to |
195 |
alternative malloc/free functions if required. Special ones are used in the |
196 |
non-recursive case for "frames". There is also an optional callout function |
197 |
that is triggered by the (?) regex item. */ |
198 |
|
199 |
PCRE_DATA_SCOPE void *(*pcre_malloc)(size_t); |
200 |
PCRE_DATA_SCOPE void (*pcre_free)(void *); |
201 |
PCRE_DATA_SCOPE void *(*pcre_stack_malloc)(size_t); |
202 |
PCRE_DATA_SCOPE void (*pcre_stack_free)(void *); |
203 |
PCRE_DATA_SCOPE int (*pcre_callout)(pcre_callout_block *); |
204 |
|
205 |
/* Exported PCRE functions */ |
206 |
|
207 |
PCRE_DATA_SCOPE pcre *pcre_compile(const char *, int, const char **, int *, |
208 |
const unsigned char *); |
209 |
PCRE_DATA_SCOPE pcre *pcre_compile2(const char *, int, int *, const char **, |
210 |
int *, const unsigned char *); |
211 |
PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, const char *, |
212 |
int, int, int, int *, int); |
213 |
PCRE_DATA_SCOPE int pcre_fullinfo(const pcre *, const pcre_extra *, int, |
214 |
void *); |
215 |
PCRE_DATA_SCOPE pcre_extra *pcre_study(const pcre *, int, const char **); |
216 |
|
217 |
#ifdef __cplusplus |
218 |
} /* extern "C" */ |
219 |
#endif |
220 |
|
221 |
#endif /* End of pcre.h */ |