Annotation of embedaddon/pcre/pcreposix.h, revision 1.1.1.2
1.1 misho 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:
1.1.1.2 ! misho 12: Copyright (c) 1997-2012 University of Cambridge
1.1 misho 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 */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>