Initial revision
[TestXSLT.git] / libxml2 / include / libxml / xmlautomata.h
1 /*
2  * automata.h : description of the API to build regexp automats
3  *
4  * See Copyright for the status of this software.
5  *
6  * Daniel Veillard <veillard@redhat.com>
7  */
8
9 #ifndef __XML_AUTOMATA_H__
10 #define __XML_AUTOMATA_H__
11
12 #include <libxml/xmlversion.h>
13 #include <libxml/tree.h>
14
15 #ifdef LIBXML_AUTOMATA_ENABLED
16 #include <libxml/xmlregexp.h>
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 /**
23  * xmlAutomataPtr:
24  *
25  * A libxml automata description, It can be compiled into a regexp
26  */
27 typedef struct _xmlAutomata xmlAutomata;
28 typedef xmlAutomata *xmlAutomataPtr;
29
30 /**
31  * xmlAutomataStatePtr:
32  *
33  * A state int the automata description,
34  */
35 typedef struct _xmlAutomataState xmlAutomataState;
36 typedef xmlAutomataState *xmlAutomataStatePtr;
37
38 /*
39  * Building API
40  */
41 xmlAutomataPtr          xmlNewAutomata          (void);
42 void                    xmlFreeAutomata         (xmlAutomataPtr am);
43
44 xmlAutomataStatePtr     xmlAutomataGetInitState (xmlAutomataPtr am);
45 int                     xmlAutomataSetFinalState(xmlAutomataPtr am,
46                                                  xmlAutomataStatePtr state);
47 xmlAutomataStatePtr     xmlAutomataNewState     (xmlAutomataPtr am);
48 xmlAutomataStatePtr     xmlAutomataNewTransition(xmlAutomataPtr am,
49                                                  xmlAutomataStatePtr from,
50                                                  xmlAutomataStatePtr to,
51                                                  const xmlChar *token,
52                                                  void *data);
53 xmlAutomataStatePtr     xmlAutomataNewCountTrans(xmlAutomataPtr am,
54                                                  xmlAutomataStatePtr from,
55                                                  xmlAutomataStatePtr to,
56                                                  const xmlChar *token,
57                                                  int min,
58                                                  int max,
59                                                  void *data);
60 xmlAutomataStatePtr     xmlAutomataNewOnceTrans (xmlAutomataPtr am,
61                                                  xmlAutomataStatePtr from,
62                                                  xmlAutomataStatePtr to,
63                                                  const xmlChar *token,
64                                                  int min,
65                                                  int max,
66                                                  void *data);
67 xmlAutomataStatePtr     xmlAutomataNewAllTrans  (xmlAutomataPtr am,
68                                                  xmlAutomataStatePtr from,
69                                                  xmlAutomataStatePtr to,
70                                                  int lax);
71 xmlAutomataStatePtr     xmlAutomataNewEpsilon   (xmlAutomataPtr am,
72                                                  xmlAutomataStatePtr from,
73                                                  xmlAutomataStatePtr to);
74 xmlAutomataStatePtr     xmlAutomataNewCountedTrans(xmlAutomataPtr am,
75                                                  xmlAutomataStatePtr from,
76                                                  xmlAutomataStatePtr to,
77                                                  int counter);
78 xmlAutomataStatePtr     xmlAutomataNewCounterTrans(xmlAutomataPtr am,
79                                                  xmlAutomataStatePtr from,
80                                                  xmlAutomataStatePtr to,
81                                                  int counter);
82 int                     xmlAutomataNewCounter   (xmlAutomataPtr am,
83                                                  int min,
84                                                  int max);
85
86 xmlRegexpPtr            xmlAutomataCompile      (xmlAutomataPtr am);
87 int                     xmlAutomataIsDeterminist(xmlAutomataPtr am);
88
89 #ifdef __cplusplus
90 }
91 #endif 
92
93 #endif /* LIBXML_AUTOMATA_ENABLED */
94 #endif /* __XML_AUTOMATA_H__ */