xref: /aosp_15_r20/external/libxml2/include/libxml/xmlregexp.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1*7c568831SAndroid Build Coastguard Worker /*
2*7c568831SAndroid Build Coastguard Worker  * Summary: regular expressions handling
3*7c568831SAndroid Build Coastguard Worker  * Description: basic API for libxml regular expressions handling used
4*7c568831SAndroid Build Coastguard Worker  *              for XML Schemas and validation.
5*7c568831SAndroid Build Coastguard Worker  *
6*7c568831SAndroid Build Coastguard Worker  * Copy: See Copyright for the status of this software.
7*7c568831SAndroid Build Coastguard Worker  *
8*7c568831SAndroid Build Coastguard Worker  * Author: Daniel Veillard
9*7c568831SAndroid Build Coastguard Worker  */
10*7c568831SAndroid Build Coastguard Worker 
11*7c568831SAndroid Build Coastguard Worker #ifndef __XML_REGEXP_H__
12*7c568831SAndroid Build Coastguard Worker #define __XML_REGEXP_H__
13*7c568831SAndroid Build Coastguard Worker 
14*7c568831SAndroid Build Coastguard Worker #include <stdio.h>
15*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h>
16*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlstring.h>
17*7c568831SAndroid Build Coastguard Worker 
18*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_REGEXP_ENABLED
19*7c568831SAndroid Build Coastguard Worker 
20*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
21*7c568831SAndroid Build Coastguard Worker extern "C" {
22*7c568831SAndroid Build Coastguard Worker #endif
23*7c568831SAndroid Build Coastguard Worker 
24*7c568831SAndroid Build Coastguard Worker /**
25*7c568831SAndroid Build Coastguard Worker  * xmlRegexpPtr:
26*7c568831SAndroid Build Coastguard Worker  *
27*7c568831SAndroid Build Coastguard Worker  * A libxml regular expression, they can actually be far more complex
28*7c568831SAndroid Build Coastguard Worker  * thank the POSIX regex expressions.
29*7c568831SAndroid Build Coastguard Worker  */
30*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRegexp xmlRegexp;
31*7c568831SAndroid Build Coastguard Worker typedef xmlRegexp *xmlRegexpPtr;
32*7c568831SAndroid Build Coastguard Worker 
33*7c568831SAndroid Build Coastguard Worker /**
34*7c568831SAndroid Build Coastguard Worker  * xmlRegExecCtxtPtr:
35*7c568831SAndroid Build Coastguard Worker  *
36*7c568831SAndroid Build Coastguard Worker  * A libxml progressive regular expression evaluation context
37*7c568831SAndroid Build Coastguard Worker  */
38*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
39*7c568831SAndroid Build Coastguard Worker typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
40*7c568831SAndroid Build Coastguard Worker 
41*7c568831SAndroid Build Coastguard Worker /*
42*7c568831SAndroid Build Coastguard Worker  * The POSIX like API
43*7c568831SAndroid Build Coastguard Worker  */
44*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRegexpPtr
45*7c568831SAndroid Build Coastguard Worker 		    xmlRegexpCompile	(const xmlChar *regexp);
46*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void			 xmlRegFreeRegexp(xmlRegexpPtr regexp);
47*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
48*7c568831SAndroid Build Coastguard Worker 		    xmlRegexpExec	(xmlRegexpPtr comp,
49*7c568831SAndroid Build Coastguard Worker 					 const xmlChar *value);
50*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
51*7c568831SAndroid Build Coastguard Worker 		    xmlRegexpPrint	(FILE *output,
52*7c568831SAndroid Build Coastguard Worker 					 xmlRegexpPtr regexp);
53*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
54*7c568831SAndroid Build Coastguard Worker 		    xmlRegexpIsDeterminist(xmlRegexpPtr comp);
55*7c568831SAndroid Build Coastguard Worker 
56*7c568831SAndroid Build Coastguard Worker /**
57*7c568831SAndroid Build Coastguard Worker  * xmlRegExecCallbacks:
58*7c568831SAndroid Build Coastguard Worker  * @exec: the regular expression context
59*7c568831SAndroid Build Coastguard Worker  * @token: the current token string
60*7c568831SAndroid Build Coastguard Worker  * @transdata: transition data
61*7c568831SAndroid Build Coastguard Worker  * @inputdata: input data
62*7c568831SAndroid Build Coastguard Worker  *
63*7c568831SAndroid Build Coastguard Worker  * Callback function when doing a transition in the automata
64*7c568831SAndroid Build Coastguard Worker  */
65*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
66*7c568831SAndroid Build Coastguard Worker 	                             const xmlChar *token,
67*7c568831SAndroid Build Coastguard Worker 				     void *transdata,
68*7c568831SAndroid Build Coastguard Worker 				     void *inputdata);
69*7c568831SAndroid Build Coastguard Worker 
70*7c568831SAndroid Build Coastguard Worker /*
71*7c568831SAndroid Build Coastguard Worker  * The progressive API
72*7c568831SAndroid Build Coastguard Worker  */
73*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRegExecCtxtPtr
74*7c568831SAndroid Build Coastguard Worker 		    xmlRegNewExecCtxt	(xmlRegexpPtr comp,
75*7c568831SAndroid Build Coastguard Worker 					 xmlRegExecCallbacks callback,
76*7c568831SAndroid Build Coastguard Worker 					 void *data);
77*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void
78*7c568831SAndroid Build Coastguard Worker 		    xmlRegFreeExecCtxt	(xmlRegExecCtxtPtr exec);
79*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
80*7c568831SAndroid Build Coastguard Worker 		    xmlRegExecPushString(xmlRegExecCtxtPtr exec,
81*7c568831SAndroid Build Coastguard Worker 					 const xmlChar *value,
82*7c568831SAndroid Build Coastguard Worker 					 void *data);
83*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
84*7c568831SAndroid Build Coastguard Worker 		    xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
85*7c568831SAndroid Build Coastguard Worker 					 const xmlChar *value,
86*7c568831SAndroid Build Coastguard Worker 					 const xmlChar *value2,
87*7c568831SAndroid Build Coastguard Worker 					 void *data);
88*7c568831SAndroid Build Coastguard Worker 
89*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
90*7c568831SAndroid Build Coastguard Worker 		    xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
91*7c568831SAndroid Build Coastguard Worker 					 int *nbval,
92*7c568831SAndroid Build Coastguard Worker 					 int *nbneg,
93*7c568831SAndroid Build Coastguard Worker 					 xmlChar **values,
94*7c568831SAndroid Build Coastguard Worker 					 int *terminal);
95*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int
96*7c568831SAndroid Build Coastguard Worker 		    xmlRegExecErrInfo	(xmlRegExecCtxtPtr exec,
97*7c568831SAndroid Build Coastguard Worker 					 const xmlChar **string,
98*7c568831SAndroid Build Coastguard Worker 					 int *nbval,
99*7c568831SAndroid Build Coastguard Worker 					 int *nbneg,
100*7c568831SAndroid Build Coastguard Worker 					 xmlChar **values,
101*7c568831SAndroid Build Coastguard Worker 					 int *terminal);
102*7c568831SAndroid Build Coastguard Worker 
103*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus
104*7c568831SAndroid Build Coastguard Worker }
105*7c568831SAndroid Build Coastguard Worker #endif
106*7c568831SAndroid Build Coastguard Worker 
107*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_REGEXP_ENABLED */
108*7c568831SAndroid Build Coastguard Worker 
109*7c568831SAndroid Build Coastguard Worker #endif /*__XML_REGEXP_H__ */
110