blob: 950d2907ceebad5b18fc8d030a57042076b2bafa [file] [log] [blame]
Daniel Veillard4255d502002-04-16 15:50:10 +00001/*
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#if defined(WIN32) && defined(_MSC_VER)
13#include <libxml/xmlwin32version.h>
14#else
15#include <libxml/xmlversion.h>
16#endif
Daniel Veillard84d70a42002-09-16 10:51:38 +000017#include <libxml/tree.h>
Daniel Veillard4255d502002-04-16 15:50:10 +000018
Daniel Veillard84d70a42002-09-16 10:51:38 +000019#ifdef LIBXML_AUTOMATA_ENABLED
Daniel Veillard4255d502002-04-16 15:50:10 +000020#include <libxml/xmlregexp.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/**
27 * xmlAutomataPtr:
28 *
29 * A libxml automata description, It can be compiled into a regexp
30 */
31typedef struct _xmlAutomata xmlAutomata;
32typedef xmlAutomata *xmlAutomataPtr;
33
34/**
35 * xmlAutomataStatePtr:
36 *
37 * A state int the automata description,
38 */
39typedef struct _xmlAutomataState xmlAutomataState;
40typedef xmlAutomataState *xmlAutomataStatePtr;
41
42/*
43 * Building API
44 */
45xmlAutomataPtr xmlNewAutomata (void);
46void xmlFreeAutomata (xmlAutomataPtr am);
47
48xmlAutomataStatePtr xmlAutomataGetInitState (xmlAutomataPtr am);
49int xmlAutomataSetFinalState(xmlAutomataPtr am,
50 xmlAutomataStatePtr state);
51xmlAutomataStatePtr xmlAutomataNewState (xmlAutomataPtr am);
52xmlAutomataStatePtr xmlAutomataNewTransition(xmlAutomataPtr am,
53 xmlAutomataStatePtr from,
54 xmlAutomataStatePtr to,
55 const xmlChar *token,
56 void *data);
57xmlAutomataStatePtr xmlAutomataNewCountTrans(xmlAutomataPtr am,
58 xmlAutomataStatePtr from,
59 xmlAutomataStatePtr to,
60 const xmlChar *token,
61 int min,
62 int max,
63 void *data);
Daniel Veillard7646b182002-04-20 06:41:40 +000064xmlAutomataStatePtr xmlAutomataNewOnceTrans (xmlAutomataPtr am,
65 xmlAutomataStatePtr from,
66 xmlAutomataStatePtr to,
67 const xmlChar *token,
68 int min,
69 int max,
70 void *data);
71xmlAutomataStatePtr xmlAutomataNewAllTrans (xmlAutomataPtr am,
72 xmlAutomataStatePtr from,
Daniel Veillard441bc322002-04-20 17:38:48 +000073 xmlAutomataStatePtr to,
74 int lax);
Daniel Veillard4255d502002-04-16 15:50:10 +000075xmlAutomataStatePtr xmlAutomataNewEpsilon (xmlAutomataPtr am,
76 xmlAutomataStatePtr from,
77 xmlAutomataStatePtr to);
Daniel Veillardb509f152002-04-17 16:28:10 +000078xmlAutomataStatePtr xmlAutomataNewCountedTrans(xmlAutomataPtr am,
79 xmlAutomataStatePtr from,
80 xmlAutomataStatePtr to,
81 int counter);
82xmlAutomataStatePtr xmlAutomataNewCounterTrans(xmlAutomataPtr am,
83 xmlAutomataStatePtr from,
84 xmlAutomataStatePtr to,
85 int counter);
86int xmlAutomataNewCounter (xmlAutomataPtr am,
87 int min,
88 int max);
Daniel Veillard4255d502002-04-16 15:50:10 +000089
90xmlRegexpPtr xmlAutomataCompile (xmlAutomataPtr am);
Daniel Veillarde19fc232002-04-22 16:01:24 +000091int xmlAutomataIsDeterminist(xmlAutomataPtr am);
Daniel Veillard4255d502002-04-16 15:50:10 +000092
93#ifdef __cplusplus
94}
95#endif
96
97#endif /* LIBXML_AUTOMATA_ENABLED */
98#endif /* __XML_AUTOMATA_H__ */