xref: /aosp_15_r20/external/libxml2/os400/libxmlrpg/xmlregexp.rpgle (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker      * Summary: regular expressions handling
2*7c568831SAndroid Build Coastguard Worker      * Description: basic API for libxml regular expressions handling used
3*7c568831SAndroid Build Coastguard Worker      *              for XML Schemas and validation.
4*7c568831SAndroid Build Coastguard Worker      *
5*7c568831SAndroid Build Coastguard Worker      * Copy: See Copyright for the status of this software.
6*7c568831SAndroid Build Coastguard Worker      *
7*7c568831SAndroid Build Coastguard Worker      * Author: Patrick Monnerat <[email protected]>, DATASPHERE S.A.
8*7c568831SAndroid Build Coastguard Worker
9*7c568831SAndroid Build Coastguard Worker      /if not defined(XML_REGEXP_H__)
10*7c568831SAndroid Build Coastguard Worker      /define XML_REGEXP_H__
11*7c568831SAndroid Build Coastguard Worker
12*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/xmlversion"
13*7c568831SAndroid Build Coastguard Worker
14*7c568831SAndroid Build Coastguard Worker      /if defined(LIBXML_REGEXP_ENABLED)
15*7c568831SAndroid Build Coastguard Worker
16*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/xmlTypesC"
17*7c568831SAndroid Build Coastguard Worker
18*7c568831SAndroid Build Coastguard Worker      * xmlRegexpPtr:
19*7c568831SAndroid Build Coastguard Worker      *
20*7c568831SAndroid Build Coastguard Worker      * A libxml regular expression, they can actually be far more complex
21*7c568831SAndroid Build Coastguard Worker      * thank the POSIX regex expressions.
22*7c568831SAndroid Build Coastguard Worker
23*7c568831SAndroid Build Coastguard Worker     d xmlRegexpPtr    s               *   based(######typedef######)
24*7c568831SAndroid Build Coastguard Worker
25*7c568831SAndroid Build Coastguard Worker      * xmlRegExecCtxtPtr:
26*7c568831SAndroid Build Coastguard Worker      *
27*7c568831SAndroid Build Coastguard Worker      * A libxml progressive regular expression evaluation context
28*7c568831SAndroid Build Coastguard Worker
29*7c568831SAndroid Build Coastguard Worker     d xmlRegExecCtxtPtr...
30*7c568831SAndroid Build Coastguard Worker     d                 s               *   based(######typedef######)
31*7c568831SAndroid Build Coastguard Worker
32*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/tree"
33*7c568831SAndroid Build Coastguard Worker      /include "libxmlrpg/dict"
34*7c568831SAndroid Build Coastguard Worker
35*7c568831SAndroid Build Coastguard Worker      * The POSIX like API
36*7c568831SAndroid Build Coastguard Worker
37*7c568831SAndroid Build Coastguard Worker     d xmlRegexpCompile...
38*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegexpCompile')
39*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlRegexpPtr)
40*7c568831SAndroid Build Coastguard Worker     d  regexp                         *   value options(*string)               const xmlChar *
41*7c568831SAndroid Build Coastguard Worker
42*7c568831SAndroid Build Coastguard Worker     d xmlRegFreeRegexp...
43*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegFreeRegexp')
44*7c568831SAndroid Build Coastguard Worker     d  regexp                             value like(xmlRegexpPtr)
45*7c568831SAndroid Build Coastguard Worker
46*7c568831SAndroid Build Coastguard Worker     d xmlRegexpExec   pr                  extproc('xmlRegexpExec')
47*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
48*7c568831SAndroid Build Coastguard Worker     d  comp                               value like(xmlRegexpPtr)
49*7c568831SAndroid Build Coastguard Worker     d  value                          *   value options(*string)               const xmlChar *
50*7c568831SAndroid Build Coastguard Worker
51*7c568831SAndroid Build Coastguard Worker     d xmlRegexpPrint  pr                  extproc('xmlRegexpPrint')
52*7c568831SAndroid Build Coastguard Worker     d  output                         *   value                                FILE *
53*7c568831SAndroid Build Coastguard Worker     d  regexp                             value like(xmlRegexpPtr)
54*7c568831SAndroid Build Coastguard Worker
55*7c568831SAndroid Build Coastguard Worker     d xmlRegexpIsDeterminist...
56*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegexpIsDeterminist')
57*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
58*7c568831SAndroid Build Coastguard Worker     d  comp                               value like(xmlRegexpPtr)
59*7c568831SAndroid Build Coastguard Worker
60*7c568831SAndroid Build Coastguard Worker      * xmlRegExecCallbacks:
61*7c568831SAndroid Build Coastguard Worker      * @exec: the regular expression context
62*7c568831SAndroid Build Coastguard Worker      * @token: the current token string
63*7c568831SAndroid Build Coastguard Worker      * @transdata: transition data
64*7c568831SAndroid Build Coastguard Worker      * @inputdata: input data
65*7c568831SAndroid Build Coastguard Worker      *
66*7c568831SAndroid Build Coastguard Worker      * Callback function when doing a transition in the automata
67*7c568831SAndroid Build Coastguard Worker
68*7c568831SAndroid Build Coastguard Worker     d xmlRegExecCallbacks...
69*7c568831SAndroid Build Coastguard Worker     d                 s               *   based(######typedef######)
70*7c568831SAndroid Build Coastguard Worker     d                                     procptr
71*7c568831SAndroid Build Coastguard Worker
72*7c568831SAndroid Build Coastguard Worker      * The progressive API
73*7c568831SAndroid Build Coastguard Worker
74*7c568831SAndroid Build Coastguard Worker     d xmlRegNewExecCtxt...
75*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegNewExecCtxt')
76*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlRegExecCtxtPtr)
77*7c568831SAndroid Build Coastguard Worker     d  comp                               value like(xmlRegexpPtr)
78*7c568831SAndroid Build Coastguard Worker     d  callback                           value like(xmlRegExecCallbacks)
79*7c568831SAndroid Build Coastguard Worker     d  data                           *   value                                void *
80*7c568831SAndroid Build Coastguard Worker
81*7c568831SAndroid Build Coastguard Worker     d xmlRegFreeExecCtxt...
82*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegFreeExecCtxt')
83*7c568831SAndroid Build Coastguard Worker     d  exec                               value like(xmlRegExecCtxtPtr)
84*7c568831SAndroid Build Coastguard Worker
85*7c568831SAndroid Build Coastguard Worker     d xmlRegExecPushString...
86*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegExecPushString')
87*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
88*7c568831SAndroid Build Coastguard Worker     d  exec                               value like(xmlRegExecCtxtPtr)
89*7c568831SAndroid Build Coastguard Worker     d  value                          *   value options(*string)               const xmlChar *
90*7c568831SAndroid Build Coastguard Worker     d  data                           *   value                                void *
91*7c568831SAndroid Build Coastguard Worker
92*7c568831SAndroid Build Coastguard Worker     d xmlRegExecPushString2...
93*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegExecPushString2')
94*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
95*7c568831SAndroid Build Coastguard Worker     d  exec                               value like(xmlRegExecCtxtPtr)
96*7c568831SAndroid Build Coastguard Worker     d  value                          *   value options(*string)               const xmlChar *
97*7c568831SAndroid Build Coastguard Worker     d  value2                         *   value options(*string)               const xmlChar *
98*7c568831SAndroid Build Coastguard Worker     d  data                           *   value                                void *
99*7c568831SAndroid Build Coastguard Worker
100*7c568831SAndroid Build Coastguard Worker     d xmlRegExecNextValues...
101*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegExecNextValues')
102*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
103*7c568831SAndroid Build Coastguard Worker     d  exec                               value like(xmlRegExecCtxtPtr)
104*7c568831SAndroid Build Coastguard Worker     d  nbval                              like(xmlCint)
105*7c568831SAndroid Build Coastguard Worker     d  nbneg                              like(xmlCint)
106*7c568831SAndroid Build Coastguard Worker     d  values                         *                                        xmlChar * (*)
107*7c568831SAndroid Build Coastguard Worker     d  terminal                           like(xmlCint)
108*7c568831SAndroid Build Coastguard Worker
109*7c568831SAndroid Build Coastguard Worker     d xmlRegExecErrInfo...
110*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlRegExecErrInfo')
111*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
112*7c568831SAndroid Build Coastguard Worker     d  exec                               value like(xmlRegExecCtxtPtr)
113*7c568831SAndroid Build Coastguard Worker     d  string                         *                                        const xmlChar * (*)
114*7c568831SAndroid Build Coastguard Worker     d  nbval                              like(xmlCint)
115*7c568831SAndroid Build Coastguard Worker     d  nbneg                              like(xmlCint)
116*7c568831SAndroid Build Coastguard Worker     d  values                         *                                        xmlChar * (*)
117*7c568831SAndroid Build Coastguard Worker     d  terminal                           like(xmlCint)
118*7c568831SAndroid Build Coastguard Worker
119*7c568831SAndroid Build Coastguard Worker      /if defined(LIBXML_EXPR_ENABLED)
120*7c568831SAndroid Build Coastguard Worker
121*7c568831SAndroid Build Coastguard Worker      * Formal regular expression handling
122*7c568831SAndroid Build Coastguard Worker      * Its goal is to do some formal work on content models
123*7c568831SAndroid Build Coastguard Worker
124*7c568831SAndroid Build Coastguard Worker      * expressions are used within a context
125*7c568831SAndroid Build Coastguard Worker
126*7c568831SAndroid Build Coastguard Worker     d xmlExpCtxtPtr   s               *   based(######typedef######)
127*7c568831SAndroid Build Coastguard Worker
128*7c568831SAndroid Build Coastguard Worker     d xmlExpFreeCtxt  pr                  extproc('xmlExpFreeCtxt')
129*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
130*7c568831SAndroid Build Coastguard Worker
131*7c568831SAndroid Build Coastguard Worker     d xmlExpNewCtxt   pr                  extproc('xmlExpNewCtxt')
132*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpCtxtPtr)
133*7c568831SAndroid Build Coastguard Worker     d  maxNodes                           value like(xmlCint)
134*7c568831SAndroid Build Coastguard Worker     d  dict                               value like(xmlDictPtr)
135*7c568831SAndroid Build Coastguard Worker
136*7c568831SAndroid Build Coastguard Worker     d xmlExpCtxtNbNodes...
137*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpCtxtNbNodes')
138*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
139*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
140*7c568831SAndroid Build Coastguard Worker
141*7c568831SAndroid Build Coastguard Worker     d xmlExpCtxtNbCons...
142*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpCtxtNbCons')
143*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
144*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
145*7c568831SAndroid Build Coastguard Worker
146*7c568831SAndroid Build Coastguard Worker      * Expressions are trees but the tree is opaque
147*7c568831SAndroid Build Coastguard Worker
148*7c568831SAndroid Build Coastguard Worker     d xmlExpNodePtr   s               *   based(######typedef######)
149*7c568831SAndroid Build Coastguard Worker
150*7c568831SAndroid Build Coastguard Worker     d xmlExpNodeType  s                   based(######typedef######)
151*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCenum)
152*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_EMPTY  c                   0
153*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_FORBID...
154*7c568831SAndroid Build Coastguard Worker     d                 c                   1
155*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_ATOM   c                   2
156*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_SEQ    c                   3
157*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_OR     c                   4
158*7c568831SAndroid Build Coastguard Worker     d  XML_EXP_COUNT  c                   5
159*7c568831SAndroid Build Coastguard Worker
160*7c568831SAndroid Build Coastguard Worker      * 2 core expressions shared by all for the empty language set
161*7c568831SAndroid Build Coastguard Worker      * and for the set with just the empty token
162*7c568831SAndroid Build Coastguard Worker
163*7c568831SAndroid Build Coastguard Worker     d forbiddenExp    s                   import('forbiddenExp')
164*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
165*7c568831SAndroid Build Coastguard Worker
166*7c568831SAndroid Build Coastguard Worker     d emptyExp        s                   import('emptyExp')
167*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
168*7c568831SAndroid Build Coastguard Worker
169*7c568831SAndroid Build Coastguard Worker
170*7c568831SAndroid Build Coastguard Worker      * Expressions are reference counted internally
171*7c568831SAndroid Build Coastguard Worker
172*7c568831SAndroid Build Coastguard Worker     d xmlExpFree      pr                  extproc('xmlExpFree')
173*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
174*7c568831SAndroid Build Coastguard Worker
175*7c568831SAndroid Build Coastguard Worker     d xmlExpRef       pr                  extproc('xmlExpRef')
176*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
177*7c568831SAndroid Build Coastguard Worker
178*7c568831SAndroid Build Coastguard Worker      * constructors can be either manual or from a string
179*7c568831SAndroid Build Coastguard Worker
180*7c568831SAndroid Build Coastguard Worker     d xmlExpParse     pr                  extproc('xmlExpParse')
181*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
182*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
183*7c568831SAndroid Build Coastguard Worker     d  expr                           *   value options(*string)               const char *
184*7c568831SAndroid Build Coastguard Worker
185*7c568831SAndroid Build Coastguard Worker     d xmlExpNewAtom   pr                  extproc('xmlExpNewAtom')
186*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
187*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
188*7c568831SAndroid Build Coastguard Worker     d  name                           *   value options(*string)               const xmlChar *
189*7c568831SAndroid Build Coastguard Worker     d  len                                value like(xmlCint)
190*7c568831SAndroid Build Coastguard Worker
191*7c568831SAndroid Build Coastguard Worker     d xmlExpNewOr     pr                  extproc('xmlExpNewOr')
192*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
193*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
194*7c568831SAndroid Build Coastguard Worker     d  left                               value like(xmlExpNodePtr)
195*7c568831SAndroid Build Coastguard Worker     d  right                              value like(xmlExpNodePtr)
196*7c568831SAndroid Build Coastguard Worker
197*7c568831SAndroid Build Coastguard Worker     d xmlExpNewSeq    pr                  extproc('xmlExpNewSeq')
198*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
199*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
200*7c568831SAndroid Build Coastguard Worker     d  left                               value like(xmlExpNodePtr)
201*7c568831SAndroid Build Coastguard Worker     d  right                              value like(xmlExpNodePtr)
202*7c568831SAndroid Build Coastguard Worker
203*7c568831SAndroid Build Coastguard Worker     d xmlExpNewRange  pr                  extproc('xmlExpNewRange')
204*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
205*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
206*7c568831SAndroid Build Coastguard Worker     d  subset                             value like(xmlExpNodePtr)
207*7c568831SAndroid Build Coastguard Worker     d  min                                value like(xmlCint)
208*7c568831SAndroid Build Coastguard Worker     d  max                                value like(xmlCint)
209*7c568831SAndroid Build Coastguard Worker
210*7c568831SAndroid Build Coastguard Worker      * The really interesting APIs
211*7c568831SAndroid Build Coastguard Worker
212*7c568831SAndroid Build Coastguard Worker     d xmlExpIsNillable...
213*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpIsNillable')
214*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
215*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
216*7c568831SAndroid Build Coastguard Worker
217*7c568831SAndroid Build Coastguard Worker     d xmlExpMaxToken  pr                  extproc('xmlExpMaxToken')
218*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
219*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
220*7c568831SAndroid Build Coastguard Worker
221*7c568831SAndroid Build Coastguard Worker     d xmlExpGetLanguage...
222*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpGetLanguage')
223*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
224*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
225*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
226*7c568831SAndroid Build Coastguard Worker     d  langList                       *                                        const xmlChar *(*)
227*7c568831SAndroid Build Coastguard Worker     d  len                                value like(xmlCint)
228*7c568831SAndroid Build Coastguard Worker
229*7c568831SAndroid Build Coastguard Worker     d xmlExpGetStart  pr                  extproc('xmlExpGetStart')
230*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
231*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
232*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
233*7c568831SAndroid Build Coastguard Worker     d  tokList                        *                                        const xmlChar *(*)
234*7c568831SAndroid Build Coastguard Worker     d  len                                value like(xmlCint)
235*7c568831SAndroid Build Coastguard Worker
236*7c568831SAndroid Build Coastguard Worker     d xmlExpStringDerive...
237*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpStringDerive')
238*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
239*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
240*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
241*7c568831SAndroid Build Coastguard Worker     d  str                            *   value options(*string)               const xmlChar *
242*7c568831SAndroid Build Coastguard Worker     d  len                                value like(xmlCint)
243*7c568831SAndroid Build Coastguard Worker
244*7c568831SAndroid Build Coastguard Worker     d xmlExpExpDerive...
245*7c568831SAndroid Build Coastguard Worker     d                 pr                  extproc('xmlExpExpDerive')
246*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlExpNodePtr)
247*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
248*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
249*7c568831SAndroid Build Coastguard Worker     d  sub                                value like(xmlExpNodePtr)
250*7c568831SAndroid Build Coastguard Worker
251*7c568831SAndroid Build Coastguard Worker     d xmlExpSubsume   pr                  extproc('xmlExpSubsume')
252*7c568831SAndroid Build Coastguard Worker     d                                     like(xmlCint)
253*7c568831SAndroid Build Coastguard Worker     d  ctxt                               value like(xmlExpCtxtPtr)
254*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
255*7c568831SAndroid Build Coastguard Worker     d  sub                                value like(xmlExpNodePtr)
256*7c568831SAndroid Build Coastguard Worker
257*7c568831SAndroid Build Coastguard Worker     d xmlExpDump      pr                  extproc('xmlExpDump')
258*7c568831SAndroid Build Coastguard Worker     d  buf                                value like(xmlBufferPtr)
259*7c568831SAndroid Build Coastguard Worker     d  expr                               value like(xmlExpNodePtr)
260*7c568831SAndroid Build Coastguard Worker      /endif                                                                    LIBXML_EXPR_ENABLED
261*7c568831SAndroid Build Coastguard Worker      /endif                                                                    LIBXML_REGEXP_ENABLD
262*7c568831SAndroid Build Coastguard Worker      /endif                                                                    XML_REGEXP_H__
263