Advertisement
Guest User

Untitled

a guest
Apr 12th, 2020
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.86 KB | None | 0 0
  1. /*
  2.  * Copyright (c) 2000, 2011 Apple Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  *
  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
  11.  * file.
  12.  *
  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.
  20.  *
  21.  * @APPLE_LICENSE_HEADER_END@
  22.  */
  23. /*
  24.  * Copyright (c) 2001-2009 Ville Laurikari <[email protected]>
  25.  * All rights reserved.
  26.  *
  27.  * Redistribution and use in source and binary forms, with or without
  28.  * modification, are permitted provided that the following conditions
  29.  * are met:
  30.  *
  31.  *   1. Redistributions of source code must retain the above copyright
  32.  *      notice, this list of conditions and the following disclaimer.
  33.  *
  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.
  37.  *
  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.
  49.  */
  50. /*-
  51.  * Copyright (c) 1992 Henry Spencer.
  52.  * Copyright (c) 1992, 1993
  53.  *      The Regents of the University of California.  All rights reserved.
  54.  *
  55.  * This code is derived from software contributed to Berkeley by
  56.  * Henry Spencer of the University of Toronto.
  57.  *
  58.  * Redistribution and use in source and binary forms, with or without
  59.  * modification, are permitted provided that the following conditions
  60.  * are met:
  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.
  73.  *
  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
  84.  * SUCH DAMAGE.
  85.  *
  86.  *      @(#)regex.h     8.2 (Berkeley) 1/3/94
  87.  */
  88.  
  89. #ifndef _REGEX_H_
  90. #define _REGEX_H_
  91.  
  92. #include <_regex.h>
  93.  
  94. /*******************/
  95. /* regcomp() flags */
  96. /*******************/
  97. #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
  98. #define REG_BASIC       0000    /* Basic regular expressions (synonym for 0) */
  99. #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
  100.  
  101. #define REG_EXTENDED    0001    /* Extended regular expressions */
  102. #define REG_ICASE       0002    /* Compile ignoring upper/lower case */
  103. #define REG_NOSUB       0004    /* Compile only reporting success/failure */
  104. #define REG_NEWLINE     0010    /* Compile for newline-sensitive matching */
  105.  
  106. #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
  107. #define REG_NOSPEC      0020    /* Compile turning off all special characters */
  108.  
  109. #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \
  110.  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
  111.  || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
  112. #define REG_LITERAL     REG_NOSPEC
  113. #endif
  114.  
  115. #define REG_PEND        0040    /* Use re_endp as end pointer */
  116.  
  117. #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \
  118.  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
  119.  || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
  120. #define REG_MINIMAL     0100    /* Compile using minimal repetition */
  121. #define REG_UNGREEDY    REG_MINIMAL
  122. #endif
  123.  
  124. #define REG_DUMP        0200    /* Unused */
  125.  
  126. #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \
  127.  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
  128.  || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
  129. #define REG_ENHANCED    0400    /* Additional (non-POSIX) features */
  130. #endif
  131. #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
  132.  
  133. /********************/
  134. /* regerror() flags */
  135. /********************/
  136. #define REG_ENOSYS       (-1)   /* Reserved */
  137. #define REG_NOMATCH      1      /* regexec() function failed to match */
  138. #define REG_BADPAT       2      /* invalid regular expression */
  139. #define REG_ECOLLATE     3      /* invalid collating element */
  140. #define REG_ECTYPE       4      /* invalid character class */
  141. #define REG_EESCAPE      5      /* trailing backslash (\) */
  142. #define REG_ESUBREG      6      /* invalid backreference number */
  143. #define REG_EBRACK       7      /* brackets ([ ]) not balanced */
  144. #define REG_EPAREN       8      /* parentheses not balanced */
  145. #define REG_EBRACE       9      /* braces not balanced */
  146. #define REG_BADBR       10      /* invalid repetition count(s) */
  147. #define REG_ERANGE      11      /* invalid character range */
  148. #define REG_ESPACE      12      /* out of memory */
  149. #define REG_BADRPT      13      /* repetition-operator operand invalid */
  150.  
  151. #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
  152. #define REG_EMPTY       14      /* Unused */
  153. #define REG_ASSERT      15      /* Unused */
  154. #define REG_INVARG      16      /* invalid argument to regex routine */
  155. #define REG_ILLSEQ      17      /* illegal byte sequence */
  156.  
  157. #define REG_ATOI        255     /* convert name to number (!) */
  158. #define REG_ITOA        0400    /* convert number to name (!) */
  159. #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
  160.  
  161. /*******************/
  162. /* regexec() flags */
  163. /*******************/
  164. #define REG_NOTBOL      00001   /* First character not at beginning of line */
  165. #define REG_NOTEOL      00002   /* Last character not at end of line */
  166.  
  167. #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
  168. #define REG_STARTEND    00004   /* String start/end in pmatch[0] */
  169. #define REG_TRACE       00400   /* Unused */
  170. #define REG_LARGE       01000   /* Unused */
  171. #define REG_BACKR       02000   /* force use of backref code */
  172.  
  173. #if __MAC_OS_X_VERSION_MIN_REQUIRED  >= __MAC_10_8 \
  174.  || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0 \
  175.  || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
  176. #define REG_BACKTRACKING_MATCHER        REG_BACKR
  177. #endif
  178. #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
  179.  
  180. __BEGIN_DECLS
  181. int     regcomp(regex_t * __restrict, const char * __restrict, int) __DARWIN_ALIAS(regcomp);
  182. size_t  regerror(int, const regex_t * __restrict, char * __restrict, size_t) __cold;
  183. /*
  184.  * gcc under c99 mode won't compile "[ __restrict]" by itself.  As a workaround,
  185.  * a dummy argument name is added.
  186.  */
  187. int     regexec(const regex_t * __restrict, const char * __restrict, size_t,
  188.             regmatch_t __pmatch[ __restrict], int);
  189. void    regfree(regex_t *);
  190.  
  191. #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
  192.  
  193. /* Darwin extensions */
  194. int     regncomp(regex_t * __restrict, const char * __restrict, size_t, int)
  195.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  196. int     regnexec(const regex_t * __restrict, const char * __restrict, size_t,
  197.             size_t, regmatch_t __pmatch[ __restrict], int)
  198.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  199. int     regwcomp(regex_t * __restrict, const wchar_t * __restrict, int)
  200.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  201. int     regwexec(const regex_t * __restrict, const wchar_t * __restrict, size_t,
  202.             regmatch_t __pmatch[ __restrict], int)
  203.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  204. int     regwncomp(regex_t * __restrict, const wchar_t * __restrict, size_t, int)
  205.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  206. int     regwnexec(const regex_t * __restrict, const wchar_t * __restrict,
  207.             size_t, size_t, regmatch_t __pmatch[ __restrict], int)
  208.             __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
  209.  
  210. #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
  211. __END_DECLS
  212.  
  213. #ifdef _USE_EXTENDED_LOCALES_
  214. #include <xlocale/_regex.h>
  215. #endif /* _USE_EXTENDED_LOCALES_ */
  216.  
  217. #endif /* !_REGEX_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement