[LIBXML2]
[reactos.git] / reactos / include / reactos / libs / libxml / entities.h
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__ */