Annotation of embedaddon/pcre/pcreposix.h, revision 1.1.1.2

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: 
1.1.1.2 ! misho      12:             Copyright (c) 1997-2012 University of Cambridge
1.1       misho      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>