| 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 |  |