LTKCPP-- LLRP Toolkit C Plus Plus Library
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 entites
61  * references done from that entity */
62 };
63 
64 /*
65  * All entities are stored in an hash table.
66  * There is 2 separate hash tables for global and parameter entities.
67  */
68 
69 typedef struct _xmlHashTable xmlEntitiesTable;
70 typedef xmlEntitiesTable *xmlEntitiesTablePtr;
71 
72 /*
73  * External functions:
74  */
75 
76 #ifdef LIBXML_LEGACY_ENABLED
77 XMLPUBFUN void XMLCALL
78  xmlInitializePredefinedEntities (void);
79 #endif /* LIBXML_LEGACY_ENABLED */
80 
81 XMLPUBFUN xmlEntityPtr XMLCALL
82  xmlNewEntity (xmlDocPtr doc,
83  const xmlChar *name,
84  int type,
85  const xmlChar *ExternalID,
86  const xmlChar *SystemID,
87  const xmlChar *content);
88 XMLPUBFUN xmlEntityPtr XMLCALL
89  xmlAddDocEntity (xmlDocPtr doc,
90  const xmlChar *name,
91  int type,
92  const xmlChar *ExternalID,
93  const xmlChar *SystemID,
94  const xmlChar *content);
95 XMLPUBFUN xmlEntityPtr XMLCALL
96  xmlAddDtdEntity (xmlDocPtr doc,
97  const xmlChar *name,
98  int type,
99  const xmlChar *ExternalID,
100  const xmlChar *SystemID,
101  const xmlChar *content);
102 XMLPUBFUN xmlEntityPtr XMLCALL
103  xmlGetPredefinedEntity (const xmlChar *name);
104 XMLPUBFUN xmlEntityPtr XMLCALL
105  xmlGetDocEntity (xmlDocPtr doc,
106  const xmlChar *name);
107 XMLPUBFUN xmlEntityPtr XMLCALL
108  xmlGetDtdEntity (xmlDocPtr doc,
109  const xmlChar *name);
110 XMLPUBFUN xmlEntityPtr XMLCALL
111  xmlGetParameterEntity (xmlDocPtr doc,
112  const xmlChar *name);
113 #ifdef LIBXML_LEGACY_ENABLED
114 XMLPUBFUN const xmlChar * XMLCALL
115  xmlEncodeEntities (xmlDocPtr doc,
116  const xmlChar *input);
117 #endif /* LIBXML_LEGACY_ENABLED */
118 XMLPUBFUN xmlChar * XMLCALL
119  xmlEncodeEntitiesReentrant(xmlDocPtr doc,
120  const xmlChar *input);
121 XMLPUBFUN xmlChar * XMLCALL
122  xmlEncodeSpecialChars (xmlDocPtr doc,
123  const xmlChar *input);
124 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
125  xmlCreateEntitiesTable (void);
126 #ifdef LIBXML_TREE_ENABLED
127 XMLPUBFUN xmlEntitiesTablePtr XMLCALL
128  xmlCopyEntitiesTable (xmlEntitiesTablePtr table);
129 #endif /* LIBXML_TREE_ENABLED */
130 XMLPUBFUN void XMLCALL
131  xmlFreeEntitiesTable (xmlEntitiesTablePtr table);
132 #ifdef LIBXML_OUTPUT_ENABLED
133 XMLPUBFUN void XMLCALL
134  xmlDumpEntitiesTable (xmlBufferPtr buf,
135  xmlEntitiesTablePtr table);
136 XMLPUBFUN void XMLCALL
137  xmlDumpEntityDecl (xmlBufferPtr buf,
138  xmlEntityPtr ent);
139 #endif /* LIBXML_OUTPUT_ENABLED */
140 #ifdef LIBXML_LEGACY_ENABLED
141 XMLPUBFUN void XMLCALL
142  xmlCleanupPredefinedEntities(void);
143 #endif /* LIBXML_LEGACY_ENABLED */
144 
145 
146 #ifdef __cplusplus
147 }
148 #endif
149 
150 # endif /* __XML_ENTITIES_H__ */