Annotation of embedaddon/pcre/pcreposix.h, revision 1.1
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:
! 12: Copyright (c) 1997-2009 University of Cambridge
! 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>