/* * entities.h : interface for the XML entities handking * * See Copyright for the status of this software. * * Daniel.Veillard@w3.org */ #ifndef __XML_ENTITIES_H__ #define __XML_ENTITIES_H__ #include "tree.h" #ifdef __cplusplus extern "C" { #endif #define XML_INTERNAL_GENERAL_ENTITY 1 #define XML_EXTERNAL_GENERAL_PARSED_ENTITY 2 #define XML_EXTERNAL_GENERAL_UNPARSED_ENTITY 3 #define XML_INTERNAL_PARAMETER_ENTITY 4 #define XML_EXTERNAL_PARAMETER_ENTITY 5 #define XML_INTERNAL_PREDEFINED_ENTITY 6 /* * An unit of storage for an entity, contains the string, the value * and the linkind data needed for the linking in the hash table. */ typedef struct xmlEntity { int type; /* The entity type */ int len; /* The lenght of the name */ const CHAR *name; /* Name of the entity */ const CHAR *ExternalID; /* External identifier for PUBLIC Entity */ const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */ CHAR *content; /* The entity content or ndata if unparsed */ CHAR *orig; /* The entity cont without ref substitution */ } xmlEntity; typedef xmlEntity *xmlEntityPtr; /* * ALl entities are stored in a table there is one table per DTD * and one extra per document. */ #define XML_MIN_ENTITIES_TABLE 32 typedef struct xmlEntitiesTable { int nb_entities; /* number of elements stored */ int max_entities; /* maximum number of elements */ xmlEntityPtr table; /* the table of entities */ } xmlEntitiesTable; typedef xmlEntitiesTable *xmlEntitiesTablePtr; /* * External functions : */ #include "parser.h" void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type, const CHAR *ExternalID, const CHAR *SystemID, CHAR *content); void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type, const CHAR *ExternalID, const CHAR *SystemID, CHAR *content); xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name); xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name); xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name); xmlEntityPtr xmlGetParameterEntity(xmlDocPtr doc, const CHAR *name); const CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input); CHAR *xmlEncodeEntitiesReentrant(xmlDocPtr doc, const CHAR *input); xmlEntitiesTablePtr xmlCreateEntitiesTable(void); xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table); void xmlFreeEntitiesTable(xmlEntitiesTablePtr table); void xmlDumpEntitiesTable(xmlBufferPtr buf, xmlEntitiesTablePtr table); xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table); #ifdef __cplusplus } #endif # endif /* __XML_ENTITIES_H__ */