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: * 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 (xmlDocPtr 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 (xmlDocPtr 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__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>