xmlsrv_plat/cxml_library_api/inc/nw_dom_node.h
author hgs
Wed, 23 Jun 2010 20:27:15 +0530
changeset 24 74f0b3eb154c
permissions -rw-r--r--
201024
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
    20
    @package:     NW_DOM
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
    @synopsis:    default
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
    @description: default
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
    27
#ifndef NW_DOM_NODE_H
hgs
parents:
diff changeset
    28
#define NW_DOM_NODE_H
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include <xml/cxml/nw_tinytree.h>
hgs
parents:
diff changeset
    31
#include <xml/cxml/nw_tinydom.h>
hgs
parents:
diff changeset
    32
#include <xml/cxml/nw_string_string.h>
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
#ifdef __cplusplus
hgs
parents:
diff changeset
    35
extern "C" {
hgs
parents:
diff changeset
    36
#endif /* __cplusplus */
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
    40
    @typedef:     NW_DOM_Node
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    @synopsis:    Dom nodes are defined to be just tiny tree nodes.  
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
    @scope:       public
hgs
parents:
diff changeset
    45
     
hgs
parents:
diff changeset
    46
    @type:        NW_TinyTree_Node_t
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
    @description: Dom nodes are defined to be just tiny tree nodes.
hgs
parents:
diff changeset
    49
                  This allows the Dom API to return the 32 bit pointers
hgs
parents:
diff changeset
    50
                  it gets from the Tiny Tree and Tiny Dom APIs rather
hgs
parents:
diff changeset
    51
                  than having to allocate any memory. This memory
hgs
parents:
diff changeset
    52
                  savings comes at some cost, however: most Tiny Tree
hgs
parents:
diff changeset
    53
                  API calls require a tree reference, and getting a tree
hgs
parents:
diff changeset
    54
                  reference from an tiny dom node is an inefficient
hgs
parents:
diff changeset
    55
                  operation (it requires a linear search of the node's
hgs
parents:
diff changeset
    56
                  storage segment). We assume that this computation vs
hgs
parents:
diff changeset
    57
                  memory tradeoff is worthwhile on small platforms.  One
hgs
parents:
diff changeset
    58
                  alternative would be to require the tree as a
hgs
parents:
diff changeset
    59
                  parameter to many Dom API calls, but this would be a
hgs
parents:
diff changeset
    60
                  substantial departure from the standard Dom model.
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
    63
typedef NW_TinyTree_Node_t NW_DOM_Node_t;
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
/* Specific node types used by the DOM API */
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
typedef NW_Uint16 NW_DOM_NodeType_t;
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
#define NW_DOM_ELEMENT_NODE                1
hgs
parents:
diff changeset
    70
#define NW_DOM_TEXT_NODE                   2
hgs
parents:
diff changeset
    71
#define NW_DOM_CDATA_SECTION_NODE          4 /* only for XML  */
hgs
parents:
diff changeset
    72
#define NW_DOM_PROCESSING_INSTRUCTION_NODE 8
hgs
parents:
diff changeset
    73
#define NW_DOM_COMMENT_NODE                16 /* only for XML  */
hgs
parents:
diff changeset
    74
#define NW_DOM_DOCUMENT_NODE               32
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
typedef NW_DOM_Node_t NW_DOM_ElementNode_t;
hgs
parents:
diff changeset
    77
/*typedef NW_DOM_Node_t NW_DOM_DocumentNode_t; */
hgs
parents:
diff changeset
    78
/* Declared in nw_tiny_tree.h */
hgs
parents:
diff changeset
    79
typedef NW_DOM_Node_t NW_DOM_TextNode_t;
hgs
parents:
diff changeset
    80
typedef NW_DOM_Node_t NW_DOM_CommentNode_t;
hgs
parents:
diff changeset
    81
typedef NW_DOM_Node_t NW_DOM_CDATASectionNode_t;
hgs
parents:
diff changeset
    82
typedef NW_DOM_Node_t NW_DOM_ProcessingInstructionNode_t;
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
/*  ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
    85
    GENERAL NODE METHODS - applicable to all node types
hgs
parents:
diff changeset
    86
    These methods will be repeated for other Node types also
hgs
parents:
diff changeset
    87
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
    91
    @function:    NW_DOM_Node_getNodeName
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
    @synopsis:    Get name of node.
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
    @scope:       public
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
    @parameters:
hgs
parents:
diff changeset
    98
       [in] NW_DOM_Node_t* elem
hgs
parents:
diff changeset
    99
                  The node.
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
       [in-out] NW_String_t* name
hgs
parents:
diff changeset
   102
                  The name of the node.
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    @description: Get name of node.
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   107
                  Result of operation.
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   110
                  Node name returned.
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
       [NW_STAT_DOM_NODE_TYPE_ERR]
hgs
parents:
diff changeset
   113
                  Node type could not be determined.
hgs
parents:
diff changeset
   114
       
hgs
parents:
diff changeset
   115
       [NW_STAT_DOM_NO_STRING_RETURNED]
hgs
parents:
diff changeset
   116
                  Node does not have name.
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
       [NW_STAT_DOM_NODE_TYPE_ERR]
hgs
parents:
diff changeset
   119
                  It is not a NW_DOM_ELEMENT_NODE
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
       [NW_STAT_OUT_OF_MEMORY]
hgs
parents:
diff changeset
   122
                  Ran out of memory trying to allocate string storage.
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
       [NW_STAT_WBXML_ERROR_CHARSET_UNSUPPORTED]
hgs
parents:
diff changeset
   125
                  Illegal character set.
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
       [NW_STAT_FAILURE]
hgs
parents:
diff changeset
   128
                  String found but empty.
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   131
IMPORT_C NW_Status_t 
hgs
parents:
diff changeset
   132
NW_DOM_Node_getNodeName(NW_DOM_Node_t* elem, NW_String_t* name); 
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   136
    @function:    NW_DOM_Node_getNodeType
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    @synopsis:    Gets the type of DOM node.
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    @scope:       public
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
    @parameters:
hgs
parents:
diff changeset
   143
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   144
                  The node.
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    @description: Gets the type of DOM node.
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    @returns:     NW_DOM_NodeType_t
hgs
parents:
diff changeset
   149
                  Node type or zero if not recognized node.
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   152
IMPORT_C NW_DOM_NodeType_t
hgs
parents:
diff changeset
   153
NW_DOM_Node_getNodeType(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   157
    @function:    NW_DOM_Node_getNodeToken
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
    @synopsis:    Gets the token associated with the node.
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    @scope:       public
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    @parameters:
hgs
parents:
diff changeset
   164
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   165
                  The node.
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
    @description: Returns fully qualified node token. This includes the 
hgs
parents:
diff changeset
   168
                  token, codepage and a attribute/element flag.
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
    @returns:     NW_Uint16
hgs
parents:
diff changeset
   171
                  The 8 bit token and 8 bit codepage which includes an 
hgs
parents:
diff changeset
   172
                  attribute/elent flag.
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   175
IMPORT_C NW_Uint16 
hgs
parents:
diff changeset
   176
NW_DOM_Node_getNodeToken(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   180
    @function:    NW_DOM_Node_isWBXML
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
    @synopsis:    Checks if the node was created by parsing WBXML content.
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
    @scope:       public
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
    @parameters:
hgs
parents:
diff changeset
   187
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   188
                  The node.
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
    @description: Checks if the node was created by parsing WBXML content.
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
    @returns:     NW_Bool
hgs
parents:
diff changeset
   193
                  NW_TRUE if WBXML type, otherwise NW_FALSE.
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   196
NW_Bool 
hgs
parents:
diff changeset
   197
NW_DOM_Node_isWBXML(NW_DOM_Node_t* node);
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   201
    @function:    NW_DOM_Node_getParentNode
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
    @synopsis:    Gets the parent of the node.
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
    @scope:       public
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
    @parameters:
hgs
parents:
diff changeset
   208
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   209
                  The node.
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
    @description: Finds parent node of the given node. All nodes except 
hgs
parents:
diff changeset
   212
                  DocumentNode have a parentNode.
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
    @returns:     NW_DOM_Node_t*
hgs
parents:
diff changeset
   215
                  Parent or NULL if invalid operation or if parent node 
hgs
parents:
diff changeset
   216
                  is a DocumentNode.
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   219
IMPORT_C NW_DOM_Node_t* 
hgs
parents:
diff changeset
   220
NW_DOM_Node_getParentNode(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   224
    @function:    NW_DOM_Node_getFirstChild
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
    @synopsis:    Finds the first child of the node.
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    @scope:       public
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
    @parameters:
hgs
parents:
diff changeset
   231
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   232
                  The node.
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
    @description: Returns valid values only for ELEMENT_NODE and DOCUMENT_NODE.
hgs
parents:
diff changeset
   235
                  These are the only nodes that have children. For other nodes
hgs
parents:
diff changeset
   236
                  the value is NULL.
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
    @returns:     NW_DOM_Node_t*
hgs
parents:
diff changeset
   239
                  The first child of this node or NULL if the node has no child.
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   242
IMPORT_C NW_DOM_Node_t* 
hgs
parents:
diff changeset
   243
NW_DOM_Node_getFirstChild(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   247
    @function:    NW_DOM_Node_getLastChild
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
    @synopsis:    Finds the last child of the node.
hgs
parents:
diff changeset
   250
hgs
parents:
diff changeset
   251
    @scope:       public
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
    @parameters:
hgs
parents:
diff changeset
   254
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   255
                  The node.
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
    @description: Returns valid values only for ELEMENT_NODE and DOCUMENT_NODE.
hgs
parents:
diff changeset
   258
                  These are the only nodes that have children. For other nodes
hgs
parents:
diff changeset
   259
                  the value is either NULL or 0.
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
    @returns:     NW_DOM_Node_t*
hgs
parents:
diff changeset
   262
                  The last child of this node or NULL if the node has no child.
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   265
IMPORT_C NW_DOM_Node_t* 
hgs
parents:
diff changeset
   266
NW_DOM_Node_getLastChild(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   270
    @function:    NW_DOM_Node_hasChildNodes
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
    @synopsis:    Checks if the node has any child nodes.
hgs
parents:
diff changeset
   273
hgs
parents:
diff changeset
   274
    @scope:       public
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
    @parameters:
hgs
parents:
diff changeset
   277
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   278
                  The node.
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
    @description: Returns valid values only for ELEMENT_NODE and DOCUMENT_NODE.
hgs
parents:
diff changeset
   281
                  These are the only nodes that have children. For other nodes
hgs
parents:
diff changeset
   282
                  the value is NULL.
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
    @returns:     NW_Bool
hgs
parents:
diff changeset
   285
                  NW_TRUE if the node has child nodes, otherwise NW_FALSE.
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   288
IMPORT_C NW_Bool 
hgs
parents:
diff changeset
   289
NW_DOM_Node_hasChildNodes(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   293
    @function:    NW_DOM_Node_getNextSibling
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
    @synopsis:    Gets the next sibling of the node.
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
    @scope:       public
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
    @parameters:
hgs
parents:
diff changeset
   300
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   301
                  The node.
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    @description: Gets the next sibling of the node.
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
    @returns:     NW_DOM_Node_t*
hgs
parents:
diff changeset
   306
                  The node immediately following this node, NULL if there 
hgs
parents:
diff changeset
   307
                  is no next sibling or this node is NULL.
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   310
IMPORT_C NW_DOM_Node_t* 
hgs
parents:
diff changeset
   311
NW_DOM_Node_getNextSibling(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   315
    @function:    NW_DOM_Node_getPreviousSibling
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
    @synopsis:    Gets the previous sibling of the node.
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
    @scope:       public
hgs
parents:
diff changeset
   320
hgs
parents:
diff changeset
   321
    @parameters:
hgs
parents:
diff changeset
   322
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   323
                  The node.
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
    @description: Gets the previous sibling of the node.
hgs
parents:
diff changeset
   326
hgs
parents:
diff changeset
   327
    @returns:     NW_DOM_Node_t*
hgs
parents:
diff changeset
   328
                  The node immediately preceding this node in the DOM tree,
hgs
parents:
diff changeset
   329
                  NULL if there is no previous sibling or the node is NULL.
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   332
IMPORT_C NW_DOM_Node_t* 
hgs
parents:
diff changeset
   333
NW_DOM_Node_getPreviousSibling(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   337
    @function:    NW_DOM_Node_getOwnerDocument
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
    @synopsis:    Gets the owner document node of this node.
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    @scope:       public
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
    @parameters:
hgs
parents:
diff changeset
   344
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   345
                  The node.
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
    @description: Gets the owner document node of this node.
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
    @returns:     NW_DOM_DocumentNode_t*
hgs
parents:
diff changeset
   350
                  The owner document node (NW_DOM_DocumentNode_t) associated
hgs
parents:
diff changeset
   351
                  with this node, NULL if the node is NULL or is a DocumentNode.
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   354
IMPORT_C NW_DOM_DocumentNode_t* 
hgs
parents:
diff changeset
   355
NW_DOM_Node_getOwnerDocument(NW_DOM_Node_t* node); 
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   359
    @function:    NW_DOM_Node_insertBefore
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
    @synopsis:    Inserts newChild before the refChild.
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
    @scope:       public
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
    @parameters:
hgs
parents:
diff changeset
   366
       [in-out] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   367
                  The parent node.
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
       [in] NW_DOM_Node_t* newChild
hgs
parents:
diff changeset
   370
                  The node to be inserted.
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
       [in] NW_DOM_Node_t* refChild
hgs
parents:
diff changeset
   373
                  The node before which the newChild node should be inserted.
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
    @description: Inserts the newChild node before the existing refChild 
hgs
parents:
diff changeset
   376
                  node; and if refChild is NULL, inserts it at the end of
hgs
parents:
diff changeset
   377
                  the list of children.
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   380
                  Result of operation.
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   383
                  Inserted successfully.
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
       [NW_STAT_BAD_INPUT_PARAM]
hgs
parents:
diff changeset
   386
                  One of the input parameters was null.
hgs
parents:
diff changeset
   387
     
hgs
parents:
diff changeset
   388
       [NW_STAT_NOT_FOUND]
hgs
parents:
diff changeset
   389
                  Reference child is not a child of given node.
hgs
parents:
diff changeset
   390
hgs
parents:
diff changeset
   391
       [NW_STAT_DOM_WRONG_DOC_ERR]
hgs
parents:
diff changeset
   392
                  New child was created from a different document than the 
hgs
parents:
diff changeset
   393
                  one that created the node.
hgs
parents:
diff changeset
   394
hgs
parents:
diff changeset
   395
       [NW_STAT_DOM_HEIRARCHY_REQ_ERR] 
hgs
parents:
diff changeset
   396
                  Node is of the type that does not allow children of the 
hgs
parents:
diff changeset
   397
                  type of newChild node.
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   400
IMPORT_C NW_Status_t
hgs
parents:
diff changeset
   401
NW_DOM_Node_insertBefore(NW_DOM_Node_t* node, 
hgs
parents:
diff changeset
   402
                         NW_DOM_Node_t* newChild, 
hgs
parents:
diff changeset
   403
                         NW_DOM_Node_t* refChild);
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   407
    @function:    NW_DOM_Node_replaceChild
hgs
parents:
diff changeset
   408
hgs
parents:
diff changeset
   409
    @synopsis:    Replaces oldChild with the newChild.
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
    @scope:       public
hgs
parents:
diff changeset
   412
hgs
parents:
diff changeset
   413
    @parameters:
hgs
parents:
diff changeset
   414
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   415
                  The node.
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
       [in] NW_DOM_Node_t* newChild
hgs
parents:
diff changeset
   418
                  The node that will replace oldChild.
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
       [in] NW_DOM_Node_t* oldChild
hgs
parents:
diff changeset
   421
                  The node to be replaced.
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
    @description: Replaces oldChild with the newChild.
hgs
parents:
diff changeset
   424
hgs
parents:
diff changeset
   425
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   426
                  Result of operation.
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   429
                  Child replaced.
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
       [NW_STAT_BAD_INPUT_PARAM]
hgs
parents:
diff changeset
   432
                  Bad data.
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
       [NW_STAT_NOT_FOUND]
hgs
parents:
diff changeset
   435
                  oldChild is not a child of given node.
hgs
parents:
diff changeset
   436
hgs
parents:
diff changeset
   437
       [NW_STAT_DOM_WRONG_DOC_ERR]
hgs
parents:
diff changeset
   438
                  newChild was created from a different document than the 
hgs
parents:
diff changeset
   439
                  one that created the node.
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
       [NW_STAT_DOM_HEIRARCHY_REQ_ERR]
hgs
parents:
diff changeset
   442
                  Node is of the type that does not allow children of the 
hgs
parents:
diff changeset
   443
                  type of newChild node.
hgs
parents:
diff changeset
   444
hgs
parents:
diff changeset
   445
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   446
IMPORT_C NW_Status_t
hgs
parents:
diff changeset
   447
NW_DOM_Node_replaceChild(NW_DOM_Node_t* node, 
hgs
parents:
diff changeset
   448
                         NW_DOM_Node_t* newChild, 
hgs
parents:
diff changeset
   449
                         NW_DOM_Node_t* oldChild);
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   453
    @function:    NW_DOM_Node_removeChild
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
    @synopsis:    Removes the oldChild node as a child of the node.
hgs
parents:
diff changeset
   456
hgs
parents:
diff changeset
   457
    @scope:       public
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
    @parameters:
hgs
parents:
diff changeset
   460
       [in-out] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   461
                  The parent node.
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
       [in] NW_DOM_Node_t* oldChild
hgs
parents:
diff changeset
   464
                  The child node to be removed.
hgs
parents:
diff changeset
   465
hgs
parents:
diff changeset
   466
    @description: Removes the oldChild, and deletes the node and its child nodes.
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   469
                  Result of operation.
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   472
                  Nodes deleted.
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
       [NW_STAT_BAD_INPUT_PARAM]
hgs
parents:
diff changeset
   475
                  Bad data.
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
       [NW_STAT_NOT_FOUND]
hgs
parents:
diff changeset
   478
                  oldChild is not a child of given node.
hgs
parents:
diff changeset
   479
hgs
parents:
diff changeset
   480
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   481
IMPORT_C NW_Status_t
hgs
parents:
diff changeset
   482
NW_DOM_Node_removeChild(NW_DOM_Node_t* node, 
hgs
parents:
diff changeset
   483
                        NW_DOM_Node_t* oldChild); 
hgs
parents:
diff changeset
   484
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   487
    @function:    NW_DOM_Node_appendChild
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
    @synopsis:    Appends a new child.
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
    @scope:       public
hgs
parents:
diff changeset
   492
hgs
parents:
diff changeset
   493
    @parameters:
hgs
parents:
diff changeset
   494
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   495
                  The node.
hgs
parents:
diff changeset
   496
hgs
parents:
diff changeset
   497
       [in] NW_DOM_Node_t* newChild
hgs
parents:
diff changeset
   498
                  The node to be added.
hgs
parents:
diff changeset
   499
hgs
parents:
diff changeset
   500
    @description: Appends a new child.
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   503
                  Result of operation.
hgs
parents:
diff changeset
   504
hgs
parents:
diff changeset
   505
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   506
                  Child node appended.
hgs
parents:
diff changeset
   507
hgs
parents:
diff changeset
   508
       [NW_STAT_BAD_INPUT_PARAM]
hgs
parents:
diff changeset
   509
                  An input parameter was null.
hgs
parents:
diff changeset
   510
 
hgs
parents:
diff changeset
   511
       [NW_STAT_DOM_WRONG_DOC_ERR]
hgs
parents:
diff changeset
   512
                  newChild was created from a different document than the 
hgs
parents:
diff changeset
   513
                  one that created the node.
hgs
parents:
diff changeset
   514
hgs
parents:
diff changeset
   515
       [NW_STAT_DOM_HEIRARCHY_REQ_ERR]
hgs
parents:
diff changeset
   516
                  Node is of the type that does not allow children of the type
hgs
parents:
diff changeset
   517
                  of the newChild node.
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
hgs
parents:
diff changeset
   520
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   521
IMPORT_C NW_Status_t
hgs
parents:
diff changeset
   522
NW_DOM_Node_appendChild(NW_DOM_Node_t* node, 
hgs
parents:
diff changeset
   523
                        NW_DOM_Node_t* newChild);
hgs
parents:
diff changeset
   524
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   527
    @struct:      NW_DOM_NodeIterator
hgs
parents:
diff changeset
   528
hgs
parents:
diff changeset
   529
    @synopsis:    Iterator for walking node list.
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
    @scope:       public
hgs
parents:
diff changeset
   532
    @variables:
hgs
parents:
diff changeset
   533
       NW_TinyTree_NodeIterator_t nodeIter
hgs
parents:
diff changeset
   534
                  The node iterator.
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
       NW_Uint16 token
hgs
parents:
diff changeset
   537
                  Fully qualified token (i.e. token and codepage)
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
    @description: NW_DOM_NodeIterator_t is used in lieu of the NodeList 
hgs
parents:
diff changeset
   540
                 object specified in DOM. This data type is an iterator 
hgs
parents:
diff changeset
   541
                 default.
hgs
parents:
diff changeset
   542
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   543
typedef struct NW_DOM_NodeIterator_s {
hgs
parents:
diff changeset
   544
  NW_TinyTree_NodeIterator_t nodeIter;
hgs
parents:
diff changeset
   545
  NW_Uint16 token;
hgs
parents:
diff changeset
   546
}NW_DOM_NodeIterator_t;
hgs
parents:
diff changeset
   547
hgs
parents:
diff changeset
   548
hgs
parents:
diff changeset
   549
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   550
    @function:    NW_DOM_NodeIterator_new
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
    @synopsis:    Creates new NodeIterator.
hgs
parents:
diff changeset
   553
hgs
parents:
diff changeset
   554
    @scope:       public
hgs
parents:
diff changeset
   555
hgs
parents:
diff changeset
   556
    @description: Creates new NodeIterator.
hgs
parents:
diff changeset
   557
hgs
parents:
diff changeset
   558
    @returns:     NW_DOM_NodeIterator_t*
hgs
parents:
diff changeset
   559
                  New iterator.
hgs
parents:
diff changeset
   560
hgs
parents:
diff changeset
   561
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   562
NW_DOM_NodeIterator_t*
hgs
parents:
diff changeset
   563
NW_DOM_NodeIterator_new(void);
hgs
parents:
diff changeset
   564
hgs
parents:
diff changeset
   565
hgs
parents:
diff changeset
   566
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   567
    @function:    NW_DOM_NodeIterator_initialize
hgs
parents:
diff changeset
   568
hgs
parents:
diff changeset
   569
    @synopsis:    Initializes iterator.
hgs
parents:
diff changeset
   570
hgs
parents:
diff changeset
   571
    @scope:       public
hgs
parents:
diff changeset
   572
hgs
parents:
diff changeset
   573
    @parameters:
hgs
parents:
diff changeset
   574
       [in] NW_DOM_NodeIterator_t* handle
hgs
parents:
diff changeset
   575
                  The node iterator.
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
       [in] NW_DOM_Node_t* node
hgs
parents:
diff changeset
   578
                  Starting point for iteration.
hgs
parents:
diff changeset
   579
       [in] NW_Uint16 token
hgs
parents:
diff changeset
   580
                  Initialize with this token.
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
    @description: Initializes the Node handle which uses the given node
hgs
parents:
diff changeset
   583
                  as the starting point to iterate down the tree.
hgs
parents:
diff changeset
   584
hgs
parents:
diff changeset
   585
hgs
parents:
diff changeset
   586
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   587
                  Result of operation.
hgs
parents:
diff changeset
   588
hgs
parents:
diff changeset
   589
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   590
                  Iterator initialized.
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
       [NW_STAT_FAILURE]
hgs
parents:
diff changeset
   593
                  Required parameter is null.
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   596
NW_Status_t
hgs
parents:
diff changeset
   597
NW_DOM_NodeIterator_initialize(NW_DOM_NodeIterator_t* handle, 
hgs
parents:
diff changeset
   598
                               NW_DOM_Node_t* node, 
hgs
parents:
diff changeset
   599
                               NW_Uint16 token);
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
hgs
parents:
diff changeset
   602
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   603
    @function:    NW_DOM_NodeIterator_delete
hgs
parents:
diff changeset
   604
hgs
parents:
diff changeset
   605
    @synopsis:    Deletes the handle.
hgs
parents:
diff changeset
   606
hgs
parents:
diff changeset
   607
    @scope:       public
hgs
parents:
diff changeset
   608
hgs
parents:
diff changeset
   609
    @parameters:
hgs
parents:
diff changeset
   610
       [in-out] NW_DOM_NodeIterator_t* handle
hgs
parents:
diff changeset
   611
                  The node iterator.
hgs
parents:
diff changeset
   612
hgs
parents:
diff changeset
   613
    @description: Deletes the handle.
hgs
parents:
diff changeset
   614
hgs
parents:
diff changeset
   615
    @returns:     NW_Status_t
hgs
parents:
diff changeset
   616
                  Result of operation.
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
       [NW_STAT_SUCCESS]
hgs
parents:
diff changeset
   619
                  Always returned.
hgs
parents:
diff changeset
   620
hgs
parents:
diff changeset
   621
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   622
NW_Status_t
hgs
parents:
diff changeset
   623
NW_DOM_NodeIterator_delete(NW_DOM_NodeIterator_t* handle);
hgs
parents:
diff changeset
   624
hgs
parents:
diff changeset
   625
hgs
parents:
diff changeset
   626
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   627
    @function:    NW_DOM_NodeIterator_nextNode
hgs
parents:
diff changeset
   628
hgs
parents:
diff changeset
   629
    @synopsis:    Returns the next node.
hgs
parents:
diff changeset
   630
hgs
parents:
diff changeset
   631
    @scope:       public
hgs
parents:
diff changeset
   632
hgs
parents:
diff changeset
   633
    @parameters:
hgs
parents:
diff changeset
   634
       [in] NW_DOM_NodeIterator_t* handle
hgs
parents:
diff changeset
   635
                  The node iterator.
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
    @description: Returns the next node.
hgs
parents:
diff changeset
   638
hgs
parents:
diff changeset
   639
    @returns:     NW_DOM_Node_t* 
hgs
parents:
diff changeset
   640
                  The next node if there is one, otherwise NULL.
hgs
parents:
diff changeset
   641
hgs
parents:
diff changeset
   642
 ** ----------------------------------------------------------------------- **/
hgs
parents:
diff changeset
   643
NW_DOM_Node_t* 
hgs
parents:
diff changeset
   644
NW_DOM_NodeIterator_nextNode(NW_DOM_NodeIterator_t* handle);
hgs
parents:
diff changeset
   645
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
#ifdef __cplusplus
hgs
parents:
diff changeset
   648
} /* extern "C" { */
hgs
parents:
diff changeset
   649
#endif /* __cplusplus */
hgs
parents:
diff changeset
   650
hgs
parents:
diff changeset
   651
#endif  /* NW_DOM_NODE_H */