Annotation of embedaddon/php/ext/mbstring/oniguruma/onigposix.h, revision 1.1.1.1
1.1 misho 1: #ifndef ONIGPOSIX_H
2: #define ONIGPOSIX_H
3: /**********************************************************************
4: onigposix.h - Oniguruma (regular expression library)
5: **********************************************************************/
6: /*-
7: * Copyright (c) 2002-2005 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
8: * All rights reserved.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
20: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29: * SUCH DAMAGE.
30: */
31: #include <stdlib.h>
32:
33: #ifdef __cplusplus
34: extern "C" {
35: #endif
36:
37: /* options */
38: #define REG_ICASE (1<<0)
39: #define REG_NEWLINE (1<<1)
40: #define REG_NOTBOL (1<<2)
41: #define REG_NOTEOL (1<<3)
42: #define REG_EXTENDED (1<<4) /* if not setted, Basic Onigular Expression */
43: #define REG_NOSUB (1<<5)
44:
45: /* POSIX error codes */
46: #define REG_NOMATCH 1
47: #define REG_BADPAT 2
48: #define REG_ECOLLATE 3
49: #define REG_ECTYPE 4
50: #define REG_EESCAPE 5
51: #define REG_ESUBREG 6
52: #define REG_EBRACK 7
53: #define REG_EPAREN 8
54: #define REG_EBRACE 9
55: #define REG_BADBR 10
56: #define REG_ERANGE 11
57: #define REG_ESPACE 12
58: #define REG_BADRPT 13
59:
60: /* extended error codes */
61: #define REG_EONIG_INTERNAL 14
62: #define REG_EONIG_BADWC 15
63: #define REG_EONIG_BADARG 16
64: #define REG_EONIG_THREAD 17
65:
66: /* character encodings (for reg_set_encoding()) */
67: #define REG_POSIX_ENCODING_ASCII 0
68: #define REG_POSIX_ENCODING_EUC_JP 1
69: #define REG_POSIX_ENCODING_SJIS 2
70: #define REG_POSIX_ENCODING_UTF8 3
71: #define REG_POSIX_ENCODING_UTF16_BE 4
72: #define REG_POSIX_ENCODING_UTF16_LE 5
73:
74:
75: typedef int regoff_t;
76:
77: typedef struct {
78: regoff_t rm_so;
79: regoff_t rm_eo;
80: } regmatch_t;
81:
82: /* POSIX regex_t */
83: typedef struct {
84: void* onig; /* Oniguruma regex_t* */
85: size_t re_nsub;
86: int comp_options;
87: } regex_t;
88:
89:
90: #ifndef P_
91: #if defined(__STDC__) || defined(_WIN32)
92: # define P_(args) args
93: #else
94: # define P_(args) ()
95: #endif
96: #endif
97:
98: #ifndef ONIG_EXTERN
99: #if defined(_WIN32) && !defined(__GNUC__)
100: #if defined(EXPORT) || defined(RUBY_EXPORT)
101: #define ONIG_EXTERN extern __declspec(dllexport)
102: #else
103: #define ONIG_EXTERN extern __declspec(dllimport)
104: #endif
105: #endif
106: #endif
107:
108: #ifndef ONIG_EXTERN
109: #define ONIG_EXTERN extern
110: #endif
111:
112: #ifndef ONIGURUMA_H
113: typedef unsigned int OnigOptionType;
114:
115: /* syntax */
116: typedef struct {
117: unsigned int op;
118: unsigned int op2;
119: unsigned int behavior;
120: OnigOptionType options; /* default option */
121: } OnigSyntaxType;
122:
123: ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;
124: ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;
125: ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;
126: ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;
127: ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;
128: ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
129: ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
130: ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
131:
132: /* predefined syntaxes (see regsyntax.c) */
133: #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
134: #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended)
135: #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs)
136: #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
137: #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
138: #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
139: #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
140: #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
141: /* default syntax */
142: #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
143:
144: ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
145:
146: ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax));
147: ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));
148: ONIG_EXTERN const char* onig_version P_((void));
149: ONIG_EXTERN const char* onig_copyright P_((void));
150:
151: #endif /* ONIGURUMA_H */
152:
153:
154: ONIG_EXTERN int regcomp P_((regex_t* reg, const char* pat, int options));
155: ONIG_EXTERN int regexec P_((regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options));
156: ONIG_EXTERN void regfree P_((regex_t* reg));
157: ONIG_EXTERN size_t regerror P_((int code, const regex_t* reg, char* buf, size_t size));
158:
159: /* extended API */
160: ONIG_EXTERN void reg_set_encoding P_((int enc));
161: ONIG_EXTERN int reg_name_to_group_numbers P_((regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums));
162: ONIG_EXTERN int reg_foreach_name P_((regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg));
163: ONIG_EXTERN int reg_number_of_names P_((regex_t* reg));
164:
165: #ifdef __cplusplus
166: }
167: #endif
168:
169: #endif /* ONIGPOSIX_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>