Blame


1 f7012583 2003-11-25 devnull #ifndef _REGEXP9_H_
2 f7012583 2003-11-25 devnull #define _REGEXP9_H_ 1
3 f7012583 2003-11-25 devnull #if defined(__cplusplus)
4 f7012583 2003-11-25 devnull extern "C" {
5 f7012583 2003-11-25 devnull #endif
6 b2cfc4e2 2003-09-30 devnull
7 78e51a8c 2005-01-14 devnull #ifdef AUTOLIB
8 1a0954ab 2005-01-04 devnull AUTOLIB(regexp9)
9 78e51a8c 2005-01-14 devnull #endif
10 1a0954ab 2005-01-04 devnull
11 b2cfc4e2 2003-09-30 devnull #include <utf.h>
12 b2cfc4e2 2003-09-30 devnull
13 b2cfc4e2 2003-09-30 devnull typedef struct Resub Resub;
14 b2cfc4e2 2003-09-30 devnull typedef struct Reclass Reclass;
15 b2cfc4e2 2003-09-30 devnull typedef struct Reinst Reinst;
16 b2cfc4e2 2003-09-30 devnull typedef struct Reprog Reprog;
17 b2cfc4e2 2003-09-30 devnull
18 b2cfc4e2 2003-09-30 devnull /*
19 b2cfc4e2 2003-09-30 devnull * Sub expression matches
20 b2cfc4e2 2003-09-30 devnull */
21 b2cfc4e2 2003-09-30 devnull struct Resub{
22 b2cfc4e2 2003-09-30 devnull union
23 b2cfc4e2 2003-09-30 devnull {
24 b2cfc4e2 2003-09-30 devnull char *sp;
25 b2cfc4e2 2003-09-30 devnull Rune *rsp;
26 b2cfc4e2 2003-09-30 devnull }s;
27 b2cfc4e2 2003-09-30 devnull union
28 b2cfc4e2 2003-09-30 devnull {
29 b2cfc4e2 2003-09-30 devnull char *ep;
30 b2cfc4e2 2003-09-30 devnull Rune *rep;
31 b2cfc4e2 2003-09-30 devnull }e;
32 b2cfc4e2 2003-09-30 devnull };
33 b2cfc4e2 2003-09-30 devnull
34 b2cfc4e2 2003-09-30 devnull /*
35 b2cfc4e2 2003-09-30 devnull * character class, each pair of rune's defines a range
36 b2cfc4e2 2003-09-30 devnull */
37 b2cfc4e2 2003-09-30 devnull struct Reclass{
38 b2cfc4e2 2003-09-30 devnull Rune *end;
39 b2cfc4e2 2003-09-30 devnull Rune spans[64];
40 b2cfc4e2 2003-09-30 devnull };
41 b2cfc4e2 2003-09-30 devnull
42 b2cfc4e2 2003-09-30 devnull /*
43 b2cfc4e2 2003-09-30 devnull * Machine instructions
44 b2cfc4e2 2003-09-30 devnull */
45 b2cfc4e2 2003-09-30 devnull struct Reinst{
46 b2cfc4e2 2003-09-30 devnull int type;
47 b2cfc4e2 2003-09-30 devnull union {
48 b2cfc4e2 2003-09-30 devnull Reclass *cp; /* class pointer */
49 b2cfc4e2 2003-09-30 devnull Rune r; /* character */
50 b2cfc4e2 2003-09-30 devnull int subid; /* sub-expression id for RBRA and LBRA */
51 b2cfc4e2 2003-09-30 devnull Reinst *right; /* right child of OR */
52 b2cfc4e2 2003-09-30 devnull }u1;
53 b2cfc4e2 2003-09-30 devnull union { /* regexp relies on these two being in the same union */
54 b2cfc4e2 2003-09-30 devnull Reinst *left; /* left child of OR */
55 b2cfc4e2 2003-09-30 devnull Reinst *next; /* next instruction for CAT & LBRA */
56 b2cfc4e2 2003-09-30 devnull }u2;
57 b2cfc4e2 2003-09-30 devnull };
58 b2cfc4e2 2003-09-30 devnull
59 b2cfc4e2 2003-09-30 devnull /*
60 b2cfc4e2 2003-09-30 devnull * Reprogram definition
61 b2cfc4e2 2003-09-30 devnull */
62 b2cfc4e2 2003-09-30 devnull struct Reprog{
63 b2cfc4e2 2003-09-30 devnull Reinst *startinst; /* start pc */
64 b2cfc4e2 2003-09-30 devnull Reclass class[16]; /* .data */
65 b2cfc4e2 2003-09-30 devnull Reinst firstinst[5]; /* .text */
66 b2cfc4e2 2003-09-30 devnull };
67 b2cfc4e2 2003-09-30 devnull
68 54952cec 2003-11-24 devnull extern Reprog *regcomp9(char*);
69 54952cec 2003-11-24 devnull extern Reprog *regcomplit9(char*);
70 54952cec 2003-11-24 devnull extern Reprog *regcompnl9(char*);
71 54952cec 2003-11-24 devnull extern void regerror9(char*);
72 54952cec 2003-11-24 devnull extern int regexec9(Reprog*, char*, Resub*, int);
73 54952cec 2003-11-24 devnull extern void regsub9(char*, char*, int, Resub*, int);
74 b2cfc4e2 2003-09-30 devnull
75 54952cec 2003-11-24 devnull extern int rregexec9(Reprog*, Rune*, Resub*, int);
76 230d62c4 2004-03-05 devnull extern void rregsub9(Rune*, Rune*, int, Resub*, int);
77 b2cfc4e2 2003-09-30 devnull
78 54952cec 2003-11-24 devnull /*
79 54952cec 2003-11-24 devnull * Darwin simply cannot handle having routines that
80 54952cec 2003-11-24 devnull * override other library routines.
81 54952cec 2003-11-24 devnull */
82 54952cec 2003-11-24 devnull #ifndef NOPLAN9DEFINES
83 54952cec 2003-11-24 devnull #define regcomp regcomp9
84 54952cec 2003-11-24 devnull #define regcomplit regcomplit9
85 54952cec 2003-11-24 devnull #define regcompnl regcompnl9
86 54952cec 2003-11-24 devnull #define regerror regerror9
87 54952cec 2003-11-24 devnull #define regexec regexec9
88 54952cec 2003-11-24 devnull #define regsub regsub9
89 54952cec 2003-11-24 devnull #define rregexec rregexec9
90 54952cec 2003-11-24 devnull #define rregsub rregsub9
91 b2cfc4e2 2003-09-30 devnull #endif
92 54952cec 2003-11-24 devnull
93 f7012583 2003-11-25 devnull #if defined(__cplusplus)
94 f7012583 2003-11-25 devnull }
95 54952cec 2003-11-24 devnull #endif
96 f7012583 2003-11-25 devnull #endif