# Avoided if we are using Windows so that we can specify the directory to find the libxml DLL.
# useDynLib(XML)

#exportPattern(".*")
export(
 append.xmlNode,
 append.XMLNode,
 Doctype,
 asXMLNode,
 comment.SAX,
 dtdElement,
 dtdElementValidEntry,
 dtdEntity,
 dtdIsAttribute,
 dtdValidElement,
 endElement.SAX,
 entityDeclaration.SAX,
 genericSAXHandlers,
 getNodeSet,
 xpathApply,
 htmlTreeParse,
 libxmlVersion,
 newXMLDoc,
 newXMLNode,
 parseDTD,
 processingInstruction.SAX,
 saveXML,
 startElement.SAX,
 supportsExpat,
 supportsLibxml,
 text.SAX,
 toString.XMLNode,
 xmlApply,
 xmlAttributeType,
 xmlAttrs,
 xmlCDataNode,
 xmlChildren,
 xmlCommentNode,
 xmlContainsElement,
 xmlContainsEntity,
 xmlDOMApply,
 xmlElementsByTagName,
 xmlEventHandler,
 xmlEventParse,
 xmlGetAttr,
 xmlHandler,
 xmlName,
 xmlNamespace,
 xmlNode,
 xmlOutputBuffer,
 xmlOutputDOM,
 xmlPINode,
 xmlParent,
 xmlRoot,
 xmlSApply,
 xmlSize,
 xmlSize.default,
 xmlTextNode,
 xmlTree,
 xmlTreeParse,
 xmlValue,
 names.XMLNode,
 parseURI,
 asXMLTreeNode,
 xmlHashTree,
 addNode,
 xmlNamespaceDefinitions,
 "xmlChildren<-"
# xmlFlatListTree       
)

S3method(xmlNamespaceDefinitions, XMLNode)
S3method(xmlNamespaceDefinitions, XMLInternalNode)

#S3method(names, XMLFlatTree)
#S3method("$", XMLFlatListTree)

S3method(addNode, XMLHashTree)
S3method(xmlRoot, XMLHashTree)
S3method(print, XMLHashTree)


S3method(xmlParent, XMLTreeNode)
S3method(xmlChildren, XMLTreeNode)
S3method(xmlParent, XMLHashTreeNode)
S3method(xmlChildren, XMLHashTreeNode)
S3method(xmlSize, XMLHashTreeNode)

S3method(xmlSize, XMLHashTree)
S3method(xmlRoot, XMLHashTree)



S3method(xmlChildren, XMLNode)
S3method(xmlChildren, XMLInternalNode)


S3method(xmlValue, XMLInternalNode)

S3method(xmlName, XMLComment)
S3method(xmlName, XMLNode)
S3method(xmlName, XMLInternalNode)

S3method("[", XMLNode)
S3method("[[", XMLNode)
S3method("[[", XMLDocumentContent)

S3method("[[", XMLInternalNode)
S3method("[", XMLInternalNode)

S3method("[", XMLInternalDocument)
S3method("names", XMLInternalNode)

S3method("[<-", XMLNode)
S3method("[[<-", XMLNode)

S3method(names, XMLNode)
S3method(length, XMLNode)

S3method(xmlAttrs, XMLNode)
S3method(xmlAttrs, XMLInternalNode)
S3method(xmlAttrs, XMLElementDef)

S3method(xmlSize, XMLDocument)
S3method(xmlSize, default)
S3method(xmlSize, XMLNode)

S3method(print, XMLNode)
S3method(print, XMLTextNode)
S3method(print, XMLComment)
S3method(print, XMLCommentNode)
S3method(print, XMLEntityRef)
S3method(print, XMLCDataNode)
S3method(print, XMLProcessingInstruction) 


S3method(xmlRoot, XMLDocument)
S3method(xmlRoot, XMLInternalDocument)
S3method(xmlRoot, XMLDocumentContent)

S3method(xmlApply, XMLNode)
S3method(xmlApply, XMLDocument)
S3method(xmlApply, XMLDocumentContent)
S3method(xmlApply, XMLInternalNode)

S3method(xmlSApply, XMLNode)
S3method(xmlSApply, XMLDocument)
S3method(xmlSApply, XMLDocumentContent)
S3method(xmlSApply, XMLInternalNode)

S3method(xmlValue, XMLNode)
S3method(xmlValue, XMLTextNode)
S3method(xmlValue, XMLComment)
S3method(xmlValue, XMLCDataNode)
S3method(xmlValue, XMLProcessingInstruction)


S3method(xmlNamespace, XMLNode)
S3method(xmlNamespace, XMLInternalNode)

# No effect if append is not generic.
S3method(append, XMLNode)

S3method(saveXML, XMLInternalDocument)
S3method(saveXML, XMLInternalDOM)
S3method(saveXML, XMLOutputStream)
S3method(saveXML, XMLNode)

S3method(dtdElementValidEntry, XMLElementDef)
S3method(dtdElementValidEntry, XMLOrContent)
S3method(dtdElementValidEntry, XMLElementContent)
S3method(dtdElementValidEntry, character)
S3method(dtdElementValidEntry, XMLSequenceContent)


# Not yet exported....
#xmlValidity



if(FALSE) {
exportClasses("ExternalReference", "xmlSchemaRef", "libxmlTypeTable")
exportClasses("SchemaElementTable", "xmlSchemaElementRef",
              "SchemaTypeTable", "xmlSchemaTypeRef",
	      "SchemaAttributeTable", "xmlSchemaAttributeRef",
               "SchemaAttributeGroupTable", "xmlSchemaAttributeGroupRef",
              "SchemaNotationTable", "xmlSchemaNotationRef"
)

exportMethods("names", "$", "$<-", "coerce")
}

importFrom(utils, normalizePath)
