da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* : : generated by proto : : */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * regexp interface and partial implementation
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * what a novel approach
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * don't do it again
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * OBSOLETE: use <regex.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _REGEXP_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(__PROTO__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <prototyped.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(__LINKAGE__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __LINKAGE__ /* 2004-08-11 transition */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _REGEXP_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NBRA 9
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* re_braslist[NBRA];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* re_braelist[NBRA];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* re_loc1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* re_loc2;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* re_locs;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int re_circf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int re_nbra;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int re_nodelim;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int re_sed;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} regexp_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define braslist _re_info.re_braslist
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define braelist _re_info.re_braelist
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define circf _re_info.re_circf
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define loc1 _re_info.re_loc1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define loc2 _re_info.re_loc2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define locs _re_info.re_locs
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define nbra _re_info.re_nbra
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define nodelim _re_info.re_nodelim
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define sed _re_info.re_sed
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define advance(a,b) _re_exec(&_re_info,a,b,1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define compile(a,b,c,d) _re_read(&_re_info,a,b,c,d)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define step(a,b) _re_exec(&_re_info,a,b,0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__ __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int _re_comp __PROTO__((regexp_t*, const char*, char*, unsigned int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int _re_exec __PROTO__((regexp_t*, const char*, const char*, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char* _re_putc __PROTO__((int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char* _re_read __PROTO__((regexp_t*, const char*, char*, const char*, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _REGEXP_DECLARE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinregexp_t _re_info;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinchar*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin_re_read __PARAM__((register regexp_t* re, const char* instring, char* ep, const char* endbuf, int seof), (re, instring, ep, endbuf, seof)) __OTORP__(register regexp_t* re; const char* instring; char* ep; const char* endbuf; int seof;){
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin register int c;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin static const char* prev;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef INIT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin INIT;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin re->re_nodelim = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (c != seof)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin UNGETC(c);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin re->re_nodelim = 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (!re->re_sed && !prev)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin { ERROR(41); }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin RETURN((char*)endbuf);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin UNGETC(c);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin prev = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin for (;;)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (re->re_sed)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin { ERROR(36); }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin UNGETC(c);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin re->re_nodelim = 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin break;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (c == '\\')
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin _re_putc(c);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if ((c = GETC()) == seof || c == '\n' || c == -1 || c == 0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin { ERROR(36); }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin _re_putc(c);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (c = _re_comp(re, _re_putc(0), ep, (char*)endbuf - ep))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin { ERROR(c); }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin prev = endbuf;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin RETURN((char*)prev);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif