Introduction
Introduction Statistics Contact Development Disclaimer Help
regexp9.h - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
regexp9.h (1790B)
---
1 #ifndef _REGEXP9_H_
2 #define _REGEXP9_H_ 1
3 #if defined(__cplusplus)
4 extern "C" {
5 #endif
6
7 #ifdef AUTOLIB
8 AUTOLIB(regexp9)
9 #endif
10
11 #include <utf.h>
12
13 typedef struct Resub Resub;
14 typedef struct Reclass Reclass;
15 typedef struct Reinst Reinst;
16 typedef struct Reprog Reprog;
17
18 /*
19 * Sub expression matches
20 */
21 struct Resub{
22 union
23 {
24 char *sp;
25 Rune *rsp;
26 }s;
27 union
28 {
29 char *ep;
30 Rune *rep;
31 }e;
32 };
33
34 /*
35 * character class, each pair of rune's defines a range
36 */
37 struct Reclass{
38 Rune *end;
39 Rune spans[64];
40 };
41
42 /*
43 * Machine instructions
44 */
45 struct Reinst{
46 int type;
47 union {
48 Reclass *cp; /* class pointer */
49 Rune r; /* character */
50 int subid; /* sub-expression id fo…
51 Reinst *right; /* right child of O…
52 }u1;
53 union { /* regexp relies on these two being in the same u…
54 Reinst *left; /* left child of OR */
55 Reinst *next; /* next instruction for CAT…
56 }u2;
57 };
58
59 /*
60 * Reprogram definition
61 */
62 struct Reprog{
63 Reinst *startinst; /* start pc */
64 Reclass class[16]; /* .data */
65 Reinst firstinst[5]; /* .text */
66 };
67
68 extern Reprog *regcomp9(char*);
69 extern Reprog *regcomplit9(char*);
70 extern Reprog *regcompnl9(char*);
71 extern void regerror9(char*);
72 extern int regexec9(Reprog*, char*, Resub*, int);
73 extern void regsub9(char*, char*, int, Resub*, int);
74
75 extern int rregexec9(Reprog*, Rune*, Resub*, int);
76 extern void rregsub9(Rune*, Rune*, int, Resub*, int);
77
78 /*
79 * Darwin simply cannot handle having routines that
80 * override other library routines.
81 */
82 #ifndef NOPLAN9DEFINES
83 #define regcomp regcomp9
84 #define regcomplit regcomplit9
85 #define regcompnl regcompnl9
86 #define regerror regerror9
87 #define regexec regexec9
88 #define regsub regsub9
89 #define rregexec rregexec9
90 #define rregsub rregsub9
91 #endif
92
93 #if defined(__cplusplus)
94 }
95 #endif
96 #endif
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.