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 entities
     61 					 * references done from that entity
     62 					 * and if it contains '<' */
     63 };
     64 
     65 /*
     66  * All entities are stored in an hash table.
     67  * There is 2 separate hash tables for global and parameter entities.
     68  */
     69 
     70 typedef struct _xmlHashTable xmlEntitiesTable;
     71 typedef xmlEntitiesTable *xmlEntitiesTablePtr;
     72 
     73 /*
     74  * External functions:
     75  */
     76 
     77 #ifdef LIBXML_LEGACY_ENABLED
     78 XMLPUBFUN void XMLCALL
     79 		xmlInitializePredefinedEntities	(void);
     80 #endif /* LIBXML_LEGACY_ENABLED */
     81 
     82 XMLPUBFUN xmlEntityPtr XMLCALL
     83 			xmlNewEntity		(xmlDocPtr doc,
     84 						 const xmlChar *name,
     85 						 int type,
     86 						 const xmlChar *ExternalID,
     87 						 const xmlChar *SystemID,
     88 						 const xmlChar *content);
     89 XMLPUBFUN xmlEntityPtr XMLCALL
     90 			xmlAddDocEntity		(xmlDocPtr doc,
     91 						 const xmlChar *name,
     92 						 int type,
     93 						 const xmlChar *ExternalID,
     94 						 const xmlChar *SystemID,
     95 						 const xmlChar *content);
     96 XMLPUBFUN xmlEntityPtr XMLCALL
     97 			xmlAddDtdEntity		(xmlDocPtr doc,
     98 						 const xmlChar *name,
     99 						 int type,
    100 						 const xmlChar *ExternalID,
    101 						 const xmlChar *SystemID,
    102 						 const xmlChar *content);
    103 XMLPUBFUN xmlEntityPtr XMLCALL
    104 			xmlGetPredefinedEntity	(const xmlChar *name);
    105 XMLPUBFUN xmlEntityPtr XMLCALL
    106 			xmlGetDocEntity		(const xmlDoc *doc,
    107 						 const xmlChar *name);
    108 XMLPUBFUN xmlEntityPtr XMLCALL
    109 			xmlGetDtdEntity		(xmlDocPtr doc,
    110 						 const xmlChar *name);
    111 XMLPUBFUN xmlEntityPtr XMLCALL
    112 			xmlGetParameterEntity	(xmlDocPtr doc,
    113 						 const xmlChar *name);
    114 #ifdef LIBXML_LEGACY_ENABLED
    115 XMLPUBFUN const xmlChar * XMLCALL
    116 			xmlEncodeEntities	(xmlDocPtr doc,
    117 						 const xmlChar *input);
    118 #endif /* LIBXML_LEGACY_ENABLED */
    119 XMLPUBFUN xmlChar * XMLCALL
    120 			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
    121 						 const xmlChar *input);
    122 XMLPUBFUN xmlChar * XMLCALL
    123 			xmlEncodeSpecialChars	(const xmlDoc *doc,
    124 						 const xmlChar *input);
    125 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
    126 			xmlCreateEntitiesTable	(void);
    127 #ifdef LIBXML_TREE_ENABLED
    128 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
    129 			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
    130 #endif /* LIBXML_TREE_ENABLED */
    131 XMLPUBFUN void XMLCALL
    132 			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
    133 #ifdef LIBXML_OUTPUT_ENABLED
    134 XMLPUBFUN void XMLCALL
    135 			xmlDumpEntitiesTable	(xmlBufferPtr buf,
    136 						 xmlEntitiesTablePtr table);
    137 XMLPUBFUN void XMLCALL
    138 			xmlDumpEntityDecl	(xmlBufferPtr buf,
    139 						 xmlEntityPtr ent);
    140 #endif /* LIBXML_OUTPUT_ENABLED */
    141 #ifdef LIBXML_LEGACY_ENABLED
    142 XMLPUBFUN void XMLCALL
    143 			xmlCleanupPredefinedEntities(void);
    144 #endif /* LIBXML_LEGACY_ENABLED */
    145 
    146 
    147 #ifdef __cplusplus
    148 }
    149 #endif
    150 
    151 # endif /* __XML_ENTITIES_H__ */
    152