#pragma prototyped
#ifdef _AST_STD_I
#define _REGEX_H -1
#define regex_t int
#define regmatch_t int
#endif
#ifndef _REGEX_H
#define _REGEX_H 1
#undef regex_t
#undef regmatch_t
#include <ast_common.h>
#define REG_VERSION 20030916L
#define REG_AUGMENTED 0x00000001
#define REG_EXTENDED 0x00000002
#define REG_ICASE 0x00000004
#define REG_NEWLINE 0x00000008
#define REG_NOSUB 0x00000010
#define REG_SHELL 0x00000020
#define REG_LEFT 0x00000100
#define REG_LITERAL 0x00000200
#define REG_MINIMAL 0x00000400
#define REG_NULL 0x00000800
#define REG_RIGHT 0x00001000
#define REG_LENIENT 0x00002000
#define REG_ESCAPE 0x00004000
#define REG_FIRST 0x00008000
#define REG_MULTIPLE 0x00010000
#define REG_DISCIPLINE 0x00020000
#define REG_SPAN 0x00040000
#define REG_COMMENT 0x00080000
#define REG_MULTIREF 0x00100000
#define REG_MUSTDELIM 0x08000000
#define REG_DELIMITED 0x10000000
#define REG_SHELL_GROUP 0x20000000
#define REG_SHELL_DOT 0x00200000
#define REG_SHELL_ESCAPED 0x00400000
#define REG_SHELL_PATH 0x00800000
#define REG_NOTBOL 0x00000040
#define REG_NOTEOL 0x00000080
#define REG_INVERT 0x01000000
#define REG_STARTEND 0x02000000
#define REG_ADVANCE 0x04000000
#define REG_NOFREE 0x00000001
#define REG_SUB_ALL 0x00000001
#define REG_SUB_LOWER 0x00000002
#define REG_SUB_UPPER 0x00000004
#define REG_SUB_PRINT 0x00000010
#define REG_SUB_NUMBER 0x00000020
#define REG_SUB_STOP 0x00000040
#define REG_SUB_WRITE 0x00000080
#define REG_SUB_LAST 0x00000100
#define REG_SUB_FULL 0x00000200
#define REG_SUB_USER 0x00001000
#define REG_ENOSYS (-1)
#define REG_NOMATCH 1
#define REG_BADPAT 2
#define REG_ECOLLATE 3
#define REG_ECTYPE 4
#define REG_EESCAPE 5
#define REG_ESUBREG 6
#define REG_EBRACK 7
#define REG_EPAREN 8
#define REG_EBRACE 9
#define REG_BADBR 10
#define REG_ERANGE 11
#define REG_ESPACE 12
#define REG_BADRPT 13
#define REG_ENULL 14
#define REG_ECOUNT 15
#define REG_BADESC 16
#define REG_VERSIONID 17
#define REG_EFLAGS 18
#define REG_EDELIM 19
#define REG_PANIC 20
struct regex_s; typedef struct regex_s regex_t;
struct regdisc_s; typedef struct regdisc_s regdisc_t;
typedef int (*regclass_t)(int);
typedef int32_t regflags_t;
typedef int regoff_t;
typedef int (*regerror_t)(const regex_t*, regdisc_t*, int, ...);
typedef void* (*regcomp_t)(const regex_t*, const char*, size_t, regdisc_t*);
typedef int (*regexec_t)(const regex_t*, void*, const char*, size_t, const char*, size_t, char**, regdisc_t*);
typedef void* (*regresize_t)(void*, void*, size_t);
typedef int (*regrecord_t)(void*, const char*, size_t);
typedef struct regmatch_s
{
regoff_t rm_so;
regoff_t rm_eo;
} regmatch_t;
typedef struct regsub_s
{
regflags_t re_flags;
char* re_buf;
size_t re_len;
int re_min;
#ifdef _REG_SUB_PRIVATE_
_REG_SUB_PRIVATE_
#endif
} regsub_t;
struct regdisc_s
{
unsigned long re_version;
regflags_t re_flags;
regerror_t re_errorf;
int re_errorlevel;
regresize_t re_resizef;
void* re_resizehandle;
regcomp_t re_compf;
regexec_t re_execf;
unsigned char* re_map;
};
typedef struct regstat_s
{
regflags_t re_flags;
ssize_t re_min;
ssize_t re_max;
ssize_t re_record;
} regstat_t;
struct regex_s
{
size_t re_nsub;
struct reglib_s*re_info;
size_t re_npat;
regdisc_t* re_disc;
regsub_t* re_sub;
};
#define reginit(disc) (memset(disc,0,sizeof(*(disc))),(disc)->re_version=REG_VERSION)
#if _BLD_ast && defined(__EXPORT__)
#define extern __EXPORT__
#endif
extern int regcomp(regex_t*, const char*, regflags_t);
extern size_t regerror(int, const regex_t*, char*, size_t);
extern int regexec(const regex_t*, const char*, size_t, regmatch_t*, regflags_t);
extern void regfree(regex_t*);
#define _REG_cache 1
#define _REG_class 1
#define _REG_collate 1
#define _REG_comb 1
#define _REG_decomp 1
#define _REG_dup 1
#define _REG_fatal 1
#define _REG_ncomp 1
#define _REG_nexec 1
#define _REG_rexec 1
#define _REG_stat 1
#define _REG_subcomp 1
extern regclass_t regclass(const char*, char**);
extern int regaddclass(const char*, regclass_t);
extern int regcollate(const char*, char**, char*, int);
extern int regcomb(regex_t*, regex_t*);
extern size_t regdecomp(regex_t*, regflags_t, char*, size_t);
extern int regdup(regex_t*, regex_t*);
extern int regncomp(regex_t*, const char*, size_t, regflags_t);
extern int regnexec(const regex_t*, const char*, size_t, size_t, regmatch_t*, regflags_t);
extern void regfatal(regex_t*, int, int);
extern void regfatalpat(regex_t*, int, int, const char*);
extern int regrecord(const regex_t*);
extern int regrexec(const regex_t*, const char*, size_t, size_t, regmatch_t*, regflags_t, int, void*, regrecord_t);
extern regstat_t* regstat(const regex_t*);
extern regex_t* regcache(const char*, regflags_t, int*);
extern int regsubcomp(regex_t*, const char*, const regflags_t*, int, regflags_t);
extern int regsubexec(const regex_t*, const char*, size_t, regmatch_t*);
extern int regsubflags(regex_t*, const char*, char**, int, const regflags_t*, int*, regflags_t*);
extern void regsubfree(regex_t*);
#ifndef _SFIO_H
struct _sfio_s;
#endif
extern void regalloc(void*, regresize_t, regflags_t);
extern int regsub(const regex_t*, struct _sfio_s*, const char*, const char*, size_t, regmatch_t*, regflags_t);
#undef extern
#endif