1 | /************************************************* |
---|
2 | * Perl-Compatible Regular Expressions * |
---|
3 | *************************************************/ |
---|
4 | |
---|
5 | /* Copyright (c) 1997-2001 University of Cambridge */ |
---|
6 | |
---|
7 | #ifndef _PCREPOSIX_H |
---|
8 | #define _PCREPOSIX_H |
---|
9 | |
---|
10 | /* This is the header for the POSIX wrapper interface to the PCRE Perl- |
---|
11 | Compatible Regular Expression library. It defines the things POSIX says should |
---|
12 | be there. I hope. */ |
---|
13 | |
---|
14 | /* Have to include stdlib.h in order to ensure that size_t is defined. */ |
---|
15 | |
---|
16 | #include <stdlib.h> |
---|
17 | |
---|
18 | /* Allow for C++ users */ |
---|
19 | |
---|
20 | #ifdef __cplusplus |
---|
21 | extern "C" { |
---|
22 | #endif |
---|
23 | |
---|
24 | /* Options defined by POSIX. */ |
---|
25 | |
---|
26 | #define REG_ICASE 0x01 |
---|
27 | #define REG_NEWLINE 0x02 |
---|
28 | #define REG_NOTBOL 0x04 |
---|
29 | #define REG_NOTEOL 0x08 |
---|
30 | |
---|
31 | /* These are not used by PCRE, but by defining them we make it easier |
---|
32 | to slot PCRE into existing programs that make POSIX calls. */ |
---|
33 | |
---|
34 | #define REG_EXTENDED 0 |
---|
35 | #define REG_NOSUB 0 |
---|
36 | |
---|
37 | /* Error values. Not all these are relevant or used by the wrapper. */ |
---|
38 | |
---|
39 | enum { |
---|
40 | REG_ASSERT = 1, /* internal error ? */ |
---|
41 | REG_BADBR, /* invalid repeat counts in {} */ |
---|
42 | REG_BADPAT, /* pattern error */ |
---|
43 | REG_BADRPT, /* ? * + invalid */ |
---|
44 | REG_EBRACE, /* unbalanced {} */ |
---|
45 | REG_EBRACK, /* unbalanced [] */ |
---|
46 | REG_ECOLLATE, /* collation error - not relevant */ |
---|
47 | REG_ECTYPE, /* bad class */ |
---|
48 | REG_EESCAPE, /* bad escape sequence */ |
---|
49 | REG_EMPTY, /* empty expression */ |
---|
50 | REG_EPAREN, /* unbalanced () */ |
---|
51 | REG_ERANGE, /* bad range inside [] */ |
---|
52 | REG_ESIZE, /* expression too big */ |
---|
53 | REG_ESPACE, /* failed to get memory */ |
---|
54 | REG_ESUBREG, /* bad back reference */ |
---|
55 | REG_INVARG, /* bad argument */ |
---|
56 | REG_NOMATCH /* match failed */ |
---|
57 | }; |
---|
58 | |
---|
59 | |
---|
60 | /* The structure representing a compiled regular expression. */ |
---|
61 | |
---|
62 | typedef struct { |
---|
63 | void *re_pcre; |
---|
64 | size_t re_nsub; |
---|
65 | size_t re_erroffset; |
---|
66 | } regex_t; |
---|
67 | |
---|
68 | /* The structure in which a captured offset is returned. */ |
---|
69 | |
---|
70 | typedef int regoff_t; |
---|
71 | |
---|
72 | typedef struct { |
---|
73 | regoff_t rm_so; |
---|
74 | regoff_t rm_eo; |
---|
75 | } regmatch_t; |
---|
76 | |
---|
77 | /* The functions */ |
---|
78 | |
---|
79 | extern int regcomp(regex_t *, const char *, int); |
---|
80 | extern int regexec(regex_t *, const char *, size_t, regmatch_t *, int); |
---|
81 | extern size_t regerror(int, const regex_t *, char *, size_t); |
---|
82 | extern void regfree(regex_t *); |
---|
83 | |
---|
84 | #ifdef __cplusplus |
---|
85 | } /* extern "C" */ |
---|
86 | #endif |
---|
87 | |
---|
88 | #endif /* End of pcreposix.h */ |
---|