Home | History | Annotate | Download | only in libxml
      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