/* XDS v2.51: Copyright (c) 1999-2003 Excelsior, LLC. All Rights Reserved. */
/* Generated by XDS Oberon-2 to ANSI C v4.20 translator */

#ifndef RegComp_H_
#define RegComp_H_
#ifndef X2C_H_
#include "X2C.h"
#endif

struct RegComp_ExprDesc;
extern struct X2C_TD_STR RegComp_ExprDesc_desc;

typedef struct RegComp_ExprDesc * RegComp_Expr;

typedef X2C_CARD32 * RegComp_char_set;

struct RegComp_RESULT;
extern struct X2C_TD_STR RegComp_RESULT_desc;


struct RegComp_RESULT {
   X2C_INT32 pos[10];
   X2C_INT32 len[10];
};


struct RegComp__0 {
   X2C_CHAR * Adr;
   X2C_INDEX Len0;
};


struct RegComp_ExprDesc {
   RegComp_Expr next;
   X2C_INT16 nres;
   struct RegComp_RESULT * res;
   X2C_INT16 kind;
   RegComp_Expr left;
   struct RegComp__0 * pat;
   RegComp_char_set leg;
};

extern void RegComp_Compile(X2C_CHAR [], X2C_CARD32, RegComp_Expr *,
                X2C_INT32 *);

extern X2C_BOOLEAN RegComp_Const(RegComp_Expr);

extern X2C_BOOLEAN RegComp_Match(RegComp_Expr, X2C_CHAR [], X2C_CARD32,
                X2C_INT32);

extern void RegComp_Substitute(RegComp_Expr, X2C_CHAR [], X2C_CARD32,
                X2C_CHAR [], X2C_CARD32, X2C_CHAR [], X2C_CARD32);

extern X2C_INT32 RegComp_Len(RegComp_Expr, X2C_INT16);

extern X2C_INT32 RegComp_Pos(RegComp_Expr, X2C_INT16);


extern void RegComp_BEGIN(void);


#endif /* RegComp_H_ */
