/[pcre]/code/trunk/pcre.in
ViewVC logotype

Contents of /code/trunk/pcre.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 71 - (show annotations) (download)
Sat Feb 24 21:40:24 2007 UTC (7 years, 7 months ago) by nigel
File size: 6717 byte(s)
Load pcre-4.4 into code/trunk.

1 /*************************************************
2 * Perl-Compatible Regular Expressions *
3 *************************************************/
4
5 /* Copyright (c) 1997-2003 University of Cambridge */
6
7 #ifndef _PCRE_H
8 #define _PCRE_H
9
10 /* The file pcre.h is build by "configure". Do not edit it; instead
11 make changes to pcre.in. */
12
13 #define PCRE_MAJOR @PCRE_MAJOR@
14 #define PCRE_MINOR @PCRE_MINOR@
15 #define PCRE_DATE @PCRE_DATE@
16
17 /* Win32 uses DLL by default */
18
19 #ifdef _WIN32
20 # ifdef PCRE_DEFINITION
21 # ifdef DLL_EXPORT
22 # define PCRE_DATA_SCOPE __declspec(dllexport)
23 # endif
24 # else
25 # ifndef PCRE_STATIC
26 # define PCRE_DATA_SCOPE extern __declspec(dllimport)
27 # endif
28 # endif
29 #endif
30 #ifndef PCRE_DATA_SCOPE
31 # define PCRE_DATA_SCOPE extern
32 #endif
33
34 /* Have to include stdlib.h in order to ensure that size_t is defined;
35 it is needed here for malloc. */
36
37 #include <stdlib.h>
38
39 /* Allow for C++ users */
40
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
45 /* Options */
46
47 #define PCRE_CASELESS 0x0001
48 #define PCRE_MULTILINE 0x0002
49 #define PCRE_DOTALL 0x0004
50 #define PCRE_EXTENDED 0x0008
51 #define PCRE_ANCHORED 0x0010
52 #define PCRE_DOLLAR_ENDONLY 0x0020
53 #define PCRE_EXTRA 0x0040
54 #define PCRE_NOTBOL 0x0080
55 #define PCRE_NOTEOL 0x0100
56 #define PCRE_UNGREEDY 0x0200
57 #define PCRE_NOTEMPTY 0x0400
58 #define PCRE_UTF8 0x0800
59 #define PCRE_NO_AUTO_CAPTURE 0x1000
60 #define PCRE_NO_UTF8_CHECK 0x2000
61
62 /* Exec-time and get/set-time error codes */
63
64 #define PCRE_ERROR_NOMATCH (-1)
65 #define PCRE_ERROR_NULL (-2)
66 #define PCRE_ERROR_BADOPTION (-3)
67 #define PCRE_ERROR_BADMAGIC (-4)
68 #define PCRE_ERROR_UNKNOWN_NODE (-5)
69 #define PCRE_ERROR_NOMEMORY (-6)
70 #define PCRE_ERROR_NOSUBSTRING (-7)
71 #define PCRE_ERROR_MATCHLIMIT (-8)
72 #define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */
73 #define PCRE_ERROR_BADUTF8 (-10)
74
75 /* Request types for pcre_fullinfo() */
76
77 #define PCRE_INFO_OPTIONS 0
78 #define PCRE_INFO_SIZE 1
79 #define PCRE_INFO_CAPTURECOUNT 2
80 #define PCRE_INFO_BACKREFMAX 3
81 #define PCRE_INFO_FIRSTBYTE 4
82 #define PCRE_INFO_FIRSTCHAR 4 /* For backwards compatibility */
83 #define PCRE_INFO_FIRSTTABLE 5
84 #define PCRE_INFO_LASTLITERAL 6
85 #define PCRE_INFO_NAMEENTRYSIZE 7
86 #define PCRE_INFO_NAMECOUNT 8
87 #define PCRE_INFO_NAMETABLE 9
88 #define PCRE_INFO_STUDYSIZE 10
89
90 /* Request types for pcre_config() */
91
92 #define PCRE_CONFIG_UTF8 0
93 #define PCRE_CONFIG_NEWLINE 1
94 #define PCRE_CONFIG_LINK_SIZE 2
95 #define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD 3
96 #define PCRE_CONFIG_MATCH_LIMIT 4
97
98 /* Bit flags for the pcre_extra structure */
99
100 #define PCRE_EXTRA_STUDY_DATA 0x0001
101 #define PCRE_EXTRA_MATCH_LIMIT 0x0002
102 #define PCRE_EXTRA_CALLOUT_DATA 0x0004
103
104 /* Types */
105
106 struct real_pcre; /* declaration; the definition is private */
107 typedef struct real_pcre pcre;
108
109 /* The structure for passing additional data to pcre_exec(). This is defined in
110 such as way as to be extensible. */
111
112 typedef struct pcre_extra {
113 unsigned long int flags; /* Bits for which fields are set */
114 void *study_data; /* Opaque data from pcre_study() */
115 unsigned long int match_limit; /* Maximum number of calls to match() */
116 void *callout_data; /* Data passed back in callouts */
117 } pcre_extra;
118
119 /* The structure for passing out data via the pcre_callout_function. We use a
120 structure so that new fields can be added on the end in future versions,
121 without changing the API of the function, thereby allowing old clients to work
122 without modification. */
123
124 typedef struct pcre_callout_block {
125 int version; /* Identifies version of block */
126 /* ------------------------ Version 0 ------------------------------- */
127 int callout_number; /* Number compiled into pattern */
128 int *offset_vector; /* The offset vector */
129 const char *subject; /* The subject being matched */
130 int subject_length; /* The length of the subject */
131 int start_match; /* Offset to start of this match attempt */
132 int current_position; /* Where we currently are */
133 int capture_top; /* Max current capture */
134 int capture_last; /* Most recently closed capture */
135 void *callout_data; /* Data passed in with the call */
136 /* ------------------------------------------------------------------ */
137 } pcre_callout_block;
138
139 /* Indirection for store get and free functions. These can be set to
140 alternative malloc/free functions if required. There is also an optional
141 callout function that is triggered by the (?) regex item. Some magic is
142 required for Win32 DLL; it is null on other OS. For Virtual Pascal, these
143 have to be different again. */
144
145 #ifndef VPCOMPAT
146 PCRE_DATA_SCOPE void *(*pcre_malloc)(size_t);
147 PCRE_DATA_SCOPE void (*pcre_free)(void *);
148 PCRE_DATA_SCOPE int (*pcre_callout)(pcre_callout_block *);
149 #else /* VPCOMPAT */
150 extern void *pcre_malloc(size_t);
151 extern void pcre_free(void *);
152 extern int pcre_callout(pcre_callout_block *);
153 #endif /* VPCOMPAT */
154
155 /* Exported PCRE functions */
156
157 extern pcre *pcre_compile(const char *, int, const char **,
158 int *, const unsigned char *);
159 extern int pcre_config(int, void *);
160 extern int pcre_copy_named_substring(const pcre *, const char *,
161 int *, int, const char *, char *, int);
162 extern int pcre_copy_substring(const char *, int *, int, int,
163 char *, int);
164 extern int pcre_exec(const pcre *, const pcre_extra *,
165 const char *, int, int, int, int *, int);
166 extern void pcre_free_substring(const char *);
167 extern void pcre_free_substring_list(const char **);
168 extern int pcre_fullinfo(const pcre *, const pcre_extra *, int,
169 void *);
170 extern int pcre_get_named_substring(const pcre *, const char *,
171 int *, int, const char *, const char **);
172 extern int pcre_get_stringnumber(const pcre *, const char *);
173 extern int pcre_get_substring(const char *, int *, int, int,
174 const char **);
175 extern int pcre_get_substring_list(const char *, int *, int,
176 const char ***);
177 extern int pcre_info(const pcre *, int *, int *);
178 extern const unsigned char *pcre_maketables(void);
179 extern pcre_extra *pcre_study(const pcre *, int, const char **);
180 extern const char *pcre_version(void);
181
182 #ifdef __cplusplus
183 } /* extern "C" */
184 #endif
185
186 #endif /* End of pcre.h */

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12