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

Contents of /code/trunk/pcre.in

Parent Directory Parent Directory | Revision Log Revision Log


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

1 nigel 43 /*************************************************
2     * Perl-Compatible Regular Expressions *
3     *************************************************/
4    
5 nigel 63 /* Copyright (c) 1997-2003 University of Cambridge */
6 nigel 43
7     #ifndef _PCRE_H
8     #define _PCRE_H
9    
10 nigel 47 /* The file pcre.h is build by "configure". Do not edit it; instead
11     make changes to pcre.in. */
12    
13 nigel 53 #define PCRE_MAJOR @PCRE_MAJOR@
14     #define PCRE_MINOR @PCRE_MINOR@
15     #define PCRE_DATE @PCRE_DATE@
16 nigel 43
17     /* Win32 uses DLL by default */
18    
19     #ifdef _WIN32
20 nigel 63 # ifdef PCRE_DEFINITION
21     # ifdef DLL_EXPORT
22     # define PCRE_DATA_SCOPE __declspec(dllexport)
23     # endif
24     # else
25     # ifndef PCRE_STATIC
26 nigel 71 # define PCRE_DATA_SCOPE extern __declspec(dllimport)
27 nigel 63 # endif
28     # endif
29 nigel 43 #endif
30 nigel 63 #ifndef PCRE_DATA_SCOPE
31     # define PCRE_DATA_SCOPE extern
32     #endif
33 nigel 43
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 nigel 63 #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 nigel 71 #define PCRE_NO_UTF8_CHECK 0x2000
61 nigel 43
62 nigel 63 /* Exec-time and get/set-time error codes */
63 nigel 43
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 nigel 63 #define PCRE_ERROR_MATCHLIMIT (-8)
72     #define PCRE_ERROR_CALLOUT (-9) /* Never used by PCRE itself */
73 nigel 71 #define PCRE_ERROR_BADUTF8 (-10)
74 nigel 43
75     /* Request types for pcre_fullinfo() */
76    
77 nigel 63 #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 nigel 43
90 nigel 63 /* 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 nigel 43 /* Types */
105    
106 nigel 63 struct real_pcre; /* declaration; the definition is private */
107 nigel 53 typedef struct real_pcre pcre;
108    
109 nigel 63 /* The structure for passing additional data to pcre_exec(). This is defined in
110     such as way as to be extensible. */
111 nigel 43
112 nigel 63 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 nigel 43
119 nigel 63 /* 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 nigel 43
124 nigel 63 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 nigel 43
139 nigel 63 /* 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 nigel 49 extern void pcre_free_substring(const char *);
167     extern void pcre_free_substring_list(const char **);
168 nigel 63 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 nigel 49 extern int pcre_info(const pcre *, int *, int *);
178 nigel 53 extern const unsigned char *pcre_maketables(void);
179 nigel 43 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