blob: b1b948551c2c1402b35e14560e7d8635e273c9f8 [file] [log] [blame]
Daniel Veillard4255d502002-04-16 15:50:10 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: API to build regexp automata
3 * Description: the API to build regexp automata
Daniel Veillard4255d502002-04-16 15:50:10 +00004 *
Daniel Veillardbe586972003-11-18 20:56:51 +00005 * Copy: See Copyright for the status of this software.
Daniel Veillard4255d502002-04-16 15:50:10 +00006 *
Daniel Veillardbe586972003-11-18 20:56:51 +00007 * Author: Daniel Veillard
Daniel Veillard4255d502002-04-16 15:50:10 +00008 */
9
10#ifndef __XML_AUTOMATA_H__
11#define __XML_AUTOMATA_H__
12
Daniel Veillard4255d502002-04-16 15:50:10 +000013#include <libxml/xmlversion.h>
Daniel Veillard84d70a42002-09-16 10:51:38 +000014#include <libxml/tree.h>
Daniel Veillard4255d502002-04-16 15:50:10 +000015
Daniel Veillard84d70a42002-09-16 10:51:38 +000016#ifdef LIBXML_AUTOMATA_ENABLED
Daniel Veillard4255d502002-04-16 15:50:10 +000017#include <libxml/xmlregexp.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23/**
24 * xmlAutomataPtr:
25 *
26 * A libxml automata description, It can be compiled into a regexp
27 */
28typedef struct _xmlAutomata xmlAutomata;
29typedef xmlAutomata *xmlAutomataPtr;
30
31/**
32 * xmlAutomataStatePtr:
33 *
34 * A state int the automata description,
35 */
36typedef struct _xmlAutomataState xmlAutomataState;
37typedef xmlAutomataState *xmlAutomataStatePtr;
38
39/*
40 * Building API
41 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000042XMLPUBFUN xmlAutomataPtr XMLCALL
43 xmlNewAutomata (void);
44XMLPUBFUN void XMLCALL
45 xmlFreeAutomata (xmlAutomataPtr am);
Daniel Veillard4255d502002-04-16 15:50:10 +000046
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000047XMLPUBFUN xmlAutomataStatePtr XMLCALL
48 xmlAutomataGetInitState (xmlAutomataPtr am);
49XMLPUBFUN int XMLCALL
50 xmlAutomataSetFinalState (xmlAutomataPtr am,
Daniel Veillard4255d502002-04-16 15:50:10 +000051 xmlAutomataStatePtr state);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000052XMLPUBFUN xmlAutomataStatePtr XMLCALL
53 xmlAutomataNewState (xmlAutomataPtr am);
54XMLPUBFUN xmlAutomataStatePtr XMLCALL
55 xmlAutomataNewTransition (xmlAutomataPtr am,
Daniel Veillard4255d502002-04-16 15:50:10 +000056 xmlAutomataStatePtr from,
57 xmlAutomataStatePtr to,
58 const xmlChar *token,
59 void *data);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000060XMLPUBFUN xmlAutomataStatePtr XMLCALL
61 xmlAutomataNewTransition2 (xmlAutomataPtr am,
Daniel Veillard52b48c72003-04-13 19:53:42 +000062 xmlAutomataStatePtr from,
63 xmlAutomataStatePtr to,
64 const xmlChar *token,
65 const xmlChar *token2,
66 void *data);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000067XMLPUBFUN xmlAutomataStatePtr XMLCALL
68 xmlAutomataNewCountTrans (xmlAutomataPtr am,
Daniel Veillard4255d502002-04-16 15:50:10 +000069 xmlAutomataStatePtr from,
70 xmlAutomataStatePtr to,
71 const xmlChar *token,
72 int min,
73 int max,
74 void *data);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000075XMLPUBFUN xmlAutomataStatePtr XMLCALL
Kasimier T. Buchcik87876402004-09-29 13:29:03 +000076 xmlAutomataNewCountTrans2 (xmlAutomataPtr am,
77 xmlAutomataStatePtr from,
78 xmlAutomataStatePtr to,
79 const xmlChar *token,
80 const xmlChar *token2,
81 int min,
82 int max,
83 void *data);
84XMLPUBFUN xmlAutomataStatePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000085 xmlAutomataNewOnceTrans (xmlAutomataPtr am,
Daniel Veillard7646b182002-04-20 06:41:40 +000086 xmlAutomataStatePtr from,
87 xmlAutomataStatePtr to,
88 const xmlChar *token,
89 int min,
90 int max,
91 void *data);
Kasimier T. Buchcik87876402004-09-29 13:29:03 +000092XMLPUBFUN xmlAutomataStatePtr XMLCALL
93 xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
94 xmlAutomataStatePtr from,
95 xmlAutomataStatePtr to,
96 const xmlChar *token,
97 const xmlChar *token2,
98 int min,
99 int max,
100 void *data);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000101XMLPUBFUN xmlAutomataStatePtr XMLCALL
102 xmlAutomataNewAllTrans (xmlAutomataPtr am,
Daniel Veillard7646b182002-04-20 06:41:40 +0000103 xmlAutomataStatePtr from,
Daniel Veillard441bc322002-04-20 17:38:48 +0000104 xmlAutomataStatePtr to,
105 int lax);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000106XMLPUBFUN xmlAutomataStatePtr XMLCALL
107 xmlAutomataNewEpsilon (xmlAutomataPtr am,
Daniel Veillard4255d502002-04-16 15:50:10 +0000108 xmlAutomataStatePtr from,
109 xmlAutomataStatePtr to);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000110XMLPUBFUN xmlAutomataStatePtr XMLCALL
111 xmlAutomataNewCountedTrans (xmlAutomataPtr am,
Daniel Veillardb509f152002-04-17 16:28:10 +0000112 xmlAutomataStatePtr from,
113 xmlAutomataStatePtr to,
114 int counter);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000115XMLPUBFUN xmlAutomataStatePtr XMLCALL
116 xmlAutomataNewCounterTrans (xmlAutomataPtr am,
Daniel Veillardb509f152002-04-17 16:28:10 +0000117 xmlAutomataStatePtr from,
118 xmlAutomataStatePtr to,
119 int counter);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000120XMLPUBFUN int XMLCALL
121 xmlAutomataNewCounter (xmlAutomataPtr am,
Daniel Veillardb509f152002-04-17 16:28:10 +0000122 int min,
123 int max);
Daniel Veillard4255d502002-04-16 15:50:10 +0000124
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000125XMLPUBFUN xmlRegexpPtr XMLCALL
126 xmlAutomataCompile (xmlAutomataPtr am);
127XMLPUBFUN int XMLCALL
128 xmlAutomataIsDeterminist (xmlAutomataPtr am);
Daniel Veillard4255d502002-04-16 15:50:10 +0000129
130#ifdef __cplusplus
131}
132#endif
133
134#endif /* LIBXML_AUTOMATA_ENABLED */
135#endif /* __XML_AUTOMATA_H__ */