--- a/xml/cxmllibrary/src/dom/src/document.c Tue Aug 31 17:02:56 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,951 +0,0 @@
-/*
-* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#include "cxml_internal.h"
-#include <xml/cxml/nw_dom_node.h>
-#include <xml/cxml/nw_dom_document.h>
-#include <xml/cxml/nw_dom_element.h>
-#include <xml/cxml/nw_tinytree.h>
-#include <xml/cxml/nw_encoder_wbxmlwriter.h>
-#include <xml/cxml/nw_xmlp_xmlp2wbxml.h>
-#include <xml/cxml/nw_tinydom_utils.h>
-
-/*#include "nw_parser.h"*/
-
-/************************
-* DOCUMENT - NODE Methods
-*************************/
-
-EXPORT_C void
-NW_DOM_DocumentNode_Delete(NW_DOM_DocumentNode_t* docNode){
- NW_WBXML_Parser_t *wbxmlParser;
- NW_TinyDom_Tree_t *tinyDomTree;
- NW_WBXML_Document_t *document;
- NW_TinyTree_t *tinyTree;
-
-if (docNode == NULL) {
- return;
- }
-
- tinyTree = NW_TinyTree_Node_findTree(docNode);
-
- if(tinyTree != NULL){
- document = NW_TinyDom_getDocHeader(tinyTree);
- tinyDomTree = NW_TinyDom_getTree(tinyTree);
- wbxmlParser = tinyDomTree->parser;
- if(wbxmlParser != NULL){
- NW_WBXML_Parser_delete(wbxmlParser);
- }
- if(tinyDomTree != NULL){
- NW_TinyDom_Tree_destruct(tinyDomTree);
- }
- if(document != NULL){
- NW_WBXML_Document_destruct(document);
- }
- }
-}
- /* ???? Does the writer need any cleanup ? */
-
-
-static void
-NW_TinyDom_Handle_Initialize(NW_TinyDom_Handle_t *h,
- NW_Uint32 default_public_id,
- NW_Bool extTNotStringTable)
-{
- NW_ASSERT(h != NULL);
-
- (void) NW_Mem_memset(h, 0, sizeof(*h));
-
- NW_WBXML_Parser_newInPlace (&(h->wbxmlParser));
- h->wbxmlParser.ext_t_not_table_index =(NW_Uint8)((extTNotStringTable == NW_FALSE)?
- CXML_FALSE : CXML_TRUE);
- NW_WBXML_Document_construct(&(h->document), default_public_id);
- NW_TinyDom_Tree_construct (&(h->tinyDOMTree),
- &(h->wbxmlParser),
- &(h->document),
- &(h->writer));
- NW_TinyDom_Parser_construct (&(h->tinyParser), &(h->tinyDOMTree));
-}
-
-
-/* ************************************************************************/
-
-/*
- * Create and populate a dom tree by parsing a buffer, returning the
- * document node.
- */
-
-EXPORT_C
-NW_DOM_DocumentNode_t *
-NW_DOM_DocumentNode_BuildWBXMLTree(NW_TinyDom_Handle_t *h,
- NW_Byte *buffer,
- NW_Int32 length,
- NW_Bool freeBuff,
- NW_Bool extTNotStringTable)
-{
- NW_Status_t status;
-
- NW_ASSERT(h != NULL);
-
- NW_TinyDom_Handle_Initialize(h, 0, extTNotStringTable);
-
- status = NW_TinyDom_Parser_buildTree (&(h->tinyParser),
- (char *)buffer,
- (NW_Uint32)length,
- freeBuff);
- if (status == NW_STAT_SUCCESS) {
- return h->tinyDOMTree.root_node;
- }
- return NULL;
-}
-
-/*
- * This function is same at that of NW_DOM_DocumentNode_BuildWBXMLTree(..)
- * but returns the error code.
- */
-
-static
-NW_DOM_DocumentNode_t *
-CXML_DOM_DocumentNode_BuildWBXMLTree(NW_TinyDom_Handle_t *h,
- NW_Byte *buffer,
- NW_Int32 length,
- NW_Bool freeBuff,
- NW_Bool extTNotStringTable,
- NW_Status_t* errorStatus)
-{
- NW_Status_t status;
-
- NW_ASSERT(h != NULL);
-
- NW_TinyDom_Handle_Initialize(h, 0, extTNotStringTable);
-
- status = NW_TinyDom_Parser_buildTree (&(h->tinyParser),
- (char *)buffer,
- (NW_Uint32)length,
- freeBuff);
- if (status == NW_STAT_SUCCESS)
- {
- *errorStatus = status;
- return h->tinyDOMTree.root_node;
- }
- *errorStatus = status;
- return NULL;
-}
-
-
-/* Function to copy the string table extension values from the
- * WBXML encoder to WBXML parser
- */
-
-static NW_Status_t
-NW_DOM_Write_WBXML_StrTbl(NW_TinyDom_Handle_t *p, void* WBXMLEncStrTbl)
-{
- NW_Status_t status = NW_STAT_SUCCESS;
- NW_Status_t s = NW_STAT_WBXML_ITERATE_DONE;
- NW_Uint32 stringTableByteCount = 0;
- NW_Encoder_StringTableIterator_t strTableIterator;
- NW_Uint8* pLiteralBuf;
- NW_String_t pLiteralStr;
- NW_Uint32 docTableIndex;
- NW_Encoder_StringTable_t* strTable = NULL;
- NW_WBXML_Document_t* doc = &(p->document);
-
- strTable = (NW_Encoder_StringTable_t*) WBXMLEncStrTbl;
-
- stringTableByteCount = NW_Encoder_StringTable_getTotalBytes(strTable);
-
-
- if(stringTableByteCount > 0)
- {
- /*The following function always return success so why bother to check? */
-
- NW_Encoder_StringTable_StringTableIterateInit(WBXMLEncStrTbl,&strTableIterator);
-
-
- s = NW_Encoder_StringTable_StringTableIterateNext
- (&strTableIterator,&stringTableByteCount,&pLiteralBuf);
-
- while(s == NW_STAT_WBXML_ITERATE_MORE)
- {
-
- pLiteralStr.length = stringTableByteCount;
- pLiteralStr.storage = pLiteralBuf;
-
- status = NW_WBXML_Document_putTableString(doc,&pLiteralStr,&docTableIndex) ;
-
- if(status != NW_STAT_SUCCESS)
- {
- break;
- }
-
- s = NW_Encoder_StringTable_StringTableIterateNext
- (&strTableIterator,&stringTableByteCount,&pLiteralBuf) ;
-
- }/*end while */
-
- }/*end if(stringTableByteCount > 0)*/
-
- //Delete the tree
-
- NW_Encoder_StringTable_delete(WBXMLEncStrTbl);
- WBXMLEncStrTbl = NULL;
- return status;
-}/*end NW_DOM_Write_WBXML_StrTbl()*/
-
-static
-NW_DOM_DocumentNode_t*
-NW_DOM_DocumentNode_BuildXMLTree(NW_TinyDom_Handle_t *h,
- NW_Byte *buffer,
- NW_Int32 length,
- NW_Uint32 publicID,
- NW_Bool extTNotStringTable)
-{
-
- NW_Buffer_t inBuff;
- NW_Buffer_t *outBuff = NULL;
- NW_Uint32 encoding;
- NW_Endianness_t endianness;
- NW_DOM_DocumentNode_t* docNode;
- NW_Status_t status;
- NW_Uint32 line;
- void* WBXMLEncStrTbl;
-
- inBuff.length = length;
- inBuff.data = buffer;
-
- status = NW_XML_ComputeEncoding(length,
- buffer,
- &encoding,
- &endianness);
- if(status != NW_STAT_SUCCESS){
- return NULL;
- }
-
-/*
- * If applications want to use HTML Parser they can call the exported
- * NW_HTMLP_HtmlToWbxml() and then call NW_DOM_DocumentNode_BuildWBXMLTree()
- */
- status = NW_XML_XmlToWbxml(&inBuff, encoding, &outBuff, &line, publicID,&WBXMLEncStrTbl);
-
-
-
- if(status != NW_STAT_SUCCESS){
- if(outBuff != NULL){
- NW_Mem_Free(outBuff);
- }
-
- return NULL;
- }
- docNode = NW_DOM_DocumentNode_BuildWBXMLTree(h,
- outBuff->data,
- outBuff->length,
- NW_TRUE,
- extTNotStringTable);
-
- /* Write extension string table related information to the WBXML encoder. */
-
- if( docNode && WBXMLEncStrTbl)
- {
- status = NW_DOM_Write_WBXML_StrTbl(h,WBXMLEncStrTbl);
- if(status != NW_STAT_SUCCESS)
- {
- if(outBuff != NULL)
- {
- NW_Mem_Free(outBuff);
- }
- }
- }/* end if(WBXMLEncStrTbl)*/
-
- NW_Mem_Free(outBuff);
- return docNode;
-}
-
-static
-NW_DOM_DocumentNode_t*
-CXML_DOM_DocumentNode_BuildXMLTree(NW_TinyDom_Handle_t *h,
- NW_Byte *buffer,
- NW_Int32 length,
- NW_Uint32 publicID,
- NW_Bool extTNotStringTable,
- NW_Status_t* errorStatus)
-{
-
- NW_Buffer_t inBuff;
- NW_Buffer_t *outBuff = NULL;
- NW_Uint32 encoding;
- NW_Endianness_t endianness;
- NW_DOM_DocumentNode_t* docNode;
- NW_Status_t status;
- NW_Uint32 line;
- void* WBXMLEncStrTbl;
-
- inBuff.length = length;
- inBuff.data = buffer;
-
- status = NW_XML_ComputeEncoding(length,
- buffer,
- &encoding,
- &endianness);
- if(status != NW_STAT_SUCCESS)
- {
- *errorStatus = status;
- return NULL;
- }
-
-/*
- * If applications want to use HTML Parser they can call the exported
- * NW_HTMLP_HtmlToWbxml() and then call NW_DOM_DocumentNode_BuildWBXMLTree()
- */
- status = NW_XML_XmlToWbxml(&inBuff, encoding, &outBuff, &line, publicID,&WBXMLEncStrTbl);
-
-
-
- if(status != NW_STAT_SUCCESS){
- if(outBuff != NULL){
- NW_Mem_Free(outBuff);
- }
- *errorStatus = status;
- return NULL;
- }
-
- docNode = CXML_DOM_DocumentNode_BuildWBXMLTree(h,
- outBuff->data,
- outBuff->length,
- NW_TRUE,
- extTNotStringTable,
- errorStatus);
-
- /* Write extension string table related information to the WBXML encoder. */
-
- if( docNode && WBXMLEncStrTbl)
- {
- status = NW_DOM_Write_WBXML_StrTbl(h,WBXMLEncStrTbl);
- if(status != NW_STAT_SUCCESS)
- {
- if(outBuff != NULL)
- {
- NW_Mem_Free(outBuff);
- }
- *errorStatus = status;
- }
- }/* end if(WBXMLEncStrTbl)*/
-
- NW_Mem_Free(outBuff);
- return docNode;
-}/*CXML_DOM_DocumentNode_BuildXMLTree() */
-
-EXPORT_C NW_DOM_DocumentNode_t*
-NW_DOM_DocumentNode_BuildTree(NW_TinyDom_Handle_t *h,
- NW_Byte *buffer,
- NW_Int32 length,
- NW_Bool encoded,
- NW_Uint32 publicID,
- NW_Bool extTNotStringTable)
-{
- if(encoded == NW_TRUE){
- return NW_DOM_DocumentNode_BuildWBXMLTree(h,
- buffer,
- length,
- NW_FALSE,
- extTNotStringTable);
- }
-
- return NW_DOM_DocumentNode_BuildXMLTree(h,buffer, length, publicID, extTNotStringTable);
-}
-
-
-
-
-/*
- * Returns publicId of the document (WBXML Specific)
- * otherwise 0
- */
-
-EXPORT_C NW_Uint32
-NW_DOM_DocumentNode_getPublicIdAsNumber(NW_DOM_DocumentNode_t *doc)
-{
- NW_WBXML_Document_t *header;
- NW_TinyTree_t *tiny_tree;
-
- NW_ASSERT(doc != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
- return 0;
- }
-
- tiny_tree = NW_TinyTree_Node_findTree(doc);
- header = NW_TinyDom_getDocHeader(tiny_tree);
- NW_ASSERT(header != NULL);
-
- return header->publicid;
-}
-
-/*
- * Gets the publicid as string
- * Returns
- * NW_STAT_DOM_NODE_TYPE_ERR
- * NW_STAT_SUCCESS
- * MODIFIED - docType
- */
-
-EXPORT_C NW_Status_t
-NW_DOM_DocumentNode_getPublicId(NW_DOM_DocumentNode_t *doc,
- NW_String_t *docType)
-{
- NW_WBXML_Document_t *header;
- NW_TinyTree_t *tiny_tree;
-
- NW_ASSERT(doc != NULL);
- NW_ASSERT(docType != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
- return NW_STAT_DOM_NODE_TYPE_ERR;
-
- tiny_tree = NW_TinyTree_Node_findTree(doc);
- header = NW_TinyDom_getDocHeader(tiny_tree);
-
- NW_ASSERT(header != NULL);
- NW_String_shallowCopy(docType, header->doc_type);
-
- return NW_STAT_SUCCESS;
-}
-
-/*
- * Returns the version of the document,
- * 0 in case of invalid operation (e.g. NULL doc)
- */
-
-EXPORT_C NW_Uint8
-NW_DOM_DocumentNode_getVersion(NW_DOM_DocumentNode_t *doc)
-{
- NW_WBXML_Document_t *header;
- NW_TinyTree_t *tiny_tree;
-
- NW_ASSERT(doc != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
- return 0;
- }
-
- tiny_tree = NW_TinyTree_Node_findTree(doc);
- header = NW_TinyDom_getDocHeader(tiny_tree);
- NW_ASSERT(header != NULL);
-
- return header->version;
-
-}
-
-/*
- * Returns the supported encoding of the document
- * or 0 for invalid document
- */
-
-EXPORT_C NW_Uint32
-NW_DOM_DocumentNode_getCharacterEncoding(NW_DOM_DocumentNode_t *doc)
-{
- NW_WBXML_Document_t *header;
- NW_TinyTree_t *tiny_tree;
-
- NW_ASSERT(doc != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
- return 0;
-
- tiny_tree = NW_TinyTree_Node_findTree(doc);
- header = NW_TinyDom_getDocHeader(tiny_tree);
- NW_ASSERT(header != NULL);
-
- return header->charset;
-}
-
-/*
- * Returns child node that is the root of this document
- */
-
-EXPORT_C NW_DOM_ElementNode_t *
-NW_DOM_DocumentNode_getDocumentElement(NW_DOM_DocumentNode_t *doc)
-{
- NW_DOM_Node_t *docChild;
- NW_Uint16 type;
-
- NW_ASSERT(doc != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE){
- return NULL;
- }
-
- /*
- * Get the first child of the document node
- * (can be a PI node)
- */
-
- docChild = NW_DOM_Node_getFirstChild(doc);
-
- type = NW_DOM_Node_getNodeType(docChild);
- if (type == 0){
- return NULL;
- }
-
- while (type != NW_DOM_ELEMENT_NODE){
- docChild = NW_DOM_Node_getNextSibling(docChild);
- type = NW_DOM_Node_getNodeType(docChild);
- }
-
- return docChild;
-}
-
-/*
- * Gets the dictionary
- */
-
-EXPORT_C NW_WBXML_Dictionary_t *
-NW_DOM_DocumentNode_getDictionary(NW_DOM_DocumentNode_t *doc)
-{
- NW_Uint32 publicid = 0;
- NW_Uint32 encoding;
- NW_WBXML_Dictionary_t *dictionary = NULL;
- NW_Status_t status;
-
- NW_ASSERT(doc != NULL);
-
- encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
- publicid = NW_DOM_DocumentNode_getPublicIdAsNumber(doc);
-
- if (publicid != 0){
- dictionary = NW_WBXML_Dictionary_getByPublicId(publicid);
- }
- else{
- NW_String_t docType;
-
- status = NW_DOM_DocumentNode_getPublicId(doc, &docType);
- if (status != NW_STAT_SUCCESS){
- return NULL;
- }
- dictionary = NW_WBXML_Dictionary_getByDocType(&docType, encoding);
- }
- return dictionary;
-}
-
-
-
-NW_Status_t
-NW_DOM_DocumentNode_getElementIteratorByTagName(NW_DOM_DocumentNode_t *doc,
- NW_String_t* name,
- NW_DOM_NodeIterator_t *handle)
-{
- NW_WBXML_Dictionary_t *dict = NULL;
- NW_String_UCS2Buff_t *buff = NULL;
- NW_Uint32 encoding;
- NW_Int16 token;
-
- NW_ASSERT(doc != NULL);
- NW_ASSERT(name != NULL);
- NW_ASSERT(handle != NULL);
-
- encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
- dict = NW_DOM_DocumentNode_getDictionary(doc);
- buff = NW_String_stringToUCS2Buff(name, encoding);
- if((buff == NULL) || (dict == NULL)){
- NW_Mem_Free(buff);
- return NW_STAT_FAILURE;
- }
- token = NW_WBXML_Dictionary_getTagToken(dict, buff, NW_TRUE);
- NW_Mem_Free(buff);
- if (token < 0) {
- return NW_STAT_FAILURE;
- }
- else {
- return NW_DOM_DocumentNode_getElementIteratorByTagToken(doc,
- (NW_Uint16)token,
- handle);
-}
-}
-
-NW_Status_t
-NW_DOM_DocumentNode_getElementIteratorByTagToken(NW_DOM_DocumentNode_t *doc,
- NW_Uint16 token,
- NW_DOM_NodeIterator_t *handle)
-{
-
- NW_DOM_ElementNode_t *elem;
-
- NW_ASSERT(doc != NULL);
- NW_ASSERT(handle != NULL);
-
- if (NW_DOM_Node_getNodeType(doc) != NW_DOM_DOCUMENT_NODE)
- return NW_STAT_DOM_NODE_TYPE_ERR;
-
- elem = NW_DOM_DocumentNode_getDocumentElement(doc);
- NW_ASSERT(elem != NULL);
-
- return NW_DOM_NodeIterator_initialize(handle, elem, token);
-}
-
-
-
-
-
-/*
- * Returns a pointer to the created Element Node
- */
-EXPORT_C NW_DOM_ElementNode_t *
-NW_DOM_DocumentNode_createElementNode(
- NW_DOM_DocumentNode_t *doc, NW_String_t *name)
-{
- NW_Uint32 encoding = NW_DOM_DocumentNode_getCharacterEncoding(doc);
- NW_String_UCS2Buff_t *ucs2Buff = NULL;
- NW_Uint8 *uint8Buf = NULL;
- NW_Int32 fqToken = 0;
- NW_WBXML_Dictionary_t *dictionary = NW_DOM_DocumentNode_getDictionary(doc);
- NW_TinyTree_t* tinyTree;
- NW_TinyDom_Tree_t *tree;
-
- if ((doc == NULL) || (name == NULL) || (dictionary == NULL))
- {
- return NULL;
- }
-
- ucs2Buff = NW_String_stringToUCS2Buff(name, encoding);
- if (ucs2Buff == NULL){
- return NULL;
- }
- uint8Buf = (NW_Uint8 *) CXML_Str_CvtToAscii((NW_Ucs2*) ucs2Buff);
- NW_Mem_Free(ucs2Buff);
- if(uint8Buf == NULL){
- return NULL;
- }
- tinyTree = NW_TinyTree_Node_findTree(doc);
- tree = NW_TinyDom_getTree(tinyTree);
-
- fqToken = (NW_Int32) NW_WBXML_Dictionary_getTagToken(dictionary, ucs2Buff, NW_TRUE);
- NW_Mem_Free(uint8Buf);
- if (fqToken == -1){
- return NW_TinyDom_createElementByName(tree, name);
- }
-
- return NW_TinyDom_createElementByToken(tree, (NW_Uint16)fqToken);
-}
-
-/*
- * Returns a pointer to the created Element Node
- */
-EXPORT_C NW_DOM_ElementNode_t *
-NW_DOM_DocumentNode_createElementNodeByToken(
- NW_DOM_DocumentNode_t *doc, NW_Uint16 token)
-{
- NW_TinyTree_t* tinyTree;
- NW_TinyDom_Tree_t *tree;
- NW_WBXML_Dictionary_t *dictionary;
-
- dictionary = NW_DOM_DocumentNode_getDictionary(doc);
- if ((doc == NULL) || (dictionary == NULL) || (token == 0))
- {
- return NULL;
- }
-
- tinyTree = NW_TinyTree_Node_findTree(doc);
- tree = NW_TinyDom_getTree(tinyTree);
-
- return NW_TinyDom_createElementByToken(tree, (NW_Uint16)token);
-}
-
-
-/*
- * Returns a pointer to the created Text Node
- */
-EXPORT_C NW_DOM_TextNode_t *
-NW_DOM_DocumentNode_createTextNodeWithTextItem(
- NW_DOM_DocumentNode_t *doc, NW_DOM_TextItem_t *data)
-{
- NW_TinyTree_t* tinyTree;
- NW_TinyDom_Tree_t *tree;
-
- if ((doc == NULL) || (data == NULL))
- return NULL;
-
- tinyTree = NW_TinyTree_Node_findTree(doc);
- tree = NW_TinyDom_getTree(tinyTree);
-
- return NW_TinyDom_createTextNode(tree, data);
-}
-
-/*
- * Returns a pointer to the created Text Node
- */
-EXPORT_C NW_DOM_TextNode_t *
-NW_DOM_DocumentNode_createTextNode(
- NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
- NW_TinyTree_t* tinyTree;
- NW_TinyDom_Tree_t *tree;
- NW_DOM_TextItem_t item;
-
- if (NW_DOM_TextItem_initFromString(&item, data) != NW_STAT_SUCCESS)
- return NULL;
-
- if ((doc == NULL) || (data == NULL))
- return NULL;
-
- tinyTree = NW_TinyTree_Node_findTree(doc);
- tree = NW_TinyDom_getTree(tinyTree);
-
- return NW_TinyDom_createTextNode(tree, &item);
-}
-
-/*
- * Returns a pointer to the created Comment Node
- */
-NW_DOM_CommentNode_t *
-NW_DOM_DocumentNode_createCommentNode(
- NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
- NW_DOM_TextNode_t *t =
- NW_DOM_DocumentNode_createTextNode(doc, data);
- if (t == NULL)
- return NULL;
- NW_TinyTree_Node_setUserFlags(t, T_DOM_NODE_COMMENT);
- t->flags |= T_DOM_NODE_XML;
- return (NW_DOM_CommentNode_t *)t;
-}
-
-
-/*
- * Returns a pointer to the created CDataSection Node
- */
-NW_DOM_CDATASectionNode_t *
-NW_DOM_DocumentNode_createCDATASectionNode(
- NW_DOM_DocumentNode_t *doc, NW_String_t *data)
-{
- NW_DOM_TextNode_t *t =
- NW_DOM_DocumentNode_createTextNode(doc, data);
- if (t == NULL)
- return NULL;
- NW_TinyTree_Node_setUserFlags(t, T_DOM_NODE_CDATASECTION);
- t->flags |= T_DOM_NODE_XML;
- return (NW_DOM_CommentNode_t *)t;
-}
-
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-NW_DOM_ProcessingInstructionNode_t *
-NW_DOM_DocumentNode_createProcessingInstructionNodeByAttrVal(NW_DOM_DocumentNode_t* pDoc,
- NW_String_t* pTargetString,
- NW_DOM_AttrVal_t* pData)
-{
- NW_TinyTree_Node_t* pPiNode;
- NW_TinyTree_Node_t* pAttrNode;
- NW_TinyTree_t* pTinyTree;
- NW_TinyDom_Tree_t* pTree;
- NW_WBXML_Dictionary_t* pDictionary;
- NW_Uint32 encoding;
- NW_Int32 fqToken;
-
- if ((pDoc == NULL) || (pTargetString == NULL) || (pData == NULL)) {
- return NULL;
- }
- pTinyTree = NW_TinyTree_Node_findTree(pDoc);
- pTree = NW_TinyDom_getTree(pTinyTree);
-
- pDictionary = NW_DOM_DocumentNode_getDictionary(pDoc);
- if (pDictionary == NULL) {
- return NULL;
- }
- encoding = NW_DOM_DocumentNode_getCharacterEncoding(pDoc);
- fqToken = NW_WBXML_Dictionary_getAttributeToken(pDictionary,
- pTargetString,
- encoding,
- NW_TRUE /* name */);
- if (fqToken == -1)
- {
- pPiNode = NW_TinyTree_createNode(&(pTree->tree), 0);
- if (pPiNode == NULL) {
- return NULL;
- }
- NW_TinyTree_Node_setUserFlags(pPiNode, T_DOM_NODE_PI);
-
- pAttrNode = NW_TinyDom_createAttributeByName(pTree,
- pTargetString,
- pData);
- if (pAttrNode == NULL) {
- (void)NW_TinyTree_deleteNode(pPiNode);
- return NULL;
- }
- (void)NW_TinyTree_attachChild(pPiNode, pAttrNode);
- return pPiNode;
- }
- return NW_DOM_DocumentNode_createProcessingInstructionNodeByToken(pDoc,
- (NW_Uint16)fqToken,
- pData);
-}
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-
-NW_DOM_ProcessingInstructionNode_t *
-NW_DOM_DocumentNode_createProcessingInstructionNodeByToken(
- NW_DOM_DocumentNode_t *pDoc, NW_Uint16 token, NW_DOM_AttrVal_t *pData)
-{
- NW_TinyTree_Node_t* pPiNode;
- NW_TinyTree_Node_t* pAttrNode;
- NW_TinyTree_t* pTinyTree;
- NW_TinyDom_Tree_t* pTree;
-
- if ((pDoc == NULL) || (token == 0) || (pData == NULL))
- return NULL;
-
- pTinyTree = NW_TinyTree_Node_findTree(pDoc);
- pTree = NW_TinyDom_getTree(pTinyTree);
- pPiNode = NW_TinyTree_createNode(&(pTree->tree), 0);
- if (pPiNode == NULL) {
- return NULL;
- }
- NW_TinyTree_Node_setUserFlags(pPiNode, T_DOM_NODE_PI);
-
- pAttrNode = NW_TinyDom_createAttributeByToken(pTree,
- (NW_Uint8)token,
- pData);
- if (pAttrNode == NULL) {
- (void)NW_TinyTree_deleteNode(pPiNode);
- return NULL;
- }
- (void)NW_TinyTree_attachChild(pPiNode, pAttrNode);
- return pPiNode;
-}
-
-/*
- * Returns a pointer to the created ProcessingInstructionNode Node
- */
-NW_DOM_ProcessingInstructionNode_t *
-NW_DOM_DocumentNode_createProcessingInstructionNode(
- NW_DOM_DocumentNode_t *doc, NW_String_t *target, NW_String_t *data)
-{
- NW_DOM_AttrVal_t val;
-
- if ((doc == NULL) || (target == 0) || (data == NULL))
- return NULL;
-
- NW_DOM_AttrVal_initFromString(&val, data);
- return NW_DOM_DocumentNode_createProcessingInstructionNodeByAttrVal(doc, target, &val);
-}
-
-/*
- * Returns a pointer to the created Document Node
- * - NOT SUPPRTED - ask Steve
-NW_DOM_DocumentNode_t *
-NW_DOM_DocumentNode_createDocument(
- NW_Uint8 version, NW_String_t *publicid, NW_Uint32 encoding)
-{
- NW_WBXML_Parser_t *WBXMLParser;
- NW_TinyDom_Parser_t *tinyParser;
- NW_TinyDom_Tree_t *domTree;
- NW_WBXML_Writer_t *writer;
- NW_Status_t status;
-
- WBXMLParser = NW_Mem_Malloc(sizeof(NW_WBXML_Parser_t));
- tinyParser = NW_Mem_Malloc(sizeof(NW_TinyDom_Parser_t));
- domTree = NW_Mem_Malloc(sizeof(NW_TinyDom_Tree_t));
- writer = NW_Mem_Malloc(sizeof(NW_WBXML_Writer_t));
-
- NW_WBXML_Parser_reset(WBXMLParser);
- domTree->doc->version = version;
- domTree->doc->doc_type = publicid;
- domTree->doc->charset = encoding;
- NW_TinyDom_Tree_construct(domTree, WBXMLParser, domTree->doc, writer);
- NW_TinyDom_Parser_construct(tinyParser, domTree);
- status = NW_TinyDom_Tree_create(domTree, tinyParser, domTree->doc,
- WBXMLParser, writer, 2);
- if (status != NW_STAT_SUCCESS)
- return NULL;
- return NW_TinyDom_writeDocHeader(domTree, version, publicid, encoding);
-}*/
-
-/*
- * Create an empty dom tree, returning the document node.
- */
-
-EXPORT_C NW_DOM_DocumentNode_t *
-NW_DOM_DocumentNode_createDocumentWithNumberPublicId(NW_TinyDom_Handle_t *h,
- NW_Uint8 version,
- NW_Uint32 publicid,
- NW_Uint32 encoding,
- NW_Bool extTNotStringTable,
- NW_Bool enableStringTable)
-{
- NW_Status_t status = NW_STAT_SUCCESS;
- NW_TinyDom_Handle_Initialize(h, publicid, extTNotStringTable);
-
- h->document.charset = encoding;
- h->document.publicid = publicid;
- h->document.version = version;
-
-
- status = NW_TinyDom_Tree_create(&h->tinyDOMTree, &h->tinyParser,
- &h->document, &h->wbxmlParser,
- &h->writer, 4, enableStringTable);
-
-
-
- if(status == NW_STAT_SUCCESS)
- {
- return h->tinyDOMTree.root_node;
- }
- else
- {
-
- return NULL;
- }
-}
-
-
-/*
- * One of the API for Building the DOM tree.
- */
-
-EXPORT_C NW_DOM_DocumentNode_t*
-CXML_DOM_DocumentNode_BuildTree(NW_TinyDom_Handle_t* h,
- NW_Byte* buffer,
- NW_Int32 length,
- NW_Bool encoded,
- NW_Uint32 publicID,
- NW_Bool extTNotStringTable,
- NW_Status_t* errorStatus)
-{
- *errorStatus = NW_STAT_SUCCESS;
- if(encoded == NW_TRUE)
- {
- return CXML_DOM_DocumentNode_BuildWBXMLTree(h,
- buffer,
- length,
- NW_FALSE,
- extTNotStringTable,
- errorStatus);
- }
-
- return CXML_DOM_DocumentNode_BuildXMLTree(h,
- buffer,
- length,
- publicID,
- extTNotStringTable,
- errorStatus);
-
-
-}/*end CXML_DOM_DocumentNode_BuildTree()*/
-