Serious upgrade of internal subset support, setup for gtk-doc, Daniel
diff --git a/include/libxml/entities.h b/include/libxml/entities.h
index 86c425f..99ce163 100644
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -34,7 +34,8 @@
const CHAR *ExternalID; /* External identifier for PUBLIC Entity */
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC Entity */
CHAR *content; /* The entity content or ndata if unparsed */
-} xmlEntity, *xmlEntityPtr;
+} xmlEntity;
+typedef xmlEntity *xmlEntityPtr;
/*
* ALl entities are stored in a table there is one table per DTD
@@ -47,28 +48,29 @@
int nb_entities; /* number of elements stored */
int max_entities; /* maximum number of elements */
xmlEntityPtr table; /* the table of entities */
-} xmlEntitiesTable, *xmlEntitiesTablePtr;
+} xmlEntitiesTable;
+typedef xmlEntitiesTable *xmlEntitiesTablePtr;
/*
* External functions :
*/
-extern void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
+void xmlAddDocEntity(xmlDocPtr doc, const CHAR *name, int type,
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
-extern void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
+void xmlAddDtdEntity(xmlDocPtr doc, const CHAR *name, int type,
const CHAR *ExternalID, const CHAR *SystemID, CHAR *content);
-extern xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
-extern xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
-extern xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
-extern CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
-extern xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
-extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
-extern void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
-extern void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
-extern xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
+xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
+xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
+xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
+CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
+xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
+xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
+void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
+void xmlDumpEntitiesTable(xmlEntitiesTablePtr table);
+xmlParserInputPtr xmlNewEntityInputStream(xmlParserCtxtPtr ctxt,
xmlEntityPtr entity);
-extern xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
+xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
#ifdef __cplusplus
}
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index a06d481..ca0835f 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -26,24 +26,28 @@
const CHAR *cur; /* Current char being parsed */
int line; /* Current line */
int col; /* Current column */
-} xmlParserInput, *xmlParserInputPtr;
+} xmlParserInput;
+typedef xmlParserInput *xmlParserInputPtr;
-typedef struct xmlParserNodeInfo {
+typedef struct _xmlParserNodeInfo {
const struct xmlNode* node;
/* Position & line # that text that created the node begins & ends on */
unsigned long begin_pos;
unsigned long begin_line;
unsigned long end_pos;
unsigned long end_line;
-} xmlParserNodeInfo;
+} _xmlParserNodeInfo;
+typedef _xmlParserNodeInfo xmlParserNodeInfo;
typedef struct xmlParserNodeInfoSeq {
unsigned long maximum;
unsigned long length;
xmlParserNodeInfo* buffer;
-} xmlParserNodeInfoSeq, *xmlParserNodeInfoSeqPtr;
+} _xmlParserNodeInfoSeq;
+typedef _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
+typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
-typedef struct xmlParserCtxt {
+typedef struct _xmlParserCtxt {
struct xmlSAXHandler *sax; /* The SAX handler */
xmlDocPtr doc; /* the document being built */
int wellFormed; /* is the document well formed */
@@ -62,7 +66,9 @@
int record_info; /* Whether node info should be kept */
xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
-} xmlParserCtxt, *xmlParserCtxtPtr;
+} _xmlParserCtxt;
+typedef _xmlParserCtxt xmlParserCtxt;
+typedef xmlParserCtxt *xmlParserCtxtPtr;
/*
* a SAX Locator.
@@ -73,7 +79,9 @@
const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
int (*getLineNumber)(xmlParserCtxtPtr ctxt);
int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
-} xmlSAXLocator, *xmlSAXLocatorPtr;
+} _xmlSAXLocator;
+typedef _xmlSAXLocator xmlSAXLocator;
+typedef xmlSAXLocator *xmlSAXLocatorPtr;
/*
* a SAX Exception.
@@ -120,7 +128,8 @@
warningSAXFunc warning;
errorSAXFunc error;
fatalErrorSAXFunc fatalError;
-} xmlSAXHandler, *xmlSAXHandlerPtr;
+} xmlSAXHandler;
+typedef xmlSAXHandler *xmlSAXHandlerPtr;
/*
* Global variables: just the SAX interface tables we are looking for full
@@ -130,61 +139,58 @@
extern xmlSAXHandler xmlDefaultSAXHandler;
#include "entities.h"
+#include "error.h"
/*
* CHAR handling
*/
-extern CHAR *xmlStrdup(const CHAR *input);
-extern CHAR *xmlStrndup(const CHAR *input, int n);
-extern CHAR *xmlStrchr(const CHAR *str, CHAR val);
-extern int xmlStrcmp(const CHAR *str1, const CHAR *str2);
-extern int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
-extern int xmlStrlen(const CHAR *str);
-extern CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
-extern CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
+CHAR *xmlStrdup(const CHAR *cur);
+CHAR *xmlStrndup(const CHAR *cur, int len);
+CHAR *xmlStrchr(const CHAR *str, CHAR val);
+int xmlStrcmp(const CHAR *str1, const CHAR *str2);
+int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
+int xmlStrlen(const CHAR *str);
+CHAR *xmlStrcat(CHAR *cur, const CHAR *add);
+CHAR *xmlStrncat(CHAR *cur, const CHAR *add, int len);
/*
* Interfaces
*/
-extern xmlDocPtr xmlParseDoc(CHAR *cur);
-extern xmlDocPtr xmlParseMemory(char *buffer, int size);
-extern xmlDocPtr xmlParseFile(const char *filename);
+xmlDocPtr xmlParseDoc(CHAR *cur);
+xmlDocPtr xmlParseMemory(char *buffer, int size);
+xmlDocPtr xmlParseFile(const char *filename);
/*
* Recovery mode
*/
-extern xmlDocPtr xmlRecoverDoc(CHAR *cur);
-extern xmlDocPtr xmlRecoverMemory(char *buffer, int size);
-extern xmlDocPtr xmlRecoverFile(const char *filename);
+xmlDocPtr xmlRecoverDoc(CHAR *cur);
+xmlDocPtr xmlRecoverMemory(char *buffer, int size);
+xmlDocPtr xmlRecoverFile(const char *filename);
/*
* Internal routines
*/
-extern int xmlParseDocument(xmlParserCtxtPtr ctxt);
-extern xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
-extern xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
+int xmlParseDocument(xmlParserCtxtPtr ctxt);
+xmlDocPtr xmlSAXParseDoc(xmlSAXHandlerPtr sax, CHAR *cur, int recovery);
+xmlDocPtr xmlSAXParseMemory(xmlSAXHandlerPtr sax, char *buffer,
int size, int recovery);
-extern xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
+xmlDocPtr xmlSAXParseFile(xmlSAXHandlerPtr sax, const char *filename,
int recovery);
-extern void xmlInitParserCtxt(xmlParserCtxtPtr ctx);
-extern void xmlClearParserCtxt(xmlParserCtxtPtr ctx);
-extern void xmlSetupParserForBuffer(xmlParserCtxtPtr ctx, const CHAR* buffer,
+void xmlInitParserCtxt(xmlParserCtxtPtr ctxt);
+void xmlClearParserCtxt(xmlParserCtxtPtr ctxt);
+void xmlSetupParserForBuffer(xmlParserCtxtPtr ctxt, const CHAR* buffer,
const char* filename);
-extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
-
-extern const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* c,
- const xmlNode* node);
-extern void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
-extern void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
+const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* ctxt,
+ const xmlNode* node);
+void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
+void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
const xmlNode* node);
-extern void xmlParserAddNodeInfo(xmlParserCtxtPtr ctx,
- const xmlParserNodeInfo* info);
+void xmlParserAddNodeInfo(xmlParserCtxtPtr ctxt,
+ const xmlParserNodeInfo* info);
-extern void xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...);
-extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
-extern void xmlDefaultSAXHandlerInit(void);
+void xmlDefaultSAXHandlerInit(void);
#ifdef __cplusplus
}
#endif
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
new file mode 100644
index 0000000..9cd6a21
--- /dev/null
+++ b/include/libxml/parserInternals.h
@@ -0,0 +1,128 @@
+/*
+ * parserInternals.h : internals routines exported by the parser.
+ *
+ * See Copyright for the status of this software.
+ *
+ * Daniel.Veillard@w3.org
+ */
+
+#ifndef __XML_PARSER_INTERNALS_H__
+#define __XML_PARSER_INTERNALS_H__
+
+#include "parser.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Entities
+ */
+void
+xmlHandleEntity(xmlParserCtxtPtr ctxt, xmlEntityPtr entity);
+
+/*
+ * Namespaces.
+ */
+CHAR *
+xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, CHAR **prefix);
+CHAR *
+xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseQuotedString(xmlParserCtxtPtr ctxt);
+void
+xmlParseNamespace(xmlParserCtxtPtr ctxt);
+
+/*
+ * Generic production rules
+ */
+CHAR *
+xmlParseName(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseNmtoken(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseEntityValue(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseAttValue(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseSystemLiteral(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParsePubidLiteral(xmlParserCtxtPtr ctxt);
+void
+xmlParseCharData(xmlParserCtxtPtr ctxt, int cdata);
+CHAR *
+xmlParseExternalID(xmlParserCtxtPtr ctxt, CHAR **publicID, int strict);
+xmlNodePtr
+xmlParseComment(xmlParserCtxtPtr ctxt, int create);
+CHAR *
+xmlParsePITarget(xmlParserCtxtPtr ctxt);
+void
+xmlParsePI(xmlParserCtxtPtr ctxt);
+void
+xmlParseNotationDecl(xmlParserCtxtPtr ctxt);
+void
+xmlParseEntityDecl(xmlParserCtxtPtr ctxt);
+int
+xmlParseDefaultDecl(xmlParserCtxtPtr ctxt, CHAR **value);
+xmlEnumerationPtr
+xmlParseNotationType(xmlParserCtxtPtr ctxt);
+xmlEnumerationPtr
+xmlParseEnumerationType(xmlParserCtxtPtr ctxt);
+int
+xmlParseEnumeratedType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
+int
+xmlParseAttributeType(xmlParserCtxtPtr ctxt, xmlEnumerationPtr *tree);
+void
+xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
+xmlElementContentPtr
+xmlParseElementMixedContentDecl(xmlParserCtxtPtr ctxt);
+xmlElementContentPtr
+xmlParseElementChildrenContentDecl(xmlParserCtxtPtr ctxt);
+int
+xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, CHAR *name,
+ xmlElementContentPtr *result);
+int
+xmlParseElementDecl(xmlParserCtxtPtr ctxt);
+void
+xmlParseMarkupDecl(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseCharRef(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseEntityRef(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseReference(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParsePEReference(xmlParserCtxtPtr ctxt);
+void
+xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt);
+xmlAttrPtr
+xmlParseAttribute(xmlParserCtxtPtr ctxt, xmlNodePtr node);
+xmlNodePtr
+xmlParseStartTag(xmlParserCtxtPtr ctxt);
+void
+xmlParseEndTag(xmlParserCtxtPtr ctxt, xmlNsPtr *nsPtr, CHAR **tagPtr);
+void
+xmlParseCDSect(xmlParserCtxtPtr ctxt);
+void
+xmlParseContent(xmlParserCtxtPtr ctxt);
+xmlNodePtr
+xmlParseElement(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseVersionNum(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseVersionInfo(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseEncName(xmlParserCtxtPtr ctxt);
+CHAR *
+xmlParseEncodingDecl(xmlParserCtxtPtr ctxt);
+int
+xmlParseSDDecl(xmlParserCtxtPtr ctxt);
+void
+xmlParseXMLDecl(xmlParserCtxtPtr ctxt);
+void
+xmlParseMisc(xmlParserCtxtPtr ctxt);
+
+
+#endif /* __XML_PARSER_INTERNALS_H__ */
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index ba77f76..4443836 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -55,41 +55,67 @@
/*
* a DTD Notation definition
- * TODO !!!!
*/
+typedef struct xmlNotation {
+ const CHAR *name; /* Notation name */
+ const CHAR *PublicID; /* Public identifier, if any */
+ const CHAR *SystemID; /* System identifier, if any */
+} xmlNotation;
+typedef xmlNotation *xmlNotationPtr;
+
/*
* a DTD Attribute definition
- * TODO !!!!
*/
-#define XML_ATTRIBUTE_NONE 1
-#define XML_ATTRIBUTE_REQUIRED 2
-#define XML_ATTRIBUTE_IMPLIED 3
-#define XML_ATTRIBUTE_FIXED 4
+typedef enum {
+ XML_ATTRIBUTE_CDATA = 1,
+ XML_ATTRIBUTE_ID,
+ XML_ATTRIBUTE_IDREF ,
+ XML_ATTRIBUTE_IDREFS,
+ XML_ATTRIBUTE_ENTITY,
+ XML_ATTRIBUTE_ENTITIES,
+ XML_ATTRIBUTE_NMTOKEN,
+ XML_ATTRIBUTE_NMTOKENS,
+ XML_ATTRIBUTE_ENUMERATION,
+ XML_ATTRIBUTE_NOTATION
+} xmlAttributeType;
-#define XML_ATTRIBUTE_STRING 1
-#define XML_ATTRIBUTE_ID 2
-#define XML_ATTRIBUTE_IDREF 3
-#define XML_ATTRIBUTE_IDREFS 4
-#define XML_ATTRIBUTE_ENTITY 5
-#define XML_ATTRIBUTE_ENTITIES 6
-#define XML_ATTRIBUTE_NMTOKEN 7
-#define XML_ATTRIBUTE_NMTOKENS 8
-#define XML_ATTRIBUTE_ENUMERATED 9
+typedef enum {
+ XML_ATTRIBUTE_NONE = 1,
+ XML_ATTRIBUTE_REQUIRED,
+ XML_ATTRIBUTE_IMPLIED,
+ XML_ATTRIBUTE_FIXED
+} xmlAttributeDefault;
+
+typedef struct xmlEnumeration {
+ struct xmlEnumeration *next; /* next one */
+ const CHAR *name; /* Enumeration name */
+} xmlEnumeration;
+typedef xmlEnumeration *xmlEnumerationPtr;
+
+typedef struct xmlAttribute {
+ const CHAR *elem; /* Element holding the attribute */
+ const CHAR *name; /* Attribute name */
+ xmlAttributeType type; /* The type */
+ xmlAttributeDefault def; /* the default */
+ const CHAR *defaultValue;/* or the default value */
+ xmlEnumerationPtr tree; /* or the enumeration tree if any */
+} xmlAttribute;
+typedef xmlAttribute *xmlAttributePtr;
/*
* a DTD Element definition.
*/
typedef enum {
- XML_ELEMENT_CONTENT_PCDATA=1,
+ XML_ELEMENT_CONTENT_PCDATA = 1,
XML_ELEMENT_CONTENT_ELEMENT,
XML_ELEMENT_CONTENT_SEQ,
XML_ELEMENT_CONTENT_OR
} xmlElementContentType;
typedef enum {
- XML_ELEMENT_CONTENT_ONCE=1,
+ XML_ELEMENT_CONTENT_ONCE = 1,
XML_ELEMENT_CONTENT_OPT,
XML_ELEMENT_CONTENT_MULT,
XML_ELEMENT_CONTENT_PLUS
@@ -101,10 +127,11 @@
const CHAR *name; /* Element name */
struct xmlElementContent *c1; /* first child */
struct xmlElementContent *c2; /* second child */
-} xmlElementContent, *xmlElementContentPtr;
+} xmlElementContent;
+typedef xmlElementContent *xmlElementContentPtr;
typedef enum {
- XML_ELEMENT_TYPE_EMPTY=1,
+ XML_ELEMENT_TYPE_EMPTY = 1,
XML_ELEMENT_TYPE_ANY,
XML_ELEMENT_TYPE_MIXED,
XML_ELEMENT_TYPE_ELEMENT
@@ -114,7 +141,8 @@
const CHAR *name; /* Element name */
xmlElementTypeVal type; /* The type */
xmlElementContentPtr content; /* the allowed element content */
-} xmlElement, *xmlElementPtr;
+} xmlElement;
+typedef xmlElement *xmlElementPtr;
/*
* An XML namespace.
@@ -123,7 +151,7 @@
*/
typedef enum {
- XML_GLOBAL_NAMESPACE=1, /* old style global namespace */
+ XML_GLOBAL_NAMESPACE = 1, /* old style global namespace */
XML_LOCAL_NAMESPACE /* new style local scoping */
} xmlNsType;
@@ -132,7 +160,8 @@
xmlNsType type; /* global or local */
const CHAR *href; /* URL for the namespace */
const CHAR *prefix; /* prefix for the namespace */
-} xmlNs, *xmlNsPtr;
+} xmlNs;
+typedef xmlNs *xmlNsPtr;
/*
* An XML DtD, as defined by <!DOCTYPE.
@@ -141,10 +170,13 @@
const CHAR *name; /* Name of the DTD */
const CHAR *ExternalID; /* External identifier for PUBLIC DTD */
const CHAR *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
+ void *notations; /* Hash table for notations if any */
void *elements; /* Hash table for elements if any */
+ void *attributes; /* Hash table for attributes if any */
void *entities; /* Hash table for entities if any */
/* struct xmlDtd *next; * next link for this document */
-} xmlDtd, *xmlDtdPtr;
+} xmlDtd;
+typedef xmlDtd *xmlDtdPtr;
/*
* A attribute of an XML node.
@@ -159,7 +191,8 @@
struct xmlAttr *next; /* parent->childs link */
const CHAR *name; /* the name of the property */
struct xmlNode *val; /* the value of the property */
-} xmlAttr, *xmlAttrPtr;
+} xmlAttr;
+typedef xmlAttr *xmlAttrPtr;
/*
* A node in an XML tree.
@@ -181,7 +214,9 @@
xmlNs *ns; /* pointer to the associated namespace */
xmlNs *nsDef; /* namespace definitions on this node */
CHAR *content; /* the content */
-} xmlNode, *xmlNodePtr;
+} _xmlNode;
+typedef _xmlNode xmlNode;
+typedef _xmlNode *xmlNodePtr;
/*
* An XML document.
@@ -201,7 +236,9 @@
struct xmlDtd *extSubset; /* the document external subset */
struct xmlNs *oldNs; /* Global namespace, the old way */
struct xmlNode *root; /* the document tree */
-} xmlDoc, *xmlDocPtr;
+} _xmlDoc;
+typedef _xmlDoc xmlDoc;
+typedef xmlDoc *xmlDocPtr;
/*
* Variables.
@@ -213,110 +250,110 @@
/*
* Creating/freeing new structures
*/
-extern xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
+xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
const CHAR *ExternalID, const CHAR *SystemID);
-extern xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
+xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
const CHAR *ExternalID, const CHAR *SystemID);
-extern void xmlFreeDtd(xmlDtdPtr cur);
-extern xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *AS);
-extern xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *AS);
-extern void xmlFreeNs(xmlNsPtr cur);
-extern xmlDocPtr xmlNewDoc(const CHAR *version);
-extern void xmlFreeDoc(xmlDocPtr cur);
-extern xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
+void xmlFreeDtd(xmlDtdPtr cur);
+xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix);
+xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix);
+void xmlFreeNs(xmlNsPtr cur);
+xmlDocPtr xmlNewDoc(const CHAR *version);
+void xmlFreeDoc(xmlDocPtr cur);
+xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
const CHAR *value);
-extern xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
+xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
const CHAR *value);
-extern void xmlFreePropList(xmlAttrPtr cur);
-extern void xmlFreeProp(xmlAttrPtr cur);
-extern xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
-extern xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
-extern xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
-extern xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
+void xmlFreePropList(xmlAttrPtr cur);
+void xmlFreeProp(xmlAttrPtr cur);
+xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
+xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
+xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
+xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
/*
* Creating new nodes
*/
-extern xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
+xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
const CHAR *name, CHAR *content);
-extern xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
-extern xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
+xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
+xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
const CHAR *name, CHAR *content);
-extern xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
-extern xmlNodePtr xmlNewText(const CHAR *content);
-extern xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
-extern xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
-extern xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
-extern xmlNodePtr xmlNewComment(CHAR *content);
-extern xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
-extern xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
-extern xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
+xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
+xmlNodePtr xmlNewText(const CHAR *content);
+xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
+xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
+xmlNodePtr xmlNewDocComment(xmlDocPtr doc, CHAR *content);
+xmlNodePtr xmlNewComment(CHAR *content);
+xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
+xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
+xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
/*
* Navigating
*/
-extern xmlNodePtr xmlGetLastChild(xmlNodePtr node);
-extern int xmlNodeIsText(xmlNodePtr node);
+xmlNodePtr xmlGetLastChild(xmlNodePtr parent);
+int xmlNodeIsText(xmlNodePtr node);
/*
* Changing the structure
*/
-extern xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
-extern void xmlUnlinkNode(xmlNodePtr cur);
+xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
+void xmlUnlinkNode(xmlNodePtr cur);
-extern xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
-extern void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
+xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
+void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
-extern void xmlFreeNodeList(xmlNodePtr cur);
-extern void xmlFreeNode(xmlNodePtr cur);
+void xmlFreeNodeList(xmlNodePtr cur);
+void xmlFreeNode(xmlNodePtr cur);
/*
* Namespaces
*/
-extern xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
+xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
const CHAR *nameSpace);
-extern xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
+xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
const CHAR *href);
-extern void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
-extern xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
-extern xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
+void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
+xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
+xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
/*
* Changing the content.
*/
-extern xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
+xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
const CHAR *value);
-extern CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
-extern xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
-extern xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
+CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
+xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
+xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
int len);
-extern CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
-extern void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
-extern void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
-extern void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
-extern void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
-extern CHAR *xmlNodeGetContent(xmlNodePtr cur);
+CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
+void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
+void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
+void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
+void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
+CHAR *xmlNodeGetContent(xmlNodePtr cur);
/*
* Internal, don't use
*/
-extern void xmlBufferWriteCHAR(const CHAR *string);
-extern void xmlBufferWriteChar(const char *string);
+void xmlBufferWriteCHAR(const CHAR *string);
+void xmlBufferWriteChar(const char *string);
/*
* Saving
*/
-extern void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
-extern void xmlDocDump(FILE *f, xmlDocPtr doc);
+void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
+void xmlDocDump(FILE *f, xmlDocPtr cur);
int xmlSaveFile(const char *filename, xmlDocPtr cur);
/*
* Compression
*/
-extern int xmlGetDocCompressMode (xmlDocPtr doc);
-extern void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
-extern int xmlGetCompressMode(void);
-extern void xmlSetCompressMode(int mode);
+int xmlGetDocCompressMode (xmlDocPtr doc);
+void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
+int xmlGetCompressMode(void);
+void xmlSetCompressMode(int mode);
#ifdef __cplusplus
}
diff --git a/include/libxml/valid.h b/include/libxml/valid.h
index 6f0023a..14a7228 100644
--- a/include/libxml/valid.h
+++ b/include/libxml/valid.h
@@ -12,6 +12,20 @@
#include "tree.h"
/*
+ * ALl notation declarations are stored in a table
+ * there is one table per DTD
+ */
+
+#define XML_MIN_NOTATION_TABLE 32
+
+typedef struct xmlNotationTable {
+ int nb_notations; /* number of notations stored */
+ int max_notations; /* maximum number of notations */
+ xmlNotationPtr table; /* the table of attributes */
+} xmlNotationTable;
+typedef xmlNotationTable *xmlNotationTablePtr;
+
+/*
* ALl element declarations are stored in a table
* there is one table per DTD
*/
@@ -21,16 +35,54 @@
typedef struct xmlElementTable {
int nb_elements; /* number of elements stored */
int max_elements; /* maximum number of elements */
- xmlElementPtr table; /* the table of entities */
-} xmlElementTable, *xmlElementTablePtr;
+ xmlElementPtr table; /* the table of elements */
+} xmlElementTable;
+typedef xmlElementTable *xmlElementTablePtr;
-extern xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, char *name, int type,
+/*
+ * ALl attribute declarations are stored in a table
+ * there is one table per DTD
+ */
+
+#define XML_MIN_ATTRIBUTE_TABLE 32
+
+typedef struct xmlAttributeTable {
+ int nb_attributes; /* number of attributes stored */
+ int max_attributes; /* maximum number of attributes */
+ xmlAttributePtr table; /* the table of attributes */
+} xmlAttributeTable;
+typedef xmlAttributeTable *xmlAttributeTablePtr;
+
+/* Notation */
+xmlNotationPtr xmlAddNotationDecl(xmlDtdPtr dtd, CHAR *name,
+ CHAR *PublicID, CHAR *SystemID);
+xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
+void xmlFreeNotationTable(xmlNotationTablePtr table);
+void xmlDumpNotationTable(xmlNotationTablePtr table);
+
+/* Element Content */
+xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
+xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
+void xmlFreeElementContent(xmlElementContentPtr cur);
+
+/* Element */
+xmlElementPtr xmlAddElementDecl(xmlDtdPtr dtd, CHAR *name, int type,
xmlElementContentPtr content);
-extern xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
-extern xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
-extern void xmlFreeElementContent(xmlElementContentPtr cur);
+xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
+void xmlFreeElementTable(xmlElementTablePtr table);
+void xmlDumpElementTable(xmlElementTablePtr table);
-extern xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
-extern void xmlFreeElementTable(xmlElementTablePtr table);
-extern void xmlDumpElementTable(xmlElementTablePtr table);
+/* Enumeration */
+xmlEnumerationPtr xmlCreateEnumeration(CHAR *name);
+void xmlFreeEnumeration(xmlEnumerationPtr cur);
+xmlEnumerationPtr xmlCopyEnumeration(xmlEnumerationPtr cur);
+
+/* Attribute */
+xmlAttributePtr xmlAddAttributeDecl(xmlDtdPtr dtd, CHAR *elem,
+ CHAR *name, int type, int def,
+ CHAR *defaultValue, xmlEnumerationPtr tree);
+xmlAttributeTablePtr xmlCopyAttributeTable(xmlAttributeTablePtr table);
+void xmlFreeAttributeTable(xmlAttributeTablePtr table);
+void xmlDumpAttributeTable(xmlAttributeTablePtr table);
+
#endif /* __XML_VALID_H__ */