text: /*
   * Summary: API to build regexp automata
   * Description: the API to build regexp automata
   *
   * Copy: See Copyright for the status of this software.
   *
   * Author: Daniel Veillard
   */
  
  #ifndef __XML_AUTOMATA_H__
  #define __XML_AUTOMATA_H__
  
  #include <libxml/xmlversion.h>
  #include <libxml/tree.h>
  
  #ifdef LIBXML_REGEXP_ENABLED
  #ifdef LIBXML_AUTOMATA_ENABLED
  #include <libxml/xmlregexp.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /**
   * xmlAutomataPtr:
   *
   * A libxml automata description, It can be compiled into a regexp
   */
  typedef struct _xmlAutomata xmlAutomata;
  typedef xmlAutomata *xmlAutomataPtr;
  
  /**
   * xmlAutomataStatePtr:
   *
   * A state int the automata description,
   */
  typedef struct _xmlAutomataState xmlAutomataState;
  typedef xmlAutomataState *xmlAutomataStatePtr;
  
  /*
   * Building API
   */
  XMLPUBFUN xmlAutomataPtr XMLCALL
  		    xmlNewAutomata		(void);
  XMLPUBFUN void XMLCALL
  		    xmlFreeAutomata		(xmlAutomataPtr am);
  
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataGetInitState	(xmlAutomataPtr am);
  XMLPUBFUN int XMLCALL
  		    xmlAutomataSetFinalState	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr state);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewState		(xmlAutomataPtr am);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewTransition	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewTransition2	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 const xmlChar *token2,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
                      xmlAutomataNewNegTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 const xmlChar *token2,
  						 void *data);
  
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewCountTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 int min,
  						 int max,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewCountTrans2	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 const xmlChar *token2,
  						 int min,
  						 int max,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewOnceTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 int min,
  						 int max,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewOnceTrans2	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 const xmlChar *token,
  						 const xmlChar *token2,
  						 int min,
  						 int max,
  						 void *data);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewAllTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 int lax);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewEpsilon	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewCountedTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 int counter);
  XMLPUBFUN xmlAutomataStatePtr XMLCALL
  		    xmlAutomataNewCounterTrans	(xmlAutomataPtr am,
  						 xmlAutomataStatePtr from,
  						 xmlAutomataStatePtr to,
  						 int counter);
  XMLPUBFUN int XMLCALL
  		    xmlAutomataNewCounter	(xmlAutomataPtr am,
  						 int min,
  						 int max);
  
  XMLPUBFUN xmlRegexpPtr XMLCALL
  		    xmlAutomataCompile		(xmlAutomataPtr am);
  XMLPUBFUN int XMLCALL
  		    xmlAutomataIsDeterminist	(xmlAutomataPtr am);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* LIBXML_AUTOMATA_ENABLED */
  #endif /* LIBXML_REGEXP_ENABLED */
  
  #endif /* __XML_AUTOMATA_H__ */
  