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