text: /*
   * Summary: interface for the XML entities handling
   * Description: this module provides some of the entity API needed
   *              for the parser and applications.
   *
   * Copy: See Copyright for the status of this software.
   *
   * Author: Daniel Veillard
   */
  
  #ifndef __XML_ENTITIES_H__
  #define __XML_ENTITIES_H__
  
  #include <XMXml/xmlversion.h>
  #include <XMXml/tree.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /*
   * The different valid entity types.
   */
  typedef enum {
      XML_INTERNAL_GENERAL_ENTITY = 1,
      XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
      XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
      XML_INTERNAL_PARAMETER_ENTITY = 4,
      XML_EXTERNAL_PARAMETER_ENTITY = 5,
      XML_INTERNAL_PREDEFINED_ENTITY = 6
  } xmlEntityType;
  
  /*
   * An unit of storage for an entity, contains the string, the value
   * and the linkind data needed for the linking in the hash table.
   */
  
  struct _xmlEntity {
      void           *_private;	        /* application data */
      xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
      const xmlChar          *name;	/* Entity name */
      struct _xmlNode    *children;	/* First child link */
      struct _xmlNode        *last;	/* Last child link */
      struct _xmlDtd       *parent;	/* -> DTD */
      struct _xmlNode        *next;	/* next sibling link  */
      struct _xmlNode        *prev;	/* previous sibling link  */
      struct _xmlDoc          *doc;       /* the containing document */
  
      xmlChar                *orig;	/* content without ref substitution */
      xmlChar             *content;	/* content or ndata if unparsed */
      int                   length;	/* the content length */
      xmlEntityType          etype;	/* The entity type */
      const xmlChar    *ExternalID;	/* External identifier for PUBLIC */
      const xmlChar      *SystemID;	/* URI for a SYSTEM or PUBLIC Entity */
  
      struct _xmlEntity     *nexte;	/* unused */
      const xmlChar           *URI;	/* the full URI as computed */
      int                    owner;	/* does the entity own the childrens */
      int			 checked;	/* was the entity content checked */
  					/* this is also used to count entites
  					 * references done from that entity */
  };
  
  /*
   * All entities are stored in an hash table.
   * There is 2 separate hash tables for global and parameter entities.
   */
  
  typedef struct _xmlHashTable xmlEntitiesTable;
  typedef xmlEntitiesTable *xmlEntitiesTablePtr;
  
  /*
   * External functions:
   */
  
  #ifdef LIBXML_LEGACY_ENABLED
  XMLPUBFUN void XMLCALL
  		xmlInitializePredefinedEntities	(void);
  #endif /* LIBXML_LEGACY_ENABLED */
  
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlNewEntity		(xmlDocPtr doc,
  						 const xmlChar *name,
  						 int type,
  						 const xmlChar *ExternalID,
  						 const xmlChar *SystemID,
  						 const xmlChar *content);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlAddDocEntity		(xmlDocPtr doc,
  						 const xmlChar *name,
  						 int type,
  						 const xmlChar *ExternalID,
  						 const xmlChar *SystemID,
  						 const xmlChar *content);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlAddDtdEntity		(xmlDocPtr doc,
  						 const xmlChar *name,
  						 int type,
  						 const xmlChar *ExternalID,
  						 const xmlChar *SystemID,
  						 const xmlChar *content);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlGetPredefinedEntity	(const xmlChar *name);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlGetDocEntity		(xmlDocPtr doc,
  						 const xmlChar *name);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlGetDtdEntity		(xmlDocPtr doc,
  						 const xmlChar *name);
  XMLPUBFUN xmlEntityPtr XMLCALL
  			xmlGetParameterEntity	(xmlDocPtr doc,
  						 const xmlChar *name);
  #ifdef LIBXML_LEGACY_ENABLED
  XMLPUBFUN const xmlChar * XMLCALL
  			xmlEncodeEntities	(xmlDocPtr doc,
  						 const xmlChar *input);
  #endif /* LIBXML_LEGACY_ENABLED */
  XMLPUBFUN xmlChar * XMLCALL
  			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
  						 const xmlChar *input);
  XMLPUBFUN xmlChar * XMLCALL
  			xmlEncodeSpecialChars	(xmlDocPtr doc,
  						 const xmlChar *input);
  XMLPUBFUN xmlEntitiesTablePtr XMLCALL
  			xmlCreateEntitiesTable	(void);
  #ifdef LIBXML_TREE_ENABLED
  XMLPUBFUN xmlEntitiesTablePtr XMLCALL
  			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
  #endif /* LIBXML_TREE_ENABLED */
  XMLPUBFUN void XMLCALL
  			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
  #ifdef LIBXML_OUTPUT_ENABLED
  XMLPUBFUN void XMLCALL
  			xmlDumpEntitiesTable	(xmlBufferPtr buf,
  						 xmlEntitiesTablePtr table);
  XMLPUBFUN void XMLCALL
  			xmlDumpEntityDecl	(xmlBufferPtr buf,
  						 xmlEntityPtr ent);
  #endif /* LIBXML_OUTPUT_ENABLED */
  #ifdef LIBXML_LEGACY_ENABLED
  XMLPUBFUN void XMLCALL
  			xmlCleanupPredefinedEntities(void);
  #endif /* LIBXML_LEGACY_ENABLED */
  
  
  #ifdef __cplusplus
  }
  #endif
  
  # endif /* __XML_ENTITIES_H__ */
  