diff -r ed3155dbd163 -r 74f0b3eb154c xmlsrv_plat/cxml_library_api/inc/nw_tinydom.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xmlsrv_plat/cxml_library_api/inc/nw_tinydom.h Wed Jun 23 20:27:15 2010 +0530 @@ -0,0 +1,1300 @@ +/* +* 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: +* +*/ + + +/** ----------------------------------------------------------------------- ** + @package: NW_TinyDom + + @synopsis: default + + @description: default + + ** ----------------------------------------------------------------------- **/ + +#ifndef NW_TINY_DOM_H +#define NW_TINY_DOM_H + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + + + +enum NW_TinyDom_ExtensionType_e { + NW_TINYDOM_EXTENSION_TYPE_NORMAL, + NW_TINYDOM_EXTENSION_TYPE_EXT_T_INTEGER +}; + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_Extension + + @synopsis: Extension structure. + + @scope: public + @variables: + NW_Uint32 token + Token. + + NW_String_t string + Extension string. + + @description: Extension structure. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_Extension_s{ + /* type is either NW_TINYDOM_EXTENSION_TYPE_NORMAL or + NW_TINYDOM_EXTENSION_TYPE_EXT_T_INTEGER */ + NW_Uint8 type; + NW_Uint32 token; + union { + NW_String_t string; + NW_Uint32 x; + } value; +} NW_TinyDom_Extension_t; + + +/** ----------------------------------------------------------------------- ** + @union: NW_TinyDom_AttrValComponent + + @synopsis: Attribute value component union. + + @scope: public + @variables: + NW_Uint32 value_token + token + + NW_String_t string + string + + NW_TinyDom_Extension_t ext + extension + + NW_Uint32 entity + entity. + + NW_WBXML_Opaque_t opaque + opaque + + @description: Union of all possible attribute value types. + ** ----------------------------------------------------------------------- **/ +typedef union NW_TinyDom_AttrValComponent_u{ + NW_Uint32 value_token; + NW_String_t string; + NW_TinyDom_Extension_t ext; + NW_Uint32 entity; + NW_WBXML_Opaque_t opaque; +}NW_TinyDom_AttrValComponent_t; + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_AttrVal + + @synopsis: Attribute value. + + @scope: public + @variables: + NW_Uint32 type + type + + NW_TinyDom_AttrValComponent_t component + attribute value union of all possible types. + + @description: An attribute value has a type info field and a union of + all the possible types. The type info values are defined + in NW_WBXML_Attribute.h. This type is designed to be + passed as an in/out param to the attribute value iterator. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_AttrVal_s { + NW_Uint32 type; + NW_TinyDom_AttrValComponent_t component; +} NW_TinyDom_AttrVal_t; + + +/* Node type bits */ + +#define T_DOM_NODE_DOC (NW_Uint16)00 +#define T_DOM_NODE_TAG (NW_Uint16)01 +#define T_DOM_NODE_ATTR (NW_Uint16)02 +#define T_DOM_NODE_TEXT (NW_Uint16)03 +#define T_DOM_NODE_PI (NW_Uint16)04 +#define T_DOM_NODE_COMMENT (NW_Uint16)05 +#define T_DOM_NODE_CDATASECTION (NW_Uint16)06 +#define T_DOM_NODE_XML (NW_Uint16)80 + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_Tree + + @synopsis: Wrapper for tree components. + + @scope: public + @variables: + NW_WBXML_Document_t* doc + The document. + + NW_TinyTree_t tree + The tree. + + NW_WBXML_Parser_t* parser + Parser associated with this tree. + + NW_WBXML_Writer_t* writer + Writer for this tree. + + NW_TinyTree_Node_t* root_node + Root node of tree. + + @description: Wrapper for tree components. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_Tree_s{ + NW_WBXML_Document_t* doc; + NW_TinyTree_t tree; + NW_WBXML_Parser_t* parser; + NW_WBXML_Writer_t* writer; + NW_TinyTree_Node_t* root_node; +}NW_TinyDom_Tree_t; + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_Parser + + @synopsis: Parser structure. + + @scope: public + @variables: + NW_Uint32 state + State. + + NW_TinyTree_Offset_t node_count + default + + NW_TinyTree_Offset_t cp_count + Current offset. + + NW_TinyDom_Tree_t* dom_tree + The tree. + + NW_TinyTree_Node_t* current_node + Present position in tree. + + NW_TinyTree_Offset_t content_offset + Present offset into buffer. + + @description: Parser structure. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_Parser_s{ + NW_Uint32 state; + NW_TinyTree_Offset_t node_count; + NW_TinyTree_Offset_t cp_count; + NW_TinyDom_Tree_t* dom_tree; + NW_TinyTree_Node_t* current_node; + /* Offset where current content begins */ + NW_TinyTree_Offset_t content_offset; +}NW_TinyDom_Parser_t; + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Tree_construct + + @synopsis: Constructor. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_Tree_t* domTree + The tree. + + [in] NW_WBXML_Parser_t* wbxmlParser + The parser + + [in] NW_WBXML_Document_t* doc + The document. + + [in] NW_WBXML_Writer_t* writer + The writer. + + @description: Constructor. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_Tree_construct(NW_TinyDom_Tree_t* domTree, + NW_WBXML_Parser_t* wbxmlParser, + NW_WBXML_Document_t* doc, + NW_WBXML_Writer_t* writer); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Tree_destruct + + @synopsis: Destructor. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_Tree_t* domTree + The DOM tree. + + @description: Destructor. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_Tree_destruct(NW_TinyDom_Tree_t* domTree); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Parser_construct + + @synopsis: Constructor. + + @scope: public + + @parameters: + [in] NW_TinyDom_Parser_t* domParser + The DOM parser. + + [in] NW_TinyDom_Tree_t* domTree + The DOM tree. + + @description: Constructor. + + ** ----------------------------------------------------------------------- **/ +IMPORT_C void +NW_TinyDom_Parser_construct(NW_TinyDom_Parser_t* domParser, + NW_TinyDom_Tree_t* domTree); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Parser_destruct + + @synopsis: Desctructor. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_Parser_t* domParser + The DOM parser. + + @description: Destructor. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_Parser_destruct(NW_TinyDom_Parser_t* domParser); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Parser_buildTree + + @synopsis: Build tiny DOM tree. + + @scope: public + + @parameters: + [in] NW_TinyDom_Parser_t* domParser + The DOM parser. + + [in] char* buffer + The buffer containing the document data. + + [in] NW_Uint32 buffsize + The size of the document buffer. + + [in] NW_Bool freeBuff + Flag + + @description: Builds a DOM tree. The DOM parser must previously have + been initialized to use a parser (WBXML or XML) that + knows how to parse the contents of the buffer.Build tiny + DOM tree. Run Pass1 and Pass 2. + + @returns: NW_Status_t + default + + [NW_STAT_SUCCESS] + Tree built. + + [NW_STAT_WBXML_ERROR_BYTECODE] + General error. + + [NW_STAT_OUT_OF_MEMORY] + Out of memory. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_Parser_buildTree(NW_TinyDom_Parser_t* domParser, + char* buffer, + NW_Uint32 buffsize, + NW_Bool freeBuff); + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Parser_incrementalBuildTree + + @synopsis: build/append tiny DOM tree. + + @scope: public + + @parameters: + [in] NW_TinyDom_Parser_t* domParser + The DOM parser. + + [in] char* buffer + The buffer containing the document data. + + [in] NW_Uint32 buffsize + The size of the document buffer. + + [in] NW_Bool freeBuff + Flag + + @description: Builds a DOM tree. The DOM parser must previously have + been initialized to use a parser (WBXML or XML) that + knows how to parse the contents of the buffer.Build tiny + DOM tree. Run Pass1 and Pass 2. + + @returns: NW_Status_t + default + + [NW_STAT_SUCCESS] + Tree built. + + [NW_STAT_WBXML_ERROR_BYTECODE] + General error. + + [NW_STAT_OUT_OF_MEMORY] + Out of memory. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_Parser_incrementalBuildTree(NW_TinyDom_Parser_t* domParser, + char* buffer, + NW_Uint32 buffsize, + NW_Bool freeBuff, + NW_Int32 lastValid); + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Node_getType + + @synopsis: Get node type. + + @scope: public + + @parameters: + [in] NW_TinyTree_Node_t* node + The DOM parser. + + @description: Get node type. + + @returns: NW_Uint16 + Node flag. + + ** ----------------------------------------------------------------------- **/ +NW_Uint16 +NW_TinyDom_Node_getType(NW_TinyTree_Node_t* node); + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_ListIterator + + @synopsis: ListIterator structure. + + @scope: public + @variables: + NW_Uint32 state + Iterator state. + + void* segment + Segment + + NW_TinyTree_Offset_t segSize + Segment size + + NW_TinyTree_Offset_t offset + Offset into document. + + NW_TinyDom_Parser_t* tiny_parser + Parser used for iteration. + + void* context + Context. + + @description: ListIterator structure. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_ListIterator_s { + NW_Uint32 state; + void* segment; + NW_TinyTree_Offset_t segSize; + NW_TinyTree_Offset_t offset; + NW_TinyDom_Parser_t* tiny_parser; + void* context; +}NW_TinyDom_ListIterator_t; + + +/* Tiny dom routines to support tags */ + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_Tag + + @synopsis: Tag structure. + + @scope: public + @variables: + NW_TinyDom_Parser_t* tiny_parser + This parser. + + NW_Uint32 fq_token + Token with codepage and attribute/element tag. + + NW_Uint32 name_index + Index of first character of name into string table. + + @description: Tag structure. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_Tag_s { + NW_TinyDom_Parser_t* tiny_parser; + NW_Uint32 fq_token; + NW_Uint32 name_index; +}NW_TinyDom_Tag_t; + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_getTagToken + + @synopsis: Get tag token. + + @scope: public + + @parameters: + [in] NW_TinyDom_Parser_t* parser + The parser. + + [in] NW_TinyTree_Node_t* node + Node to use. + + @description: Get tag token. + + @returns: NW_Uint32 + Tag token. + + ** ----------------------------------------------------------------------- **/ +IMPORT_C NW_Uint32 +NW_TinyDom_getTagToken(NW_TinyDom_Parser_t* parser, + NW_TinyTree_Node_t* node); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_getTagName + + @synopsis: Get tag name. + + @scope: public + + @parameters: + [in] NW_TinyDom_Parser_t* parser + This parser. + + [in] NW_TinyTree_Node_t* node + This node. + + [out] NW_String_t* name + Name of tag. + + @description: Get tag name. + + @returns: NW_Status_t + Status of operation. + + [NW_STAT_SUCCESS] + Name found. + + [NW_STAT_WBXML_NO_NAME] + No name found. + + [NW_STAT_WBXML_ERROR_BYTECODE] + No name found. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_getTagName(NW_TinyDom_Parser_t* parser, + NW_TinyTree_Node_t* node, + NW_String_t* name); + +/* Tiny dom routines to support attributes */ + +/** ----------------------------------------------------------------------- ** + @typedef: NW_TinyDom_AttrListHandle + + @synopsis: Attribute list handle. + + @scope: public + @type: NW_TinyDom_ListIterator_t + + @description: Attribute list handle. + ** ----------------------------------------------------------------------- **/ +typedef NW_TinyDom_ListIterator_t NW_TinyDom_AttrListHandle_t; + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttrListHandle_init + + @synopsis: Initialize attribute list handle. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttrListHandle_t* handle + This handle. + + [in] NW_TinyDom_Parser_t* parser + This parser. + + [in] NW_TinyTree_Node_t* node + This node. + + @description: Initialize attribute list handle. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_AttrListHandle_init(NW_TinyDom_AttrListHandle_t* handle, + NW_TinyDom_Parser_t* parser, + NW_TinyTree_Node_t* node); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttrListHandle_iterate + + @synopsis: Iterate through a list of attributes. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_AttrListHandle_t* handle + The handle. + + @description: Iterate through a list of attributes. There are no + attribute list callbacks since we just want to iterate + the attribute list, returning the start of each attribute. + + @returns: NW_TinyTree_Offset_t + Tree offset or NULL if at end of iteration. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Offset_t +NW_TinyDom_AttrListHandle_iterate(NW_TinyDom_AttrListHandle_t* handle); + + +/** ----------------------------------------------------------------------- ** + @struct: NW_TinyDom_AttributeHandle + + @synopsis: An attribute handle, for iteration over values. + + @scope: public + @variables: + NW_TinyDom_ListIterator_t tlit + The iterator structure. + + void* value + The current value. + + NW_Uint32 fq_token + Fully qualified token. That is: token, codepage and + attribute flag. + + NW_Uint32 name_index + Index into string table. + + @description: An attribute handle, for iteration over values. + ** ----------------------------------------------------------------------- **/ +typedef struct NW_TinyDom_AttributeHandle_s { + NW_TinyDom_ListIterator_t tlit; + /* field value is a pointer to the struct to fill in by parsing */ + NW_TinyDom_AttrVal_t* value; + NW_Uint32 fq_token; + NW_Uint32 name_index; +} NW_TinyDom_AttributeHandle_t; + + +/* ----------------------------------------------------------------------- ** + Attribute values are made up of components of several types. These are + defined in WBXML/types.h +** ----------------------------------------------------------------------- **/ + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_init + + @synopsis: Initialize an attribute handle. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_AttributeHandle_t* handle + The handle. + + [in-out] NW_TinyDom_Parser_t* parser + The parser. + + [in] NW_TinyTree_Offset_t offset + Offset into buffer. + + @description: Initialize an attribute handle by parsing an attribute's + start token and values, calling the attribute handlers. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_AttributeHandle_init(NW_TinyDom_AttributeHandle_t* handle, + NW_TinyDom_Parser_t* parser, + NW_TinyTree_Offset_t offset); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_valsIterate + + @synopsis: Iterate over attribute values. + + @scope: public + + @parameters: + [in-out] NW_TinyDom_ListIterator_t *it + The iterator. + + @description: Initialize an attribute handle by parsing an attribute's + start token and values, calling the attribute handlers. + + @returns: NW_TinyTree_Offset_t + Offset. If offset is 0, then at end of iteration. + + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Offset_t +NW_TinyDom_AttributeHandle_valsIterate(NW_TinyDom_ListIterator_t *it); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_getToken + + @synopsis: Get the token from the handle. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttributeHandle_t* handle + dThe handle. + + @description: Get the fully qualified token. + + @returns: NW_Uint32 + Token in handle structure. + + ** ----------------------------------------------------------------------- **/ +NW_Uint32 +NW_TinyDom_AttributeHandle_getToken(NW_TinyDom_AttributeHandle_t* handle); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_getName + + @synopsis: Get the name from the handle. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttributeHandle_t* handle + The handle. + + [out] NW_String_t* name + The name. + + @description: Get the name, if any, from the handle. + + @returns: NW_Status_t + Status of operation. + + [NW_STAT_SUCCESS] + Name found. + + [NW_STAT_WBXML_NO_NAME] + Name not found. + + [NW_STAT_WBXML_ERROR_BYTECODE] + Invalid string in table. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_AttributeHandle_getName(NW_TinyDom_AttributeHandle_t* handle, + NW_String_t* name); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_iterateValues + + @synopsis: Iterate the values. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttributeHandle_t* handle + The handle. + + [out] NW_TinyDom_AttrVal_t* value + Attribute value. + + @description: Iterate the values. + + @returns: NW_TinyTree_Offset_t + Buffer offset or zero if done. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Offset_t +NW_TinyDom_AttributeHandle_iterateValues(NW_TinyDom_AttributeHandle_t* handle, + NW_TinyDom_AttrVal_t* value); + + +/* TODO: Add method to get values as a string */ + + +/** ----------------------------------------------------------------------- ** + @typedef: NW_TinyDom_TextHandle + + @synopsis: A text handle, for iteration over text components. + + @scope: public + @type: NW_TinyDom_AttributeHandle_t + + @description: A text handle, for iteration over text components. + ** ----------------------------------------------------------------------- **/ +typedef NW_TinyDom_AttributeHandle_t NW_TinyDom_TextHandle_t; + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_TextHandle_init + + @synopsis: Initialize a text handle. + + @scope: public + + @parameters: + [in] NW_TinyDom_TextHandle_t* handle + The handle. + + [in] NW_TinyDom_Parser_t* parser + The parser. + + [in] NW_TinyTree_Offset_t offset + The offset. + + @description: Initialize a text handle. + + ** ----------------------------------------------------------------------- **/ +void +NW_TinyDom_TextHandle_init(NW_TinyDom_TextHandle_t* handle, + NW_TinyDom_Parser_t* parser, + NW_TinyTree_Offset_t offset); + + +/** ----------------------------------------------------------------------- ** + @typedef: NW_TinyDom_Text + + @synopsis: Text item types are a subset of attribute value types. + + @scope: public + @type: NW_TinyDom_AttrVal_t + + @description: Text item types are a subset of attribute value types. + ** ----------------------------------------------------------------------- **/ +typedef NW_TinyDom_AttrVal_t NW_TinyDom_Text_t; + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_TextHandle_iterate + + @synopsis: Text item iterator. + + @scope: public + + @parameters: + [in] NW_TinyDom_TextHandle_t* handle + The handle. + + [out] NW_TinyDom_Text_t* item + The returned text item. + @description: Iterate through the text items in a text element, calling + the text handlers + + @returns: NW_TinyTree_Offset_t + Offset into buffer or zero if no item returned. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Offset_t +NW_TinyDom_TextHandle_iterate(NW_TinyDom_TextHandle_t* handle, + NW_TinyDom_Text_t* item); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_getDocHeader + + @synopsis: Get the doc header from the tiny tree. + + @scope: public + + @parameters: + [in] NW_TinyTree_t* tree + The tree. + + @description: Get the doc header from the tiny tree. + + @returns: NW_WBXML_Document_t* + Doc header or NULL if NULL tree. + + ** ----------------------------------------------------------------------- **/ +NW_WBXML_Document_t* +NW_TinyDom_getDocHeader(NW_TinyTree_t* tree); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_getParser + + @synopsis: Get a pointer to the dom parser from the tiny_tree. + + @scope: public + + @parameters: + [in] NW_TinyTree_t* tree + The tree. + + @description: Get a pointer to the dom parser from the tiny_tree. + + @returns: NW_TinyDom_Parser_t* + default + + ** ----------------------------------------------------------------------- **/ +IMPORT_C NW_TinyDom_Parser_t* +NW_TinyDom_getParser(NW_TinyTree_t* tree); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_getTree + + @synopsis: Get a pointer to the dom tree from a tiny tree. + + @scope: public + + @parameters: + [in] NW_TinyTree_t* tree + The tree. + + @description: Get a pointer to the dom tree from a tiny tree. + + @returns: NW_TinyDom_Tree_t* + POinter to the DOM tree or NULL if not found. + + ** ----------------------------------------------------------------------- **/ +IMPORT_C NW_TinyDom_Tree_t* +NW_TinyDom_getTree(NW_TinyTree_t* tree); + +/* ----------------------------------------------------------------------- ** + Dom write support methods: These are created as orphan nodes that + then need to be attached to the tree. +** ----------------------------------------------------------------------- **/ + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_createAttributeByToken + + @synopsis: Create attribute by token. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The DOM tree. + + [in] NW_Uint16 token + The token. + + [in] NW_TinyDom_AttrVal_t* value + The new attribute. + + @description: Create attribute by token as an orphan node that + then need to be attached to the tree. + + @returns: NW_TinyTree_Node_t* + Pointer to the new node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_createAttributeByToken(NW_TinyDom_Tree_t* dom_tree, + NW_Uint16 token, + NW_TinyDom_AttrVal_t* value); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_createAttributeByName + + @synopsis: Create attribute by name. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The tree. + + [in] NW_String_t* name + The name. + + [in] NW_TinyDom_AttrVal_t* value + The new attribute. + + @description: Create attribute by name as an orphan node that + then need to be attached to the tree. + + @returns: NW_TinyTree_Node_t* + Pointer to the new node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_createAttributeByName(NW_TinyDom_Tree_t* dom_tree, + NW_String_t* name, + NW_TinyDom_AttrVal_t* value); + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_initWithStartToken + + @synopsis: Initialize the handle with a start token. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttributeHandle_t* tinyHandle + The handle. + + [out] NW_TinyTree_Node_t** ppNode + The tree node. + + [in] NW_TinyDom_Parser_t* parser + The parser. + + [in] NW_Uint16 fqToken + The token with page. + + @description: Initialize the handle with a start token. + + @returns: NW_Status_t + + [NW_STAT_SUCCESS] + Success + + [NW_STAT_FAILURE] + A failure other than out-of-memory. + + [NW_STAT_OUT_OF_MEMORY] + Out of memory. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_AttributeHandle_initWithStartToken(NW_TinyDom_AttributeHandle_t* tinyHandle, + NW_TinyTree_Node_t** ppNode, + NW_TinyDom_Parser_t* parser, + NW_Uint16 fqToken); + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_AttributeHandle_addVal + + @synopsis: Append the attribute value to the attribute handle. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttributeHandle_t* tinyHandle + The handle. + + [in] NW_TinyTree_Node_t* node + The tree node. + + [in] NW_DOM_AttrVal_t* value + The attribute value to append to handle + + @description: Append the attribute value to the attribute handle. + + @returns: NW_Status_t + + [NW_STAT_SUCCESS] + Success + + [NW_STAT_FAILURE] + A failure other than out-of-memory. + + [NW_STAT_OUT_OF_MEMORY] + Out of memory. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_AttributeHandle_addVal(NW_TinyDom_AttributeHandle_t* tinyHandle, + NW_TinyTree_Node_t* node, + NW_TinyDom_AttrVal_t* val); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_createElementByToken + + @synopsis: Create element by token. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The tree. + + [in] NW_Uint16 token + The token. + + @description: Create element by token as an orphan node that + then need to be attached to the tree. + + @returns: NW_TinyTree_Node_t* + Pointer to the new node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_createElementByToken(NW_TinyDom_Tree_t* dom_tree, + NW_Uint16 token); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_createElementByName + + @synopsis: Create element by name. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The tree. + + [in] NW_String_t* name + The name. + + @description: Create element by name as an orphan node that + then need to be attached to the tree. + + @returns: NW_TinyTree_Node_t* + Pointer to the new node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_createElementByName(NW_TinyDom_Tree_t* dom_tree, + NW_String_t* name); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_createTextNode + + @synopsis: Create text node. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The tree. + + [in] NW_TinyDom_Text_t* text + The value. + + @description: Create element by name as an orphan node that + then needs to be attached to the tree. + + @returns: NW_TinyTree_Node_t* + Pointer to the new node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_createTextNode(NW_TinyDom_Tree_t* dom_tree, + NW_TinyDom_Text_t* text); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_addDataFromTextItem + + @synopsis: Adds data to a text node from a text item. + + @scope: public + + @parameters: + [in] NW_TinyTree_t* tinyTree + The tree. + + [in] NW_TinyDom_Tree_t* tinyDomTree + The DOM tree. + + [in] NW_TinyTree_Node_t* node + The text node. + + [in] NW_TinyTree_Text_t text + The value. + + [in] NW_Uint32 encoding + The IANA MIBenum for the character encoding. + + @description: Adds data to a text node from a text item. + + @returns: NW_Status_t + Status of operation. + + [NW_STAT_SUCCESS] + Data added. + + [NW_STAT_FAILURE] + Data not added. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_addDataFromTextItem(NW_TinyTree_t* tinyTree, + NW_TinyDom_Tree_t* tinyDomTree, + NW_TinyTree_Node_t* node, + NW_TinyDom_Text_t* val, + NW_Uint32 encoding); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_Tree_create + + @synopsis: Create a new tree. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The DOM tree. + + [in] NW_TinyDom_Parser_t* dom_parser + The parser to associate with this tree. + + [in] NW_WBXML_Document_t* doc + The source document. + + [in] NW_WBXML_Parser_t* parser + The WBXML parser. + + [in] NW_WBXML_Writer_t* writer + Tree writer. + + [in] NW_Uint16 init_node_count + Initial allocation. + + [in] NW_Bool enableStringTable + Set to true for normal WBXML. Set to false to disable + writing from using a string table. + + @description: Create a new tree. + + @returns: NW_Status_t + Status of operation. + + [NW_STAT_SUCCESS] + Tree created. + + [NW_STAT_FAILURE] + Dictionary not found or root node not created. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_Tree_create(NW_TinyDom_Tree_t* dom_tree, + NW_TinyDom_Parser_t* dom_parser, + NW_WBXML_Document_t* doc, + NW_WBXML_Parser_t* parser, + NW_WBXML_Writer_t* writer, + NW_Uint16 init_node_count, + NW_Bool enableStringTable); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_writeDocHeader + + @synopsis: Write doc header. + + @scope: public + + @parameters: + [in] NW_TinyDom_Tree_t* dom_tree + The tree. + + [in] NW_Uint8 version + The version. + + [in] NW_Uint32 publicid + The dictionary public ID. + + [in] NW_Uint32 encoding + Character encoding. + + @description: Write doc header. + + @returns: NW_TinyTree_Node_t* + New node or NULL if not successful. + + ** ----------------------------------------------------------------------- **/ +NW_TinyTree_Node_t* +NW_TinyDom_writeDocHeader(NW_TinyDom_Tree_t* dom_tree, + NW_Uint8 version, + NW_Uint32 publicid, + NW_Uint32 encoding); + + +/** ----------------------------------------------------------------------- ** + @function: NW_TinyDom_removeAttrFromListNode + + @synopsis: Remove attribute from list node. + + @scope: public + + @parameters: + [in] NW_TinyDom_AttrListHandle_t* h + The handle. + + [in] NW_Uint32 length + Length of attribute. + + @description: Remove attribute from list node. + + @returns: NW_Status_t + Success of operation. + + [NW_STAT_SUCCESS] + Always returns success. + + ** ----------------------------------------------------------------------- **/ +NW_Status_t +NW_TinyDom_removeAttrFromListNode(NW_TinyDom_AttrListHandle_t* h, + NW_Uint32 length); + +void +NW_TinyDom_setLastValid(NW_TinyDom_Tree_t* dom_tree, NW_Int32 lastValid); + +NW_Int32 +NW_TinyDom_getLastValid(NW_TinyDom_Tree_t* dom_tree); + +#ifdef __cplusplus +} /* extern "C" { */ +#endif /* __cplusplus */ + + +#endif /* NW_TINY_DOM_H */