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