Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/pcre.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /************************************************* | |
2 * Perl-Compatible Regular Expressions * | |
3 *************************************************/ | |
4 | |
5 /* This is the public header file for the PCRE library, to be #included by | |
6 applications that call the PCRE functions. | |
7 | |
8 Copyright (c) 1997-2014 University of Cambridge | |
9 | |
10 ----------------------------------------------------------------------------- | |
11 Redistribution and use in source and binary forms, with or without | |
12 modification, are permitted provided that the following conditions are met: | |
13 | |
14 * Redistributions of source code must retain the above copyright notice, | |
15 this list of conditions and the following disclaimer. | |
16 | |
17 * Redistributions in binary form must reproduce the above copyright | |
18 notice, this list of conditions and the following disclaimer in the | |
19 documentation and/or other materials provided with the distribution. | |
20 | |
21 * Neither the name of the University of Cambridge nor the names of its | |
22 contributors may be used to endorse or promote products derived from | |
23 this software without specific prior written permission. | |
24 | |
25 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
26 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
27 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
28 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
29 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
30 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
31 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
32 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
33 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
34 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
35 POSSIBILITY OF SUCH DAMAGE. | |
36 ----------------------------------------------------------------------------- | |
37 */ | |
38 | |
39 #ifndef _PCRE_H | |
40 #define _PCRE_H | |
41 | |
42 /* The current PCRE version information. */ | |
43 | |
44 #define PCRE_MAJOR 8 | |
45 #define PCRE_MINOR 45 | |
46 #define PCRE_PRERELEASE | |
47 #define PCRE_DATE 2021-06-15 | |
48 | |
49 /* When an application links to a PCRE DLL in Windows, the symbols that are | |
50 imported have to be identified as such. When building PCRE, the appropriate | |
51 export setting is defined in pcre_internal.h, which includes this file. So we | |
52 don't change existing definitions of PCRE_EXP_DECL and PCRECPP_EXP_DECL. */ | |
53 | |
54 #if defined(_WIN32) && !defined(PCRE_STATIC) | |
55 # ifndef PCRE_EXP_DECL | |
56 # define PCRE_EXP_DECL extern __declspec(dllimport) | |
57 # endif | |
58 # ifdef __cplusplus | |
59 # ifndef PCRECPP_EXP_DECL | |
60 # define PCRECPP_EXP_DECL extern __declspec(dllimport) | |
61 # endif | |
62 # ifndef PCRECPP_EXP_DEFN | |
63 # define PCRECPP_EXP_DEFN __declspec(dllimport) | |
64 # endif | |
65 # endif | |
66 #endif | |
67 | |
68 /* By default, we use the standard "extern" declarations. */ | |
69 | |
70 #ifndef PCRE_EXP_DECL | |
71 # ifdef __cplusplus | |
72 # define PCRE_EXP_DECL extern "C" | |
73 # else | |
74 # define PCRE_EXP_DECL extern | |
75 # endif | |
76 #endif | |
77 | |
78 #ifdef __cplusplus | |
79 # ifndef PCRECPP_EXP_DECL | |
80 # define PCRECPP_EXP_DECL extern | |
81 # endif | |
82 # ifndef PCRECPP_EXP_DEFN | |
83 # define PCRECPP_EXP_DEFN | |
84 # endif | |
85 #endif | |
86 | |
87 /* Have to include stdlib.h in order to ensure that size_t is defined; | |
88 it is needed here for malloc. */ | |
89 | |
90 #include <stdlib.h> | |
91 | |
92 /* Allow for C++ users */ | |
93 | |
94 #ifdef __cplusplus | |
95 extern "C" { | |
96 #endif | |
97 | |
98 /* Public options. Some are compile-time only, some are run-time only, and some | |
99 are both. Most of the compile-time options are saved with the compiled regex so | |
100 that they can be inspected during studying (and therefore JIT compiling). Note | |
101 that pcre_study() has its own set of options. Originally, all the options | |
102 defined here used distinct bits. However, almost all the bits in a 32-bit word | |
103 are now used, so in order to conserve them, option bits that were previously | |
104 only recognized at matching time (i.e. by pcre_exec() or pcre_dfa_exec()) may | |
105 also be used for compile-time options that affect only compiling and are not | |
106 relevant for studying or JIT compiling. | |
107 | |
108 Some options for pcre_compile() change its behaviour but do not affect the | |
109 behaviour of the execution functions. Other options are passed through to the | |
110 execution functions and affect their behaviour, with or without affecting the | |
111 behaviour of pcre_compile(). | |
112 | |
113 Options that can be passed to pcre_compile() are tagged Cx below, with these | |
114 variants: | |
115 | |
116 C1 Affects compile only | |
117 C2 Does not affect compile; affects exec, dfa_exec | |
118 C3 Affects compile, exec, dfa_exec | |
119 C4 Affects compile, exec, dfa_exec, study | |
120 C5 Affects compile, exec, study | |
121 | |
122 Options that can be set for pcre_exec() and/or pcre_dfa_exec() are flagged with | |
123 E and D, respectively. They take precedence over C3, C4, and C5 settings passed | |
124 from pcre_compile(). Those that are compatible with JIT execution are flagged | |
125 with J. */ | |
126 | |
127 #define PCRE_CASELESS 0x00000001 /* C1 */ | |
128 #define PCRE_MULTILINE 0x00000002 /* C1 */ | |
129 #define PCRE_DOTALL 0x00000004 /* C1 */ | |
130 #define PCRE_EXTENDED 0x00000008 /* C1 */ | |
131 #define PCRE_ANCHORED 0x00000010 /* C4 E D */ | |
132 #define PCRE_DOLLAR_ENDONLY 0x00000020 /* C2 */ | |
133 #define PCRE_EXTRA 0x00000040 /* C1 */ | |
134 #define PCRE_NOTBOL 0x00000080 /* E D J */ | |
135 #define PCRE_NOTEOL 0x00000100 /* E D J */ | |
136 #define PCRE_UNGREEDY 0x00000200 /* C1 */ | |
137 #define PCRE_NOTEMPTY 0x00000400 /* E D J */ | |
138 #define PCRE_UTF8 0x00000800 /* C4 ) */ | |
139 #define PCRE_UTF16 0x00000800 /* C4 ) Synonyms */ | |
140 #define PCRE_UTF32 0x00000800 /* C4 ) */ | |
141 #define PCRE_NO_AUTO_CAPTURE 0x00001000 /* C1 */ | |
142 #define PCRE_NO_UTF8_CHECK 0x00002000 /* C1 E D J ) */ | |
143 #define PCRE_NO_UTF16_CHECK 0x00002000 /* C1 E D J ) Synonyms */ | |
144 #define PCRE_NO_UTF32_CHECK 0x00002000 /* C1 E D J ) */ | |
145 #define PCRE_AUTO_CALLOUT 0x00004000 /* C1 */ | |
146 #define PCRE_PARTIAL_SOFT 0x00008000 /* E D J ) Synonyms */ | |
147 #define PCRE_PARTIAL 0x00008000 /* E D J ) */ | |
148 | |
149 /* This pair use the same bit. */ | |
150 #define PCRE_NEVER_UTF 0x00010000 /* C1 ) Overlaid */ | |
151 #define PCRE_DFA_SHORTEST 0x00010000 /* D ) Overlaid */ | |
152 | |
153 /* This pair use the same bit. */ | |
154 #define PCRE_NO_AUTO_POSSESS 0x00020000 /* C1 ) Overlaid */ | |
155 #define PCRE_DFA_RESTART 0x00020000 /* D ) Overlaid */ | |
156 | |
157 #define PCRE_FIRSTLINE 0x00040000 /* C3 */ | |
158 #define PCRE_DUPNAMES 0x00080000 /* C1 */ | |
159 #define PCRE_NEWLINE_CR 0x00100000 /* C3 E D */ | |
160 #define PCRE_NEWLINE_LF 0x00200000 /* C3 E D */ | |
161 #define PCRE_NEWLINE_CRLF 0x00300000 /* C3 E D */ | |
162 #define PCRE_NEWLINE_ANY 0x00400000 /* C3 E D */ | |
163 #define PCRE_NEWLINE_ANYCRLF 0x00500000 /* C3 E D */ | |
164 #define PCRE_BSR_ANYCRLF 0x00800000 /* C3 E D */ | |
165 #define PCRE_BSR_UNICODE 0x01000000 /* C3 E D */ | |
166 #define PCRE_JAVASCRIPT_COMPAT 0x02000000 /* C5 */ | |
167 #define PCRE_NO_START_OPTIMIZE 0x04000000 /* C2 E D ) Synonyms */ | |
168 #define PCRE_NO_START_OPTIMISE 0x04000000 /* C2 E D ) */ | |
169 #define PCRE_PARTIAL_HARD 0x08000000 /* E D J */ | |
170 #define PCRE_NOTEMPTY_ATSTART 0x10000000 /* E D J */ | |
171 #define PCRE_UCP 0x20000000 /* C3 */ | |
172 | |
173 /* Exec-time and get/set-time error codes */ | |
174 | |
175 #define PCRE_ERROR_NOMATCH (-1) | |
176 #define PCRE_ERROR_NULL (-2) | |
177 #define PCRE_ERROR_BADOPTION (-3) | |
178 #define PCRE_ERROR_BADMAGIC (-4) | |
179 #define PCRE_ERROR_UNKNOWN_OPCODE (-5) | |
180 #define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */ | |
181 #define PCRE_ERROR_NOMEMORY (-6) | |
182 #define PCRE_ERROR_NOSUBSTRING (-7) | |
183 #define PCRE_ERROR_MATCHLIMIT (-8) | |
184 #define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */ | |
185 #define PCRE_ERROR_BADUTF8 (-10) /* Same for 8/16/32 */ | |
186 #define PCRE_ERROR_BADUTF16 (-10) /* Same for 8/16/32 */ | |
187 #define PCRE_ERROR_BADUTF32 (-10) /* Same for 8/16/32 */ | |
188 #define PCRE_ERROR_BADUTF8_OFFSET (-11) /* Same for 8/16 */ | |
189 #define PCRE_ERROR_BADUTF16_OFFSET (-11) /* Same for 8/16 */ | |
190 #define PCRE_ERROR_PARTIAL (-12) | |
191 #define PCRE_ERROR_BADPARTIAL (-13) | |
192 #define PCRE_ERROR_INTERNAL (-14) | |
193 #define PCRE_ERROR_BADCOUNT (-15) | |
194 #define PCRE_ERROR_DFA_UITEM (-16) | |
195 #define PCRE_ERROR_DFA_UCOND (-17) | |
196 #define PCRE_ERROR_DFA_UMLIMIT (-18) | |
197 #define PCRE_ERROR_DFA_WSSIZE (-19) | |
198 #define PCRE_ERROR_DFA_RECURSE (-20) | |
199 #define PCRE_ERROR_RECURSIONLIMIT (-21) | |
200 #define PCRE_ERROR_NULLWSLIMIT (-22) /* No longer actually used */ | |
201 #define PCRE_ERROR_BADNEWLINE (-23) | |
202 #define PCRE_ERROR_BADOFFSET (-24) | |
203 #define PCRE_ERROR_SHORTUTF8 (-25) | |
204 #define PCRE_ERROR_SHORTUTF16 (-25) /* Same for 8/16 */ | |
205 #define PCRE_ERROR_RECURSELOOP (-26) | |
206 #define PCRE_ERROR_JIT_STACKLIMIT (-27) | |
207 #define PCRE_ERROR_BADMODE (-28) | |
208 #define PCRE_ERROR_BADENDIANNESS (-29) | |
209 #define PCRE_ERROR_DFA_BADRESTART (-30) | |
210 #define PCRE_ERROR_JIT_BADOPTION (-31) | |
211 #define PCRE_ERROR_BADLENGTH (-32) | |
212 #define PCRE_ERROR_UNSET (-33) | |
213 | |
214 /* Specific error codes for UTF-8 validity checks */ | |
215 | |
216 #define PCRE_UTF8_ERR0 0 | |
217 #define PCRE_UTF8_ERR1 1 | |
218 #define PCRE_UTF8_ERR2 2 | |
219 #define PCRE_UTF8_ERR3 3 | |
220 #define PCRE_UTF8_ERR4 4 | |
221 #define PCRE_UTF8_ERR5 5 | |
222 #define PCRE_UTF8_ERR6 6 | |
223 #define PCRE_UTF8_ERR7 7 | |
224 #define PCRE_UTF8_ERR8 8 | |
225 #define PCRE_UTF8_ERR9 9 | |
226 #define PCRE_UTF8_ERR10 10 | |
227 #define PCRE_UTF8_ERR11 11 | |
228 #define PCRE_UTF8_ERR12 12 | |
229 #define PCRE_UTF8_ERR13 13 | |
230 #define PCRE_UTF8_ERR14 14 | |
231 #define PCRE_UTF8_ERR15 15 | |
232 #define PCRE_UTF8_ERR16 16 | |
233 #define PCRE_UTF8_ERR17 17 | |
234 #define PCRE_UTF8_ERR18 18 | |
235 #define PCRE_UTF8_ERR19 19 | |
236 #define PCRE_UTF8_ERR20 20 | |
237 #define PCRE_UTF8_ERR21 21 | |
238 #define PCRE_UTF8_ERR22 22 /* Unused (was non-character) */ | |
239 | |
240 /* Specific error codes for UTF-16 validity checks */ | |
241 | |
242 #define PCRE_UTF16_ERR0 0 | |
243 #define PCRE_UTF16_ERR1 1 | |
244 #define PCRE_UTF16_ERR2 2 | |
245 #define PCRE_UTF16_ERR3 3 | |
246 #define PCRE_UTF16_ERR4 4 /* Unused (was non-character) */ | |
247 | |
248 /* Specific error codes for UTF-32 validity checks */ | |
249 | |
250 #define PCRE_UTF32_ERR0 0 | |
251 #define PCRE_UTF32_ERR1 1 | |
252 #define PCRE_UTF32_ERR2 2 /* Unused (was non-character) */ | |
253 #define PCRE_UTF32_ERR3 3 | |
254 | |
255 /* Request types for pcre_fullinfo() */ | |
256 | |
257 #define PCRE_INFO_OPTIONS 0 | |
258 #define PCRE_INFO_SIZE 1 | |
259 #define PCRE_INFO_CAPTURECOUNT 2 | |
260 #define PCRE_INFO_BACKREFMAX 3 | |
261 #define PCRE_INFO_FIRSTBYTE 4 | |
262 #define PCRE_INFO_FIRSTCHAR 4 /* For backwards compatibility */ | |
263 #define PCRE_INFO_FIRSTTABLE 5 | |
264 #define PCRE_INFO_LASTLITERAL 6 | |
265 #define PCRE_INFO_NAMEENTRYSIZE 7 | |
266 #define PCRE_INFO_NAMECOUNT 8 | |
267 #define PCRE_INFO_NAMETABLE 9 | |
268 #define PCRE_INFO_STUDYSIZE 10 | |
269 #define PCRE_INFO_DEFAULT_TABLES 11 | |
270 #define PCRE_INFO_OKPARTIAL 12 | |
271 #define PCRE_INFO_JCHANGED 13 | |
272 #define PCRE_INFO_HASCRORLF 14 | |
273 #define PCRE_INFO_MINLENGTH 15 | |
274 #define PCRE_INFO_JIT 16 | |
275 #define PCRE_INFO_JITSIZE 17 | |
276 #define PCRE_INFO_MAXLOOKBEHIND 18 | |
277 #define PCRE_INFO_FIRSTCHARACTER 19 | |
278 #define PCRE_INFO_FIRSTCHARACTERFLAGS 20 | |
279 #define PCRE_INFO_REQUIREDCHAR 21 | |
280 #define PCRE_INFO_REQUIREDCHARFLAGS 22 | |
281 #define PCRE_INFO_MATCHLIMIT 23 | |
282 #define PCRE_INFO_RECURSIONLIMIT 24 | |
283 #define PCRE_INFO_MATCH_EMPTY 25 | |
284 | |
285 /* Request types for pcre_config(). Do not re-arrange, in order to remain | |
286 compatible. */ | |
287 | |
288 #define PCRE_CONFIG_UTF8 0 | |
289 #define PCRE_CONFIG_NEWLINE 1 | |
290 #define PCRE_CONFIG_LINK_SIZE 2 | |
291 #define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD 3 | |
292 #define PCRE_CONFIG_MATCH_LIMIT 4 | |
293 #define PCRE_CONFIG_STACKRECURSE 5 | |
294 #define PCRE_CONFIG_UNICODE_PROPERTIES 6 | |
295 #define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7 | |
296 #define PCRE_CONFIG_BSR 8 | |
297 #define PCRE_CONFIG_JIT 9 | |
298 #define PCRE_CONFIG_UTF16 10 | |
299 #define PCRE_CONFIG_JITTARGET 11 | |
300 #define PCRE_CONFIG_UTF32 12 | |
301 #define PCRE_CONFIG_PARENS_LIMIT 13 | |
302 | |
303 /* Request types for pcre_study(). Do not re-arrange, in order to remain | |
304 compatible. */ | |
305 | |
306 #define PCRE_STUDY_JIT_COMPILE 0x0001 | |
307 #define PCRE_STUDY_JIT_PARTIAL_SOFT_COMPILE 0x0002 | |
308 #define PCRE_STUDY_JIT_PARTIAL_HARD_COMPILE 0x0004 | |
309 #define PCRE_STUDY_EXTRA_NEEDED 0x0008 | |
310 | |
311 /* Bit flags for the pcre[16|32]_extra structure. Do not re-arrange or redefine | |
312 these bits, just add new ones on the end, in order to remain compatible. */ | |
313 | |
314 #define PCRE_EXTRA_STUDY_DATA 0x0001 | |
315 #define PCRE_EXTRA_MATCH_LIMIT 0x0002 | |
316 #define PCRE_EXTRA_CALLOUT_DATA 0x0004 | |
317 #define PCRE_EXTRA_TABLES 0x0008 | |
318 #define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010 | |
319 #define PCRE_EXTRA_MARK 0x0020 | |
320 #define PCRE_EXTRA_EXECUTABLE_JIT 0x0040 | |
321 | |
322 /* Types */ | |
323 | |
324 struct real_pcre8_or_16; /* declaration; the definition is private */ | |
325 typedef struct real_pcre8_or_16 pcre; | |
326 | |
327 struct real_pcre8_or_16; /* declaration; the definition is private */ | |
328 typedef struct real_pcre8_or_16 pcre16; | |
329 | |
330 struct real_pcre32; /* declaration; the definition is private */ | |
331 typedef struct real_pcre32 pcre32; | |
332 | |
333 struct real_pcre_jit_stack; /* declaration; the definition is private */ | |
334 typedef struct real_pcre_jit_stack pcre_jit_stack; | |
335 | |
336 struct real_pcre16_jit_stack; /* declaration; the definition is private */ | |
337 typedef struct real_pcre16_jit_stack pcre16_jit_stack; | |
338 | |
339 struct real_pcre32_jit_stack; /* declaration; the definition is private */ | |
340 typedef struct real_pcre32_jit_stack pcre32_jit_stack; | |
341 | |
342 /* If PCRE is compiled with 16 bit character support, PCRE_UCHAR16 must contain | |
343 a 16 bit wide signed data type. Otherwise it can be a dummy data type since | |
344 pcre16 functions are not implemented. There is a check for this in pcre_internal.h. */ | |
345 #ifndef PCRE_UCHAR16 | |
346 #define PCRE_UCHAR16 unsigned short | |
347 #endif | |
348 | |
349 #ifndef PCRE_SPTR16 | |
350 #define PCRE_SPTR16 const PCRE_UCHAR16 * | |
351 #endif | |
352 | |
353 /* If PCRE is compiled with 32 bit character support, PCRE_UCHAR32 must contain | |
354 a 32 bit wide signed data type. Otherwise it can be a dummy data type since | |
355 pcre32 functions are not implemented. There is a check for this in pcre_internal.h. */ | |
356 #ifndef PCRE_UCHAR32 | |
357 #define PCRE_UCHAR32 unsigned int | |
358 #endif | |
359 | |
360 #ifndef PCRE_SPTR32 | |
361 #define PCRE_SPTR32 const PCRE_UCHAR32 * | |
362 #endif | |
363 | |
364 /* When PCRE is compiled as a C++ library, the subject pointer type can be | |
365 replaced with a custom type. For conventional use, the public interface is a | |
366 const char *. */ | |
367 | |
368 #ifndef PCRE_SPTR | |
369 #define PCRE_SPTR const char * | |
370 #endif | |
371 | |
372 /* The structure for passing additional data to pcre_exec(). This is defined in | |
373 such as way as to be extensible. Always add new fields at the end, in order to | |
374 remain compatible. */ | |
375 | |
376 typedef struct pcre_extra { | |
377 unsigned long int flags; /* Bits for which fields are set */ | |
378 void *study_data; /* Opaque data from pcre_study() */ | |
379 unsigned long int match_limit; /* Maximum number of calls to match() */ | |
380 void *callout_data; /* Data passed back in callouts */ | |
381 const unsigned char *tables; /* Pointer to character tables */ | |
382 unsigned long int match_limit_recursion; /* Max recursive calls to match() */ | |
383 unsigned char **mark; /* For passing back a mark pointer */ | |
384 void *executable_jit; /* Contains a pointer to a compiled jit code */ | |
385 } pcre_extra; | |
386 | |
387 /* Same structure as above, but with 16 bit char pointers. */ | |
388 | |
389 typedef struct pcre16_extra { | |
390 unsigned long int flags; /* Bits for which fields are set */ | |
391 void *study_data; /* Opaque data from pcre_study() */ | |
392 unsigned long int match_limit; /* Maximum number of calls to match() */ | |
393 void *callout_data; /* Data passed back in callouts */ | |
394 const unsigned char *tables; /* Pointer to character tables */ | |
395 unsigned long int match_limit_recursion; /* Max recursive calls to match() */ | |
396 PCRE_UCHAR16 **mark; /* For passing back a mark pointer */ | |
397 void *executable_jit; /* Contains a pointer to a compiled jit code */ | |
398 } pcre16_extra; | |
399 | |
400 /* Same structure as above, but with 32 bit char pointers. */ | |
401 | |
402 typedef struct pcre32_extra { | |
403 unsigned long int flags; /* Bits for which fields are set */ | |
404 void *study_data; /* Opaque data from pcre_study() */ | |
405 unsigned long int match_limit; /* Maximum number of calls to match() */ | |
406 void *callout_data; /* Data passed back in callouts */ | |
407 const unsigned char *tables; /* Pointer to character tables */ | |
408 unsigned long int match_limit_recursion; /* Max recursive calls to match() */ | |
409 PCRE_UCHAR32 **mark; /* For passing back a mark pointer */ | |
410 void *executable_jit; /* Contains a pointer to a compiled jit code */ | |
411 } pcre32_extra; | |
412 | |
413 /* The structure for passing out data via the pcre_callout_function. We use a | |
414 structure so that new fields can be added on the end in future versions, | |
415 without changing the API of the function, thereby allowing old clients to work | |
416 without modification. */ | |
417 | |
418 typedef struct pcre_callout_block { | |
419 int version; /* Identifies version of block */ | |
420 /* ------------------------ Version 0 ------------------------------- */ | |
421 int callout_number; /* Number compiled into pattern */ | |
422 int *offset_vector; /* The offset vector */ | |
423 PCRE_SPTR subject; /* The subject being matched */ | |
424 int subject_length; /* The length of the subject */ | |
425 int start_match; /* Offset to start of this match attempt */ | |
426 int current_position; /* Where we currently are in the subject */ | |
427 int capture_top; /* Max current capture */ | |
428 int capture_last; /* Most recently closed capture */ | |
429 void *callout_data; /* Data passed in with the call */ | |
430 /* ------------------- Added for Version 1 -------------------------- */ | |
431 int pattern_position; /* Offset to next item in the pattern */ | |
432 int next_item_length; /* Length of next item in the pattern */ | |
433 /* ------------------- Added for Version 2 -------------------------- */ | |
434 const unsigned char *mark; /* Pointer to current mark or NULL */ | |
435 /* ------------------------------------------------------------------ */ | |
436 } pcre_callout_block; | |
437 | |
438 /* Same structure as above, but with 16 bit char pointers. */ | |
439 | |
440 typedef struct pcre16_callout_block { | |
441 int version; /* Identifies version of block */ | |
442 /* ------------------------ Version 0 ------------------------------- */ | |
443 int callout_number; /* Number compiled into pattern */ | |
444 int *offset_vector; /* The offset vector */ | |
445 PCRE_SPTR16 subject; /* The subject being matched */ | |
446 int subject_length; /* The length of the subject */ | |
447 int start_match; /* Offset to start of this match attempt */ | |
448 int current_position; /* Where we currently are in the subject */ | |
449 int capture_top; /* Max current capture */ | |
450 int capture_last; /* Most recently closed capture */ | |
451 void *callout_data; /* Data passed in with the call */ | |
452 /* ------------------- Added for Version 1 -------------------------- */ | |
453 int pattern_position; /* Offset to next item in the pattern */ | |
454 int next_item_length; /* Length of next item in the pattern */ | |
455 /* ------------------- Added for Version 2 -------------------------- */ | |
456 const PCRE_UCHAR16 *mark; /* Pointer to current mark or NULL */ | |
457 /* ------------------------------------------------------------------ */ | |
458 } pcre16_callout_block; | |
459 | |
460 /* Same structure as above, but with 32 bit char pointers. */ | |
461 | |
462 typedef struct pcre32_callout_block { | |
463 int version; /* Identifies version of block */ | |
464 /* ------------------------ Version 0 ------------------------------- */ | |
465 int callout_number; /* Number compiled into pattern */ | |
466 int *offset_vector; /* The offset vector */ | |
467 PCRE_SPTR32 subject; /* The subject being matched */ | |
468 int subject_length; /* The length of the subject */ | |
469 int start_match; /* Offset to start of this match attempt */ | |
470 int current_position; /* Where we currently are in the subject */ | |
471 int capture_top; /* Max current capture */ | |
472 int capture_last; /* Most recently closed capture */ | |
473 void *callout_data; /* Data passed in with the call */ | |
474 /* ------------------- Added for Version 1 -------------------------- */ | |
475 int pattern_position; /* Offset to next item in the pattern */ | |
476 int next_item_length; /* Length of next item in the pattern */ | |
477 /* ------------------- Added for Version 2 -------------------------- */ | |
478 const PCRE_UCHAR32 *mark; /* Pointer to current mark or NULL */ | |
479 /* ------------------------------------------------------------------ */ | |
480 } pcre32_callout_block; | |
481 | |
482 /* Indirection for store get and free functions. These can be set to | |
483 alternative malloc/free functions if required. Special ones are used in the | |
484 non-recursive case for "frames". There is also an optional callout function | |
485 that is triggered by the (?) regex item. For Virtual Pascal, these definitions | |
486 have to take another form. */ | |
487 | |
488 #ifndef VPCOMPAT | |
489 PCRE_EXP_DECL void *(*pcre_malloc)(size_t); | |
490 PCRE_EXP_DECL void (*pcre_free)(void *); | |
491 PCRE_EXP_DECL void *(*pcre_stack_malloc)(size_t); | |
492 PCRE_EXP_DECL void (*pcre_stack_free)(void *); | |
493 PCRE_EXP_DECL int (*pcre_callout)(pcre_callout_block *); | |
494 PCRE_EXP_DECL int (*pcre_stack_guard)(void); | |
495 | |
496 PCRE_EXP_DECL void *(*pcre16_malloc)(size_t); | |
497 PCRE_EXP_DECL void (*pcre16_free)(void *); | |
498 PCRE_EXP_DECL void *(*pcre16_stack_malloc)(size_t); | |
499 PCRE_EXP_DECL void (*pcre16_stack_free)(void *); | |
500 PCRE_EXP_DECL int (*pcre16_callout)(pcre16_callout_block *); | |
501 PCRE_EXP_DECL int (*pcre16_stack_guard)(void); | |
502 | |
503 PCRE_EXP_DECL void *(*pcre32_malloc)(size_t); | |
504 PCRE_EXP_DECL void (*pcre32_free)(void *); | |
505 PCRE_EXP_DECL void *(*pcre32_stack_malloc)(size_t); | |
506 PCRE_EXP_DECL void (*pcre32_stack_free)(void *); | |
507 PCRE_EXP_DECL int (*pcre32_callout)(pcre32_callout_block *); | |
508 PCRE_EXP_DECL int (*pcre32_stack_guard)(void); | |
509 #else /* VPCOMPAT */ | |
510 PCRE_EXP_DECL void *pcre_malloc(size_t); | |
511 PCRE_EXP_DECL void pcre_free(void *); | |
512 PCRE_EXP_DECL void *pcre_stack_malloc(size_t); | |
513 PCRE_EXP_DECL void pcre_stack_free(void *); | |
514 PCRE_EXP_DECL int pcre_callout(pcre_callout_block *); | |
515 PCRE_EXP_DECL int pcre_stack_guard(void); | |
516 | |
517 PCRE_EXP_DECL void *pcre16_malloc(size_t); | |
518 PCRE_EXP_DECL void pcre16_free(void *); | |
519 PCRE_EXP_DECL void *pcre16_stack_malloc(size_t); | |
520 PCRE_EXP_DECL void pcre16_stack_free(void *); | |
521 PCRE_EXP_DECL int pcre16_callout(pcre16_callout_block *); | |
522 PCRE_EXP_DECL int pcre16_stack_guard(void); | |
523 | |
524 PCRE_EXP_DECL void *pcre32_malloc(size_t); | |
525 PCRE_EXP_DECL void pcre32_free(void *); | |
526 PCRE_EXP_DECL void *pcre32_stack_malloc(size_t); | |
527 PCRE_EXP_DECL void pcre32_stack_free(void *); | |
528 PCRE_EXP_DECL int pcre32_callout(pcre32_callout_block *); | |
529 PCRE_EXP_DECL int pcre32_stack_guard(void); | |
530 #endif /* VPCOMPAT */ | |
531 | |
532 /* User defined callback which provides a stack just before the match starts. */ | |
533 | |
534 typedef pcre_jit_stack *(*pcre_jit_callback)(void *); | |
535 typedef pcre16_jit_stack *(*pcre16_jit_callback)(void *); | |
536 typedef pcre32_jit_stack *(*pcre32_jit_callback)(void *); | |
537 | |
538 /* Exported PCRE functions */ | |
539 | |
540 PCRE_EXP_DECL pcre *pcre_compile(const char *, int, const char **, int *, | |
541 const unsigned char *); | |
542 PCRE_EXP_DECL pcre16 *pcre16_compile(PCRE_SPTR16, int, const char **, int *, | |
543 const unsigned char *); | |
544 PCRE_EXP_DECL pcre32 *pcre32_compile(PCRE_SPTR32, int, const char **, int *, | |
545 const unsigned char *); | |
546 PCRE_EXP_DECL pcre *pcre_compile2(const char *, int, int *, const char **, | |
547 int *, const unsigned char *); | |
548 PCRE_EXP_DECL pcre16 *pcre16_compile2(PCRE_SPTR16, int, int *, const char **, | |
549 int *, const unsigned char *); | |
550 PCRE_EXP_DECL pcre32 *pcre32_compile2(PCRE_SPTR32, int, int *, const char **, | |
551 int *, const unsigned char *); | |
552 PCRE_EXP_DECL int pcre_config(int, void *); | |
553 PCRE_EXP_DECL int pcre16_config(int, void *); | |
554 PCRE_EXP_DECL int pcre32_config(int, void *); | |
555 PCRE_EXP_DECL int pcre_copy_named_substring(const pcre *, const char *, | |
556 int *, int, const char *, char *, int); | |
557 PCRE_EXP_DECL int pcre16_copy_named_substring(const pcre16 *, PCRE_SPTR16, | |
558 int *, int, PCRE_SPTR16, PCRE_UCHAR16 *, int); | |
559 PCRE_EXP_DECL int pcre32_copy_named_substring(const pcre32 *, PCRE_SPTR32, | |
560 int *, int, PCRE_SPTR32, PCRE_UCHAR32 *, int); | |
561 PCRE_EXP_DECL int pcre_copy_substring(const char *, int *, int, int, | |
562 char *, int); | |
563 PCRE_EXP_DECL int pcre16_copy_substring(PCRE_SPTR16, int *, int, int, | |
564 PCRE_UCHAR16 *, int); | |
565 PCRE_EXP_DECL int pcre32_copy_substring(PCRE_SPTR32, int *, int, int, | |
566 PCRE_UCHAR32 *, int); | |
567 PCRE_EXP_DECL int pcre_dfa_exec(const pcre *, const pcre_extra *, | |
568 const char *, int, int, int, int *, int , int *, int); | |
569 PCRE_EXP_DECL int pcre16_dfa_exec(const pcre16 *, const pcre16_extra *, | |
570 PCRE_SPTR16, int, int, int, int *, int , int *, int); | |
571 PCRE_EXP_DECL int pcre32_dfa_exec(const pcre32 *, const pcre32_extra *, | |
572 PCRE_SPTR32, int, int, int, int *, int , int *, int); | |
573 PCRE_EXP_DECL int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR, | |
574 int, int, int, int *, int); | |
575 PCRE_EXP_DECL int pcre16_exec(const pcre16 *, const pcre16_extra *, | |
576 PCRE_SPTR16, int, int, int, int *, int); | |
577 PCRE_EXP_DECL int pcre32_exec(const pcre32 *, const pcre32_extra *, | |
578 PCRE_SPTR32, int, int, int, int *, int); | |
579 PCRE_EXP_DECL int pcre_jit_exec(const pcre *, const pcre_extra *, | |
580 PCRE_SPTR, int, int, int, int *, int, | |
581 pcre_jit_stack *); | |
582 PCRE_EXP_DECL int pcre16_jit_exec(const pcre16 *, const pcre16_extra *, | |
583 PCRE_SPTR16, int, int, int, int *, int, | |
584 pcre16_jit_stack *); | |
585 PCRE_EXP_DECL int pcre32_jit_exec(const pcre32 *, const pcre32_extra *, | |
586 PCRE_SPTR32, int, int, int, int *, int, | |
587 pcre32_jit_stack *); | |
588 PCRE_EXP_DECL void pcre_free_substring(const char *); | |
589 PCRE_EXP_DECL void pcre16_free_substring(PCRE_SPTR16); | |
590 PCRE_EXP_DECL void pcre32_free_substring(PCRE_SPTR32); | |
591 PCRE_EXP_DECL void pcre_free_substring_list(const char **); | |
592 PCRE_EXP_DECL void pcre16_free_substring_list(PCRE_SPTR16 *); | |
593 PCRE_EXP_DECL void pcre32_free_substring_list(PCRE_SPTR32 *); | |
594 PCRE_EXP_DECL int pcre_fullinfo(const pcre *, const pcre_extra *, int, | |
595 void *); | |
596 PCRE_EXP_DECL int pcre16_fullinfo(const pcre16 *, const pcre16_extra *, int, | |
597 void *); | |
598 PCRE_EXP_DECL int pcre32_fullinfo(const pcre32 *, const pcre32_extra *, int, | |
599 void *); | |
600 PCRE_EXP_DECL int pcre_get_named_substring(const pcre *, const char *, | |
601 int *, int, const char *, const char **); | |
602 PCRE_EXP_DECL int pcre16_get_named_substring(const pcre16 *, PCRE_SPTR16, | |
603 int *, int, PCRE_SPTR16, PCRE_SPTR16 *); | |
604 PCRE_EXP_DECL int pcre32_get_named_substring(const pcre32 *, PCRE_SPTR32, | |
605 int *, int, PCRE_SPTR32, PCRE_SPTR32 *); | |
606 PCRE_EXP_DECL int pcre_get_stringnumber(const pcre *, const char *); | |
607 PCRE_EXP_DECL int pcre16_get_stringnumber(const pcre16 *, PCRE_SPTR16); | |
608 PCRE_EXP_DECL int pcre32_get_stringnumber(const pcre32 *, PCRE_SPTR32); | |
609 PCRE_EXP_DECL int pcre_get_stringtable_entries(const pcre *, const char *, | |
610 char **, char **); | |
611 PCRE_EXP_DECL int pcre16_get_stringtable_entries(const pcre16 *, PCRE_SPTR16, | |
612 PCRE_UCHAR16 **, PCRE_UCHAR16 **); | |
613 PCRE_EXP_DECL int pcre32_get_stringtable_entries(const pcre32 *, PCRE_SPTR32, | |
614 PCRE_UCHAR32 **, PCRE_UCHAR32 **); | |
615 PCRE_EXP_DECL int pcre_get_substring(const char *, int *, int, int, | |
616 const char **); | |
617 PCRE_EXP_DECL int pcre16_get_substring(PCRE_SPTR16, int *, int, int, | |
618 PCRE_SPTR16 *); | |
619 PCRE_EXP_DECL int pcre32_get_substring(PCRE_SPTR32, int *, int, int, | |
620 PCRE_SPTR32 *); | |
621 PCRE_EXP_DECL int pcre_get_substring_list(const char *, int *, int, | |
622 const char ***); | |
623 PCRE_EXP_DECL int pcre16_get_substring_list(PCRE_SPTR16, int *, int, | |
624 PCRE_SPTR16 **); | |
625 PCRE_EXP_DECL int pcre32_get_substring_list(PCRE_SPTR32, int *, int, | |
626 PCRE_SPTR32 **); | |
627 PCRE_EXP_DECL const unsigned char *pcre_maketables(void); | |
628 PCRE_EXP_DECL const unsigned char *pcre16_maketables(void); | |
629 PCRE_EXP_DECL const unsigned char *pcre32_maketables(void); | |
630 PCRE_EXP_DECL int pcre_refcount(pcre *, int); | |
631 PCRE_EXP_DECL int pcre16_refcount(pcre16 *, int); | |
632 PCRE_EXP_DECL int pcre32_refcount(pcre32 *, int); | |
633 PCRE_EXP_DECL pcre_extra *pcre_study(const pcre *, int, const char **); | |
634 PCRE_EXP_DECL pcre16_extra *pcre16_study(const pcre16 *, int, const char **); | |
635 PCRE_EXP_DECL pcre32_extra *pcre32_study(const pcre32 *, int, const char **); | |
636 PCRE_EXP_DECL void pcre_free_study(pcre_extra *); | |
637 PCRE_EXP_DECL void pcre16_free_study(pcre16_extra *); | |
638 PCRE_EXP_DECL void pcre32_free_study(pcre32_extra *); | |
639 PCRE_EXP_DECL const char *pcre_version(void); | |
640 PCRE_EXP_DECL const char *pcre16_version(void); | |
641 PCRE_EXP_DECL const char *pcre32_version(void); | |
642 | |
643 /* Utility functions for byte order swaps. */ | |
644 PCRE_EXP_DECL int pcre_pattern_to_host_byte_order(pcre *, pcre_extra *, | |
645 const unsigned char *); | |
646 PCRE_EXP_DECL int pcre16_pattern_to_host_byte_order(pcre16 *, pcre16_extra *, | |
647 const unsigned char *); | |
648 PCRE_EXP_DECL int pcre32_pattern_to_host_byte_order(pcre32 *, pcre32_extra *, | |
649 const unsigned char *); | |
650 PCRE_EXP_DECL int pcre16_utf16_to_host_byte_order(PCRE_UCHAR16 *, | |
651 PCRE_SPTR16, int, int *, int); | |
652 PCRE_EXP_DECL int pcre32_utf32_to_host_byte_order(PCRE_UCHAR32 *, | |
653 PCRE_SPTR32, int, int *, int); | |
654 | |
655 /* JIT compiler related functions. */ | |
656 | |
657 PCRE_EXP_DECL pcre_jit_stack *pcre_jit_stack_alloc(int, int); | |
658 PCRE_EXP_DECL pcre16_jit_stack *pcre16_jit_stack_alloc(int, int); | |
659 PCRE_EXP_DECL pcre32_jit_stack *pcre32_jit_stack_alloc(int, int); | |
660 PCRE_EXP_DECL void pcre_jit_stack_free(pcre_jit_stack *); | |
661 PCRE_EXP_DECL void pcre16_jit_stack_free(pcre16_jit_stack *); | |
662 PCRE_EXP_DECL void pcre32_jit_stack_free(pcre32_jit_stack *); | |
663 PCRE_EXP_DECL void pcre_assign_jit_stack(pcre_extra *, | |
664 pcre_jit_callback, void *); | |
665 PCRE_EXP_DECL void pcre16_assign_jit_stack(pcre16_extra *, | |
666 pcre16_jit_callback, void *); | |
667 PCRE_EXP_DECL void pcre32_assign_jit_stack(pcre32_extra *, | |
668 pcre32_jit_callback, void *); | |
669 PCRE_EXP_DECL void pcre_jit_free_unused_memory(void); | |
670 PCRE_EXP_DECL void pcre16_jit_free_unused_memory(void); | |
671 PCRE_EXP_DECL void pcre32_jit_free_unused_memory(void); | |
672 | |
673 #ifdef __cplusplus | |
674 } /* extern "C" */ | |
675 #endif | |
676 | |
677 #endif /* End of pcre.h */ |