Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/pcreposix.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 #ifndef _PCREPOSIX_H | |
6 #define _PCREPOSIX_H | |
7 | |
8 /* This is the header for the POSIX wrapper interface to the PCRE Perl- | |
9 Compatible Regular Expression library. It defines the things POSIX says should | |
10 be there. I hope. | |
11 | |
12 Copyright (c) 1997-2012 University of Cambridge | |
13 | |
14 ----------------------------------------------------------------------------- | |
15 Redistribution and use in source and binary forms, with or without | |
16 modification, are permitted provided that the following conditions are met: | |
17 | |
18 * Redistributions of source code must retain the above copyright notice, | |
19 this list of conditions and the following disclaimer. | |
20 | |
21 * Redistributions in binary form must reproduce the above copyright | |
22 notice, this list of conditions and the following disclaimer in the | |
23 documentation and/or other materials provided with the distribution. | |
24 | |
25 * Neither the name of the University of Cambridge nor the names of its | |
26 contributors may be used to endorse or promote products derived from | |
27 this software without specific prior written permission. | |
28 | |
29 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
30 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
31 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
32 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
33 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
34 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
35 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
36 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
37 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
38 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
39 POSSIBILITY OF SUCH DAMAGE. | |
40 ----------------------------------------------------------------------------- | |
41 */ | |
42 | |
43 /* Have to include stdlib.h in order to ensure that size_t is defined. */ | |
44 | |
45 #include <stdlib.h> | |
46 | |
47 /* Allow for C++ users */ | |
48 | |
49 #ifdef __cplusplus | |
50 extern "C" { | |
51 #endif | |
52 | |
53 /* Options, mostly defined by POSIX, but with some extras. */ | |
54 | |
55 #define REG_ICASE 0x0001 /* Maps to PCRE_CASELESS */ | |
56 #define REG_NEWLINE 0x0002 /* Maps to PCRE_MULTILINE */ | |
57 #define REG_NOTBOL 0x0004 /* Maps to PCRE_NOTBOL */ | |
58 #define REG_NOTEOL 0x0008 /* Maps to PCRE_NOTEOL */ | |
59 #define REG_DOTALL 0x0010 /* NOT defined by POSIX; maps to PCRE_DOTALL */ | |
60 #define REG_NOSUB 0x0020 /* Maps to PCRE_NO_AUTO_CAPTURE */ | |
61 #define REG_UTF8 0x0040 /* NOT defined by POSIX; maps to PCRE_UTF8 */ | |
62 #define REG_STARTEND 0x0080 /* BSD feature: pass subject string by so,eo */ | |
63 #define REG_NOTEMPTY 0x0100 /* NOT defined by POSIX; maps to PCRE_NOTEMPTY */ | |
64 #define REG_UNGREEDY 0x0200 /* NOT defined by POSIX; maps to PCRE_UNGREEDY */ | |
65 #define REG_UCP 0x0400 /* NOT defined by POSIX; maps to PCRE_UCP */ | |
66 | |
67 /* This is not used by PCRE, but by defining it we make it easier | |
68 to slot PCRE into existing programs that make POSIX calls. */ | |
69 | |
70 #define REG_EXTENDED 0 | |
71 | |
72 /* Error values. Not all these are relevant or used by the wrapper. */ | |
73 | |
74 enum { | |
75 REG_ASSERT = 1, /* internal error ? */ | |
76 REG_BADBR, /* invalid repeat counts in {} */ | |
77 REG_BADPAT, /* pattern error */ | |
78 REG_BADRPT, /* ? * + invalid */ | |
79 REG_EBRACE, /* unbalanced {} */ | |
80 REG_EBRACK, /* unbalanced [] */ | |
81 REG_ECOLLATE, /* collation error - not relevant */ | |
82 REG_ECTYPE, /* bad class */ | |
83 REG_EESCAPE, /* bad escape sequence */ | |
84 REG_EMPTY, /* empty expression */ | |
85 REG_EPAREN, /* unbalanced () */ | |
86 REG_ERANGE, /* bad range inside [] */ | |
87 REG_ESIZE, /* expression too big */ | |
88 REG_ESPACE, /* failed to get memory */ | |
89 REG_ESUBREG, /* bad back reference */ | |
90 REG_INVARG, /* bad argument */ | |
91 REG_NOMATCH /* match failed */ | |
92 }; | |
93 | |
94 | |
95 /* The structure representing a compiled regular expression. */ | |
96 | |
97 typedef struct { | |
98 void *re_pcre; | |
99 size_t re_nsub; | |
100 size_t re_erroffset; | |
101 } regex_t; | |
102 | |
103 /* The structure in which a captured offset is returned. */ | |
104 | |
105 typedef int regoff_t; | |
106 | |
107 typedef struct { | |
108 regoff_t rm_so; | |
109 regoff_t rm_eo; | |
110 } regmatch_t; | |
111 | |
112 /* When an application links to a PCRE DLL in Windows, the symbols that are | |
113 imported have to be identified as such. When building PCRE, the appropriate | |
114 export settings are needed, and are set in pcreposix.c before including this | |
115 file. */ | |
116 | |
117 #if defined(_WIN32) && !defined(PCRE_STATIC) && !defined(PCREPOSIX_EXP_DECL) | |
118 # define PCREPOSIX_EXP_DECL extern __declspec(dllimport) | |
119 # define PCREPOSIX_EXP_DEFN __declspec(dllimport) | |
120 #endif | |
121 | |
122 /* By default, we use the standard "extern" declarations. */ | |
123 | |
124 #ifndef PCREPOSIX_EXP_DECL | |
125 # ifdef __cplusplus | |
126 # define PCREPOSIX_EXP_DECL extern "C" | |
127 # define PCREPOSIX_EXP_DEFN extern "C" | |
128 # else | |
129 # define PCREPOSIX_EXP_DECL extern | |
130 # define PCREPOSIX_EXP_DEFN extern | |
131 # endif | |
132 #endif | |
133 | |
134 /* The functions */ | |
135 | |
136 PCREPOSIX_EXP_DECL int regcomp(regex_t *, const char *, int); | |
137 PCREPOSIX_EXP_DECL int regexec(const regex_t *, const char *, size_t, | |
138 regmatch_t *, int); | |
139 PCREPOSIX_EXP_DECL size_t regerror(int, const regex_t *, char *, size_t); | |
140 PCREPOSIX_EXP_DECL void regfree(regex_t *); | |
141 | |
142 #ifdef __cplusplus | |
143 } /* extern "C" */ | |
144 #endif | |
145 | |
146 #endif /* End of pcreposix.h */ |