epoc32/include/stdapis/regex.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 /*-
     2  * Copyright (c) 1992 Henry Spencer.
     3  * Copyright (c) 1992, 1993
     4  *	The Regents of the University of California.  All rights reserved.
     5  *
     6  * This code is derived from software contributed to Berkeley by
     7  * Henry Spencer of the University of Toronto.
     8  *
     9  * Redistribution and use in source and binary forms, with or without
    10  * modification, are permitted provided that the following conditions
    11  * are met:
    12  * 1. Redistributions of source code must retain the above copyright
    13  *    notice, this list of conditions and the following disclaimer.
    14  * 2. Redistributions in binary form must reproduce the above copyright
    15  *    notice, this list of conditions and the following disclaimer in the
    16  *    documentation and/or other materials provided with the distribution.
    17  * 4. Neither the name of the University nor the names of its contributors
    18  *    may be used to endorse or promote products derived from this software
    19  *    without specific prior written permission.
    20  *
    21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    31  * SUCH DAMAGE.
    32  *
    33  *	@(#)regex.h	8.2 (Berkeley) 1/3/94
    34  * $FreeBSD: src/include/regex.h,v 1.11 2004/07/12 06:07:26 tjr Exp $
    35  */
    36 
    37 #ifndef _REGEX_H_
    38 #define	_REGEX_H_
    39 
    40 #include <sys/cdefs.h>
    41 #include <sys/_types.h>
    42 
    43 /* types */
    44 typedef	__off_t		regoff_t;
    45 
    46 #ifndef _SIZE_T_DECLARED
    47 typedef	__size_t	size_t;
    48 #define	_SIZE_T_DECLARED
    49 #endif
    50 
    51 typedef struct {
    52 	int re_magic;
    53 	size_t re_nsub;		/* number of parenthesized subexpressions */
    54 	__const char *re_endp;	/* end pointer for REG_PEND */
    55 	struct re_guts *re_g;	/* none of your business :-) */
    56 } regex_t;
    57 
    58 typedef struct {
    59 	regoff_t rm_so;		/* start of match */
    60 	regoff_t rm_eo;		/* end of match */
    61 } regmatch_t;
    62 
    63 /* regcomp() flags */
    64 #define	REG_BASIC	0000
    65 #define	REG_EXTENDED	0001
    66 #define	REG_ICASE	0002
    67 #define	REG_NOSUB	0004
    68 #define	REG_NEWLINE	0010
    69 #define	REG_NOSPEC	0020
    70 #define	REG_PEND	0040
    71 #define	REG_DUMP	0200
    72 
    73 /* regerror() flags */
    74 #define	REG_ENOSYS	(-1)
    75 #define	REG_NOMATCH	 1
    76 #define	REG_BADPAT	 2
    77 #define	REG_ECOLLATE	 3
    78 #define	REG_ECTYPE	 4
    79 #define	REG_EESCAPE	 5
    80 #define	REG_ESUBREG	 6
    81 #define	REG_EBRACK	 7
    82 #define	REG_EPAREN	 8
    83 #define	REG_EBRACE	 9
    84 #define	REG_BADBR	10
    85 #define	REG_ERANGE	11
    86 #define	REG_ESPACE	12
    87 #define	REG_BADRPT	13
    88 #define	REG_EMPTY	14
    89 #define	REG_ASSERT	15
    90 #define	REG_INVARG	16
    91 #define	REG_ILLSEQ	17
    92 #define	REG_ATOI	255	/* convert name to number (!) */
    93 #define	REG_ITOA	0400	/* convert number to name (!) */
    94 
    95 /* regexec() flags */
    96 #define	REG_NOTBOL	00001
    97 #define	REG_NOTEOL	00002
    98 #define	REG_STARTEND	00004
    99 #define	REG_TRACE	00400	/* tracing of execution */
   100 #define	REG_LARGE	01000	/* force large representation */
   101 #define	REG_BACKR	02000	/* force use of backref code */
   102 
   103 __BEGIN_DECLS
   104 IMPORT_C int	regcomp(regex_t * __restrict, const char * __restrict, int);
   105 IMPORT_C size_t	regerror(int, const regex_t * __restrict, char * __restrict, size_t);
   106 /*
   107  * XXX forth parameter should be `regmatch_t [__restrict]', but isn't because
   108  * of a bug in GCC 3.2 (when -std=c99 is specified) which perceives this as a
   109  * syntax error.
   110  */
   111 IMPORT_C int	regexec(const regex_t * __restrict, const char * __restrict, size_t,
   112 	    regmatch_t * __restrict, int);
   113 IMPORT_C void	regfree(regex_t *);
   114 __END_DECLS
   115 
   116 #endif /* !_REGEX_H_ */