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