Home | History | Annotate | Download | only in libxml
      1 /*
      2  * Summary: interface for the XML entities handling
      3  * Description: this module provides some of the entity API needed
      4  *              for the parser and applications.
      5  *
      6  * Copy: See Copyright for the status of this software.
      7  *
      8  * Author: Daniel Veillard
      9  */
     10 
     11 #ifndef __XML_ENTITIES_H__
     12 #define __XML_ENTITIES_H__
     13 
     14 #include <libxml/xmlversion.h>
     15 #include <libxml/tree.h>
     16 
     17 #ifdef __cplusplus
     18 extern "C" {
     19 #endif
     20 
     21 /*
     22  * The different valid entity types.
     23  */
     24 typedef enum {
     25     XML_INTERNAL_GENERAL_ENTITY = 1,
     26     XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
     27     XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
     28     XML_INTERNAL_PARAMETER_ENTITY = 4,
     29     XML_EXTERNAL_PARAMETER_ENTITY = 5,
     30     XML_INTERNAL_PREDEFINED_ENTITY = 6
     31 } xmlEntityType;
     32 
     33 /*
     34  * An unit of storage for an entity, contains the string, the value
     35  * and the linkind data needed for the linking in the hash table.
     36  */
     37 
     38 struct _xmlEntity {
     39     void           *_private;	        /* application data */
     40     xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
     41     const xmlChar          *name;	/* Entity name */
     42     struct _xmlNode    *children;	/* First child link */
     43     struct _xmlNode        *last;	/* Last child link */
     44     struct _xmlDtd       *parent;	/* -> DTD */
     45     struct _xmlNode        *next;	/* next sibling link  */
     46     struct _xmlNode        *prev;	/* previous sibling link  */
     47     struct _xmlDoc          *doc;       /* the containing document */
     48 
     49     xmlChar                *orig;	/* content without ref substitution */
     50     xmlChar             *content;	/* content or ndata if unparsed */
     51     int                   length;	/* the content length */
     52     xmlEntityType          etype;	/* The entity type */
     53     const xmlChar    *ExternalID;	/* External identifier for PUBLIC */
     54     const xmlChar      *SystemID;	/* URI for a SYSTEM or PUBLIC Entity */
     55 
     56     struct _xmlEntity     *nexte;	/* unused */
     57     const xmlChar           *URI;	/* the full URI as computed */
     58     int                    owner;	/* does the entity own the childrens */
     59     int			 checked;	/* was the entity content checked */
     60 					/* this is also used to count entites
     61 					 * references done from that entity */
     62 };
     63 
     64 /*
     65  * All entities are stored in an hash table.
     66  * There is 2 separate hash tables for global and parameter entities.
     67  */
     68 
     69 typedef struct _xmlHashTable xmlEntitiesTable;
     70 typedef xmlEntitiesTable *xmlEntitiesTablePtr;
     71 
     72 /*
     73  * External functions:
     74  */
     75 
     76 #ifdef LIBXML_LEGACY_ENABLED
     77 XMLPUBFUN void XMLCALL
     78 		xmlInitializePredefinedEntities	(void);
     79 #endif /* LIBXML_LEGACY_ENABLED */
     80 
     81 XMLPUBFUN xmlEntityPtr XMLCALL
     82 			xmlNewEntity		(xmlDocPtr doc,
     83 						 const xmlChar *name,
     84 						 int type,
     85 						 const xmlChar *ExternalID,
     86 						 const xmlChar *SystemID,
     87 						 const xmlChar *content);
     88 XMLPUBFUN xmlEntityPtr XMLCALL
     89 			xmlAddDocEntity		(xmlDocPtr doc,
     90 						 const xmlChar *name,
     91 						 int type,
     92 						 const xmlChar *ExternalID,
     93 						 const xmlChar *SystemID,
     94 						 const xmlChar *content);
     95 XMLPUBFUN xmlEntityPtr XMLCALL
     96 			xmlAddDtdEntity		(xmlDocPtr doc,
     97 						 const xmlChar *name,
     98 						 int type,
     99 						 const xmlChar *ExternalID,
    100 						 const xmlChar *SystemID,
    101 						 const xmlChar *content);
    102 XMLPUBFUN xmlEntityPtr XMLCALL
    103 			xmlGetPredefinedEntity	(const xmlChar *name);
    104 XMLPUBFUN xmlEntityPtr XMLCALL
    105 			xmlGetDocEntity		(xmlDocPtr doc,
    106 						 const xmlChar *name);
    107 XMLPUBFUN xmlEntityPtr XMLCALL
    108 			xmlGetDtdEntity		(xmlDocPtr doc,
    109 						 const xmlChar *name);
    110 XMLPUBFUN xmlEntityPtr XMLCALL
    111 			xmlGetParameterEntity	(xmlDocPtr doc,
    112 						 const xmlChar *name);
    113 #ifdef LIBXML_LEGACY_ENABLED
    114 XMLPUBFUN const xmlChar * XMLCALL
    115 			xmlEncodeEntities	(xmlDocPtr doc,
    116 						 const xmlChar *input);
    117 #endif /* LIBXML_LEGACY_ENABLED */
    118 XMLPUBFUN xmlChar * XMLCALL
    119 			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
    120 						 const xmlChar *input);
    121 XMLPUBFUN xmlChar * XMLCALL
    122 			xmlEncodeSpecialChars	(xmlDocPtr doc,
    123 						 const xmlChar *input);
    124 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
    125 			xmlCreateEntitiesTable	(void);
    126 #ifdef LIBXML_TREE_ENABLED
    127 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
    128 			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
    129 #endif /* LIBXML_TREE_ENABLED */
    130 XMLPUBFUN void XMLCALL
    131 			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
    132 #ifdef LIBXML_OUTPUT_ENABLED
    133 XMLPUBFUN void XMLCALL
    134 			xmlDumpEntitiesTable	(xmlBufferPtr buf,
    135 						 xmlEntitiesTablePtr table);
    136 XMLPUBFUN void XMLCALL
    137 			xmlDumpEntityDecl	(xmlBufferPtr buf,
    138 						 xmlEntityPtr ent);
    139 #endif /* LIBXML_OUTPUT_ENABLED */
    140 #ifdef LIBXML_LEGACY_ENABLED
    141 XMLPUBFUN void XMLCALL
    142 			xmlCleanupPredefinedEntities(void);
    143 #endif /* LIBXML_LEGACY_ENABLED */
    144 
    145 
    146 #ifdef __cplusplus
    147 }
    148 #endif
    149 
    150 # endif /* __XML_ENTITIES_H__ */
    151