xref: /aosp_15_r20/external/libxml2/include/libxml/xmlautomata.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1 /*
2  * Summary: API to build regexp automata
3  * Description: the API to build regexp automata
4  *
5  * Copy: See Copyright for the status of this software.
6  *
7  * Author: Daniel Veillard
8  */
9 
10 #ifndef __XML_AUTOMATA_H__
11 #define __XML_AUTOMATA_H__
12 
13 #include <libxml/xmlversion.h>
14 
15 #ifdef LIBXML_REGEXP_ENABLED
16 
17 #include <libxml/xmlstring.h>
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /**
24  * xmlAutomataPtr:
25  *
26  * A libxml automata description, It can be compiled into a regexp
27  */
28 typedef struct _xmlAutomata xmlAutomata;
29 typedef xmlAutomata *xmlAutomataPtr;
30 
31 /**
32  * xmlAutomataStatePtr:
33  *
34  * A state int the automata description,
35  */
36 typedef struct _xmlAutomataState xmlAutomataState;
37 typedef xmlAutomataState *xmlAutomataStatePtr;
38 
39 /*
40  * Building API
41  */
42 XMLPUBFUN xmlAutomataPtr
43 		    xmlNewAutomata		(void);
44 XMLPUBFUN void
45 		    xmlFreeAutomata		(xmlAutomataPtr am);
46 
47 XMLPUBFUN xmlAutomataStatePtr
48 		    xmlAutomataGetInitState	(xmlAutomataPtr am);
49 XMLPUBFUN int
50 		    xmlAutomataSetFinalState	(xmlAutomataPtr am,
51 						 xmlAutomataStatePtr state);
52 XMLPUBFUN xmlAutomataStatePtr
53 		    xmlAutomataNewState		(xmlAutomataPtr am);
54 XMLPUBFUN xmlAutomataStatePtr
55 		    xmlAutomataNewTransition	(xmlAutomataPtr am,
56 						 xmlAutomataStatePtr from,
57 						 xmlAutomataStatePtr to,
58 						 const xmlChar *token,
59 						 void *data);
60 XMLPUBFUN xmlAutomataStatePtr
61 		    xmlAutomataNewTransition2	(xmlAutomataPtr am,
62 						 xmlAutomataStatePtr from,
63 						 xmlAutomataStatePtr to,
64 						 const xmlChar *token,
65 						 const xmlChar *token2,
66 						 void *data);
67 XMLPUBFUN xmlAutomataStatePtr
68                     xmlAutomataNewNegTrans	(xmlAutomataPtr am,
69 						 xmlAutomataStatePtr from,
70 						 xmlAutomataStatePtr to,
71 						 const xmlChar *token,
72 						 const xmlChar *token2,
73 						 void *data);
74 
75 XMLPUBFUN xmlAutomataStatePtr
76 		    xmlAutomataNewCountTrans	(xmlAutomataPtr am,
77 						 xmlAutomataStatePtr from,
78 						 xmlAutomataStatePtr to,
79 						 const xmlChar *token,
80 						 int min,
81 						 int max,
82 						 void *data);
83 XMLPUBFUN xmlAutomataStatePtr
84 		    xmlAutomataNewCountTrans2	(xmlAutomataPtr am,
85 						 xmlAutomataStatePtr from,
86 						 xmlAutomataStatePtr to,
87 						 const xmlChar *token,
88 						 const xmlChar *token2,
89 						 int min,
90 						 int max,
91 						 void *data);
92 XMLPUBFUN xmlAutomataStatePtr
93 		    xmlAutomataNewOnceTrans	(xmlAutomataPtr am,
94 						 xmlAutomataStatePtr from,
95 						 xmlAutomataStatePtr to,
96 						 const xmlChar *token,
97 						 int min,
98 						 int max,
99 						 void *data);
100 XMLPUBFUN xmlAutomataStatePtr
101 		    xmlAutomataNewOnceTrans2	(xmlAutomataPtr am,
102 						 xmlAutomataStatePtr from,
103 						 xmlAutomataStatePtr to,
104 						 const xmlChar *token,
105 						 const xmlChar *token2,
106 						 int min,
107 						 int max,
108 						 void *data);
109 XMLPUBFUN xmlAutomataStatePtr
110 		    xmlAutomataNewAllTrans	(xmlAutomataPtr am,
111 						 xmlAutomataStatePtr from,
112 						 xmlAutomataStatePtr to,
113 						 int lax);
114 XMLPUBFUN xmlAutomataStatePtr
115 		    xmlAutomataNewEpsilon	(xmlAutomataPtr am,
116 						 xmlAutomataStatePtr from,
117 						 xmlAutomataStatePtr to);
118 XMLPUBFUN xmlAutomataStatePtr
119 		    xmlAutomataNewCountedTrans	(xmlAutomataPtr am,
120 						 xmlAutomataStatePtr from,
121 						 xmlAutomataStatePtr to,
122 						 int counter);
123 XMLPUBFUN xmlAutomataStatePtr
124 		    xmlAutomataNewCounterTrans	(xmlAutomataPtr am,
125 						 xmlAutomataStatePtr from,
126 						 xmlAutomataStatePtr to,
127 						 int counter);
128 XMLPUBFUN int
129 		    xmlAutomataNewCounter	(xmlAutomataPtr am,
130 						 int min,
131 						 int max);
132 
133 XMLPUBFUN struct _xmlRegexp *
134 		    xmlAutomataCompile		(xmlAutomataPtr am);
135 XMLPUBFUN int
136 		    xmlAutomataIsDeterminist	(xmlAutomataPtr am);
137 
138 #ifdef __cplusplus
139 }
140 #endif
141 
142 #endif /* LIBXML_REGEXP_ENABLED */
143 
144 #endif /* __XML_AUTOMATA_H__ */
145