]>
git.saurik.com Git - apple/libc.git/blob - include/regex.h
   2  * Copyright (c) 2000, 2011 Apple Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. Please obtain a copy of the License at 
  10  * http://www.opensource.apple.com/apsl/ and read it before using this 
  13  * The Original Code and all software distributed under the License are 
  14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  18  * Please see the License for the specific language governing rights and 
  19  * limitations under the License. 
  21  * @APPLE_LICENSE_HEADER_END@ 
  24  * Copyright (c) 2001-2009 Ville Laurikari <vl@iki.fi> 
  25  * All rights reserved. 
  27  * Redistribution and use in source and binary forms, with or without 
  28  * modification, are permitted provided that the following conditions 
  31  *   1. Redistributions of source code must retain the above copyright 
  32  *      notice, this list of conditions and the following disclaimer. 
  34  *   2. Redistributions in binary form must reproduce the above copyright 
  35  *      notice, this list of conditions and the following disclaimer in the 
  36  *      documentation and/or other materials provided with the distribution. 
  38  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS 
  39  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
  40  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
  41  * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT 
  42  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  43  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
  44  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
  45  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
  46  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
  47  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
  48  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  51  * Copyright (c) 1992 Henry Spencer. 
  52  * Copyright (c) 1992, 1993 
  53  *      The Regents of the University of California.  All rights reserved. 
  55  * This code is derived from software contributed to Berkeley by 
  56  * Henry Spencer of the University of Toronto. 
  58  * Redistribution and use in source and binary forms, with or without 
  59  * modification, are permitted provided that the following conditions 
  61  * 1. Redistributions of source code must retain the above copyright 
  62  *    notice, this list of conditions and the following disclaimer. 
  63  * 2. Redistributions in binary form must reproduce the above copyright 
  64  *    notice, this list of conditions and the following disclaimer in the 
  65  *    documentation and/or other materials provided with the distribution. 
  66  * 3. All advertising materials mentioning features or use of this software 
  67  *    must display the following acknowledgement: 
  68  *      This product includes software developed by the University of 
  69  *      California, Berkeley and its contributors. 
  70  * 4. Neither the name of the University nor the names of its contributors 
  71  *    may be used to endorse or promote products derived from this software 
  72  *    without specific prior written permission. 
  74  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 
  75  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  76  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
  77  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 
  78  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
  79  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
  80  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  81  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  82  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
  83  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  86  *      @(#)regex.h     8.2 (Berkeley) 1/3/94 
  93 #include <Availability.h> 
  94 #include <sys/_types/_size_t.h> 
  99 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 100 #include <sys/_types/_wchar_t.h> 
 101 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 103 typedef __darwin_off_t regoff_t
; 
 107         size_t re_nsub
;         /* number of parenthesized subexpressions */ 
 108         const char *re_endp
;    /* end pointer for REG_PEND */ 
 109         struct re_guts 
*re_g
;   /* none of your business :-) */ 
 113         regoff_t rm_so
;         /* start of match */ 
 114         regoff_t rm_eo
;         /* end of match */ 
 117 /*******************/ 
 118 /* regcomp() flags */ 
 119 /*******************/ 
 120 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 121 #define REG_BASIC       0000    /* Basic regular expressions (synonym for 0) */ 
 122 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 124 #define REG_EXTENDED    0001    /* Extended regular expressions */ 
 125 #define REG_ICASE       0002    /* Compile ignoring upper/lower case */ 
 126 #define REG_NOSUB       0004    /* Compile only reporting success/failure */ 
 127 #define REG_NEWLINE     0010    /* Compile for newline-sensitive matching */ 
 129 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 130 #define REG_NOSPEC      0020    /* Compile turning off all special characters */ 
 132 #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \ 
 133  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 
 134 #define REG_LITERAL     REG_NOSPEC 
 137 #define REG_PEND        0040    /* Use re_endp as end pointer */ 
 139 #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \ 
 140  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 
 141 #define REG_MINIMAL     0100    /* Compile using minimal repetition */ 
 142 #define REG_UNGREEDY    REG_MINIMAL 
 145 #define REG_DUMP        0200    /* Unused */ 
 147 #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \ 
 148  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 
 149 #define REG_ENHANCED    0400    /* Additional (non-POSIX) features */ 
 151 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 153 /********************/ 
 154 /* regerror() flags */ 
 155 /********************/ 
 156 #define REG_ENOSYS       (-1)   /* Reserved */ 
 157 #define REG_NOMATCH      1      /* regexec() function failed to match */ 
 158 #define REG_BADPAT       2      /* invalid regular expression */ 
 159 #define REG_ECOLLATE     3      /* invalid collating element */ 
 160 #define REG_ECTYPE       4      /* invalid character class */ 
 161 #define REG_EESCAPE      5      /* trailing backslash (\) */ 
 162 #define REG_ESUBREG      6      /* invalid backreference number */ 
 163 #define REG_EBRACK       7      /* brackets ([ ]) not balanced */ 
 164 #define REG_EPAREN       8      /* parentheses not balanced */ 
 165 #define REG_EBRACE       9      /* braces not balanced */ 
 166 #define REG_BADBR       10      /* invalid repetition count(s) */ 
 167 #define REG_ERANGE      11      /* invalid character range */ 
 168 #define REG_ESPACE      12      /* out of memory */ 
 169 #define REG_BADRPT      13      /* repetition-operator operand invalid */ 
 171 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 172 #define REG_EMPTY       14      /* Unused */ 
 173 #define REG_ASSERT      15      /* Unused */ 
 174 #define REG_INVARG      16      /* invalid argument to regex routine */ 
 175 #define REG_ILLSEQ      17      /* illegal byte sequence */ 
 177 #define REG_ATOI        255     /* convert name to number (!) */ 
 178 #define REG_ITOA        0400    /* convert number to name (!) */ 
 179 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 181 /*******************/ 
 182 /* regexec() flags */ 
 183 /*******************/ 
 184 #define REG_NOTBOL      00001   /* First character not at beginning of line */ 
 185 #define REG_NOTEOL      00002   /* Last character not at end of line */ 
 187 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 188 #define REG_STARTEND    00004   /* String start/end in pmatch[0] */ 
 189 #define REG_TRACE       00400   /* Unused */ 
 190 #define REG_LARGE       01000   /* Unused */ 
 191 #define REG_BACKR       02000   /* force use of backref code */ 
 193 #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \ 
 194  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 
 195 #define REG_BACKTRACKING_MATCHER        REG_BACKR 
 197 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 201 #ifndef LIBC_ALIAS_REGCOMP 
 203 int     regcomp(regex_t 
* __restrict
, const char * __restrict
, int) __DARWIN_ALIAS(regcomp
); 
 205 #else /* LIBC_ALIAS_REGCOMP */ 
 206 int     regcomp(regex_t 
* __restrict
, const char * __restrict
, int) LIBC_ALIAS(regcomp
); 
 207 #endif /* !LIBC_ALIAS_REGCOMP */ 
 209 size_t  regerror(int, const regex_t 
* __restrict
, char * __restrict
, size_t); 
 211  * gcc under c99 mode won't compile "[ __restrict]" by itself.  As a workaround, 
 212  * a dummy argument name is added. 
 214 int     regexec(const regex_t 
* __restrict
, const char * __restrict
, size_t, 
 215             regmatch_t __pmatch
[ __restrict
], int); 
 216 void    regfree(regex_t 
*); 
 218 #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL 
 220 /* Darwin extensions */ 
 221 int     regncomp(regex_t 
* __restrict
, const char * __restrict
, size_t, int) 
 222             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 223 int     regnexec(const regex_t 
* __restrict
, const char * __restrict
, size_t, 
 224             size_t, regmatch_t __pmatch
[ __restrict
], int) 
 225             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 226 int     regwcomp(regex_t 
* __restrict
, const wchar_t * __restrict
, int) 
 227             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 228 int     regwexec(const regex_t 
* __restrict
, const wchar_t * __restrict
, size_t, 
 229             regmatch_t __pmatch
[ __restrict
], int) 
 230             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 231 int     regwncomp(regex_t 
* __restrict
, const wchar_t * __restrict
, size_t, int) 
 232             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 233 int     regwnexec(const regex_t 
* __restrict
, const wchar_t * __restrict
, 
 234             size_t, size_t, regmatch_t __pmatch
[ __restrict
], int) 
 235             __OSX_AVAILABLE_STARTING(__MAC_10_8
, __IPHONE_6_0
); 
 237 #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ 
 240 #ifdef _USE_EXTENDED_LOCALES_ 
 241 #include <xlocale/_regex.h> 
 242 #endif /* _USE_EXTENDED_LOCALES_ */ 
 244 #endif /* !_REGEX_H_ */