blob: 0bb28a0bdc36d24204b4997e3fbab23366d271ea [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: interface for the XML entities handling
3 * Description: this module provides some of the entity API needed
4 * for the parser and applications.
Owen Taylor3473f882001-02-23 17:55:21 +00005 *
Daniel Veillardbe586972003-11-18 20:56:51 +00006 * Copy: See Copyright for the status of this software.
Owen Taylor3473f882001-02-23 17:55:21 +00007 *
Daniel Veillardbe586972003-11-18 20:56:51 +00008 * Author: Daniel Veillard
Owen Taylor3473f882001-02-23 17:55:21 +00009 */
10
11#ifndef __XML_ENTITIES_H__
12#define __XML_ENTITIES_H__
13
Igor Zlatkovic76874e42003-08-25 09:05:12 +000014#include <libxml/xmlversion.h>
Owen Taylor3473f882001-02-23 17:55:21 +000015#include <libxml/tree.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21/*
Daniel Veillard61f26172002-03-12 18:46:39 +000022 * The different valid entity types.
Owen Taylor3473f882001-02-23 17:55:21 +000023 */
24typedef 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
Owen Taylor3473f882001-02-23 17:55:21 +000038struct _xmlEntity {
Daniel Veillardcbaf3992001-12-31 16:16:02 +000039 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +000040 xmlElementType type; /* XML_ENTITY_DECL, must be second ! */
Daniel Veillarde4301c82002-02-13 13:32:35 +000041 const xmlChar *name; /* Entity name */
Daniel Veillard8ee9c8f2002-01-26 21:42:58 +000042 struct _xmlNode *children; /* First child link */
43 struct _xmlNode *last; /* Last child link */
Owen Taylor3473f882001-02-23 17:55:21 +000044 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 */
Daniel Veillard2d84a892002-12-30 00:01:08 +000058 int owner; /* does the entity own the childrens */
Owen Taylor3473f882001-02-23 17:55:21 +000059};
60
61/*
Daniel Veillard61f26172002-03-12 18:46:39 +000062 * All entities are stored in an hash table.
63 * There is 2 separate hash tables for global and parameter entities.
Owen Taylor3473f882001-02-23 17:55:21 +000064 */
65
66typedef struct _xmlHashTable xmlEntitiesTable;
67typedef xmlEntitiesTable *xmlEntitiesTablePtr;
68
69/*
Daniel Veillard61f26172002-03-12 18:46:39 +000070 * External functions:
Owen Taylor3473f882001-02-23 17:55:21 +000071 */
72
William M. Brack21e4ef22005-01-02 09:53:13 +000073#ifdef LIBXML_LEGACY_ENABLED
Igor Zlatkovic76874e42003-08-25 09:05:12 +000074XMLPUBFUN void XMLCALL
75 xmlInitializePredefinedEntities (void);
William M. Brack21e4ef22005-01-02 09:53:13 +000076#endif /* LIBXML_LEGACY_ENABLED */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000077XMLPUBFUN xmlEntityPtr XMLCALL
78 xmlAddDocEntity (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +000079 const xmlChar *name,
80 int type,
81 const xmlChar *ExternalID,
82 const xmlChar *SystemID,
83 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000084XMLPUBFUN xmlEntityPtr XMLCALL
85 xmlAddDtdEntity (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +000086 const xmlChar *name,
87 int type,
88 const xmlChar *ExternalID,
89 const xmlChar *SystemID,
90 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000091XMLPUBFUN xmlEntityPtr XMLCALL
92 xmlGetPredefinedEntity (const xmlChar *name);
93XMLPUBFUN xmlEntityPtr XMLCALL
94 xmlGetDocEntity (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +000095 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000096XMLPUBFUN xmlEntityPtr XMLCALL
97 xmlGetDtdEntity (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +000098 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +000099XMLPUBFUN xmlEntityPtr XMLCALL
100 xmlGetParameterEntity (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000101 const xmlChar *name);
William M. Brack21e4ef22005-01-02 09:53:13 +0000102#ifdef LIBXML_LEGACY_ENABLED
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000103XMLPUBFUN const xmlChar * XMLCALL
104 xmlEncodeEntities (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000105 const xmlChar *input);
William M. Brack21e4ef22005-01-02 09:53:13 +0000106#endif /* LIBXML_LEGACY_ENABLED */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000107XMLPUBFUN xmlChar * XMLCALL
108 xmlEncodeEntitiesReentrant(xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000109 const xmlChar *input);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000110XMLPUBFUN xmlChar * XMLCALL
111 xmlEncodeSpecialChars (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000112 const xmlChar *input);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000113XMLPUBFUN xmlEntitiesTablePtr XMLCALL
114 xmlCreateEntitiesTable (void);
William M. Brack21e4ef22005-01-02 09:53:13 +0000115#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000116XMLPUBFUN xmlEntitiesTablePtr XMLCALL
117 xmlCopyEntitiesTable (xmlEntitiesTablePtr table);
William M. Brack21e4ef22005-01-02 09:53:13 +0000118#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000119XMLPUBFUN void XMLCALL
120 xmlFreeEntitiesTable (xmlEntitiesTablePtr table);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000121#ifdef LIBXML_OUTPUT_ENABLED
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000122XMLPUBFUN void XMLCALL
123 xmlDumpEntitiesTable (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000124 xmlEntitiesTablePtr table);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000125XMLPUBFUN void XMLCALL
126 xmlDumpEntityDecl (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000127 xmlEntityPtr ent);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000128#endif /* LIBXML_OUTPUT_ENABLED */
William M. Brack21e4ef22005-01-02 09:53:13 +0000129#ifdef LIBXML_LEGACY_ENABLED
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000130XMLPUBFUN void XMLCALL
131 xmlCleanupPredefinedEntities(void);
William M. Brack21e4ef22005-01-02 09:53:13 +0000132#endif /* LIBXML_LEGACY_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000133
134
135#ifdef __cplusplus
136}
137#endif
138
139# endif /* __XML_ENTITIES_H__ */