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