summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar nandika2012-02-04 11:13:21 +0000
committerGravatar nandika2012-02-04 11:13:21 +0000
commit7c58c3b385c69ebad3c8203f984a15c3d169661a (patch)
tree678e6638f7e21c9e27c6a166e456957f3decc769
parent68b3f0e277d02464303dd42dbce6275dc45df4c4 (diff)
downloadaxis2c-7c58c3b385c69ebad3c8203f984a15c3d169661a.tar.gz
axis2c-7c58c3b385c69ebad3c8203f984a15c3d169661a.tar.bz2
patch 0001 applied from jira issue 1582
git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@1240490 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--axiom/include/axiom_node.h799
-rw-r--r--axiom/src/om/om_node.c23
2 files changed, 434 insertions, 388 deletions
diff --git a/axiom/include/axiom_node.h b/axiom/include/axiom_node.h
index 310b0b8..a92b16a 100644
--- a/axiom/include/axiom_node.h
+++ b/axiom/include/axiom_node.h
@@ -1,388 +1,411 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIOM_NODE_H
-#define AXIOM_NODE_H
-
-/**
- * @defgroup axiom AXIOM project
- * @{
- * @}
- */
-
-/**
- * @defgroup axiom_om AXIOM
- * @ingroup axiom
- * @{
- * @}
- */
-
-/**
- * @file axiom_node.h
- * @brief defines axiom_node struct
- */
-#include <axutil_env.h>
-#include <axutil_utils.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- typedef struct axiom_node axiom_node_t;
- struct axiom_output;
- struct axiom_document;
- struct axiom_stax_builder;
-
- /**
- * @defgroup axiom_node node
- * @ingroup axiom_om
- * @{
- */
-
- /**
- * @brief AXIOM types
- */
- typedef enum axiom_types_t
- {
-
- /** Invalid node type */
- AXIOM_INVALID = 0,
-
- /** AXIOM document type */
- AXIOM_DOCUMENT,
-
- /** AXIOM element type */
- AXIOM_ELEMENT,
-
- /** AXIOM doctype type */
- AXIOM_DOCTYPE,
-
- /** AXIOM comment type */
- AXIOM_COMMENT,
-
- /** AXIOM attribute type */
- AXIOM_ATTRIBUTE,
-
- /** AXIOM namespace type */
- AXIOM_NAMESPACE,
-
- /** AXIOM processing instruction type */
- AXIOM_PROCESSING_INSTRUCTION,
-
- /** AXIOM text type */
- AXIOM_TEXT,
-
- /** AXIOM data source, represent a serialized XML fragment with a stream */
- AXIOM_DATA_SOURCE
- } axiom_types_t;
-
- /**
- * Creates a node struct.
- * @param env Environment. MUST NOT be NULL, .
- * @return a pointer to newly created node struct. NULL on error.
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_create(
- const axutil_env_t * env);
-
- /**
- * Creates a node struct from a character buffer.
- * @param env Environment. MUST NOT be NULL, .
- * @param buffer string. buffer to make the node
- * @return a pointer to newly created node struct. NULL on error.
- */
- AXIS2_EXTERN axiom_node_t* AXIS2_CALL
- axiom_node_create_from_buffer(
- const axutil_env_t * env,
- axis2_char_t *buffer);
-
-
- /**
- * Frees an om node and all of its children. Please note that the attached
- * data_element will also be freed along with the node. If the node is
- * still attached to a parent, it will be detached first, then freed.
- * @param om_node node to be freed.
- * @param env Environment. MUST NOT be NULL, .
- * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN void AXIS2_CALL
- axiom_node_free_tree(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * Adds given node as child to parent. child should not have a parent
- * if child has a parent it will be detached from existing parent
- * @param om_node parent node. cannot be NULL.
- * @param env Environment. MUST NOT be NULL, .
- * @param child child node.
- * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axiom_node_add_child(
- axiom_node_t * om_node,
- const axutil_env_t * env,
- axiom_node_t * child);
-
- /**
- * Detaches given node from the parent and reset the links. Will recreate "namespace defined in
- * the parent and used in detached node" within detached node itself
- * @param om_node node to be detached, cannot be NULL.
- * @param env Environment. MUST NOT be NULL, .
- * @return a pointer to detached node,returns NULL on error
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_detach(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * Detaches given node from the parent and reset the links. will not adjust the namespace as
- * in the case of axiom_node_detach.
- * @param om_node node to be detached, cannot be NULL.
- * @param env Environment. MUST NOT be NULL, .
- * @return a pointer to detached node,returns NULL on error
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_detach_without_namespaces(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * Inserts a sibling node after the given node
- * @param om_node node to whom the sibling to be inserted. , cannot be NULL.
- * @param env Environment. MUST NOT be NULL, .
- * @param node_to_insert the node to be inserted. , cannot be NULL.
- * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axiom_node_insert_sibling_after(
- axiom_node_t * om_node,
- const axutil_env_t * env,
- axiom_node_t * node_to_insert);
-
- /**
- * Inserts a sibling node before the given current node
- * @param om_node node to whom the sibling to be inserted. , cannot be NULL.
- * @param env Environment. MUST NOT be NULL, .
- * @param node_to_insert the node to be inserted. , cannot be NULL.
- * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axiom_node_insert_sibling_before(
- axiom_node_t * om_node,
- const axutil_env_t * env,
- axiom_node_t * node_to_insert);
-
- /**
- * Serializes the given node. This op makes the node go
- * through its children and serialize them in order.
- * @param om_node node to be serialized. cannot be NULL.
- * @param env Environment .MUST NOT be NULL.
- * @param om_output AXIOM output handler to be used in serializing
- * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axiom_node_serialize(
- axiom_node_t * om_node,
- const axutil_env_t * env,
- struct axiom_output *om_output);
-
- /** get parent of om_node
- *@om_node node
- *@param env environment
- *@return pointer to parent node of om_node, return NULL if no parent exists or
- * when an error occured.
- */
-
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_parent(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get the first child of om_node
- * @param om_node node
- * @param env environment must not be null.
- * @returns pointer to first child node , NULL is returned on error with
- * error code set in environments error
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_first_child(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**get the first AXIOM_ELEMENT in om_node
- * @param om_node node
- * @param env environment must not be null
- * @returns pointer to first child om element, NULL is returned on error
- * with error code set in environments error.
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_first_element(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get the last child
- * @param om_node node
- * @param env environment, MUST NOT be NULL
- * @return pointer to last child of this node , return NULL on error.
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_last_child(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get the previous sibling
- * @param om_node om_node struct
- * @param env environment , must node be null
- * @returns a pointer to previous sibling , NULL if a previous sibling does not exits
- * (happens when this node is the first child of a node )
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_previous_sibling(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get next sibling
- * @param om_node om_node struct
- * @param env environment, MUST NOT be NULL.
- * @return next sibling of this node.
- */
- AXIS2_EXTERN axiom_node_t *AXIS2_CALL
- axiom_node_get_next_sibling(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get the node type of this element
- * Node type can be one of AXIOM_ELEMENT, AXIOM_COMMENT, AXIOM_TEXT
- * AXIOM_DOCTYPE, AXIOM_PROCESSING_INSTRUCTION
- * @param om_node node of which node type is required
- * @param env environment
- * @return node type
- */
- AXIS2_EXTERN axiom_types_t AXIS2_CALL
- axiom_node_get_node_type(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * get the struct contained in the node
- * IF the node is on type AXIOM_ELEMENT , this method returns
- * a pointer to axiom_element_t struct contained
- * @param om_node node
- * @param env environment, MUST NOT be NULL.
- * @returns pointer to struct contained in the node
- * returns NULL if no struct is contained
- */
- AXIS2_EXTERN void *AXIS2_CALL
- axiom_node_get_data_element(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * Indicates whether parser has parsed this information item completely or not
- * @param om_node om_node struct
- * @param env environment, MUST NOT be NULL.
- * @returns AXIS2_TRUE if node is completly build,
- * AXIS2_FALSE if node is not completed
- */
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- axiom_node_is_complete(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * returns the associated document,
- * only valid if built using builder and for a node of type
- * AXIOM_ELEMENT
- * returns null if no document is available
- * @param om_node
- * @param env environment, MUST NOT be NULL.
- *
- * @return the OM document of the node
- */
- AXIS2_EXTERN struct axiom_document *AXIS2_CALL
- axiom_node_get_document(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- *
- * @param om_node pointer to the OM node struct
- * @param env environment, MUST NOT be NULL
- *
- * @return the string representation of the node
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
- axiom_node_to_string(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- *
- * @param om_node pointer to the OM node struct
- * @param env environment, MUST NOT be NULL
- * @param om_output the serialized output will be placed here
- *
- * @return AXIS2_SUCCESS on success else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axiom_node_serialize_sub_tree(
- axiom_node_t * om_node,
- const axutil_env_t * env,
- struct axiom_output *om_output);
-
- /**
- *
- * @param om_node pointer to the OM node struct
- * @param env environment, MUST NOT be NULL
- *
- * @return the tree as a string
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
- axiom_node_sub_tree_to_string(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
- /**
- * Convert the node to string, treating the binary contents, if any,
- * as non-optimized content.
- * @param om_node pointer to the OM node struct
- * @param env environment, MUST NOT be NULL
- *
- * @return the none optimized string
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
- axiom_node_to_string_non_optimized(
- axiom_node_t * om_node,
- const axutil_env_t * env);
-
-
- /** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIOM_NODE_H */
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef AXIOM_NODE_H
+#define AXIOM_NODE_H
+
+/**
+ * @defgroup axiom AXIOM project
+ * @{
+ * @}
+ */
+
+/**
+ * @defgroup axiom_om AXIOM
+ * @ingroup axiom
+ * @{
+ * @}
+ */
+
+/**
+ * @file axiom_node.h
+ * @brief defines axiom_node struct
+ */
+#include <axutil_env.h>
+#include <axutil_utils.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ typedef struct axiom_node axiom_node_t;
+ struct axiom_output;
+ struct axiom_document;
+ struct axiom_stax_builder;
+
+ /**
+ * @defgroup axiom_node node
+ * @ingroup axiom_om
+ * @{
+ */
+
+ /**
+ * @brief AXIOM types
+ */
+ typedef enum axiom_types_t
+ {
+
+ /** Invalid node type */
+ AXIOM_INVALID = 0,
+
+ /** AXIOM document type */
+ AXIOM_DOCUMENT,
+
+ /** AXIOM element type */
+ AXIOM_ELEMENT,
+
+ /** AXIOM doctype type */
+ AXIOM_DOCTYPE,
+
+ /** AXIOM comment type */
+ AXIOM_COMMENT,
+
+ /** AXIOM attribute type */
+ AXIOM_ATTRIBUTE,
+
+ /** AXIOM namespace type */
+ AXIOM_NAMESPACE,
+
+ /** AXIOM processing instruction type */
+ AXIOM_PROCESSING_INSTRUCTION,
+
+ /** AXIOM text type */
+ AXIOM_TEXT,
+
+ /** AXIOM data source, represent a serialized XML fragment with a stream */
+ AXIOM_DATA_SOURCE
+ } axiom_types_t;
+
+ /**
+ * Creates a node struct.
+ * @param env Environment. MUST NOT be NULL, .
+ * @return a pointer to newly created node struct. NULL on error.
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_create(
+ const axutil_env_t * env);
+
+ /**
+ * Creates a node struct from a character buffer.
+ * @param env Environment. MUST NOT be NULL, .
+ * @param buffer string. buffer to make the node
+ * @return a pointer to newly created node struct. NULL on error.
+ */
+ AXIS2_EXTERN axiom_node_t* AXIS2_CALL
+ axiom_node_create_from_buffer(
+ const axutil_env_t * env,
+ axis2_char_t *buffer);
+
+
+ /**
+ * Frees an om node and all of its children. Please note that the attached
+ * data_element will also be freed along with the node. If the node is
+ * still attached to a parent, it will be detached first, then freed.
+ * @param om_node node to be freed.
+ * @param env Environment. MUST NOT be NULL, .
+ * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN void AXIS2_CALL
+ axiom_node_free_tree(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * Adds given node as child to parent. child should not have a parent
+ * if child has a parent it will be detached from existing parent
+ * @param om_node parent node. cannot be NULL.
+ * @param env Environment. MUST NOT be NULL, .
+ * @param child child node.
+ * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_node_add_child(
+ axiom_node_t * om_node,
+ const axutil_env_t * env,
+ axiom_node_t * child);
+
+ /**
+ * Detaches given node from the parent and reset the links. Will recreate "namespace defined in
+ * the parent and used in detached node" within detached node itself
+ * @param om_node node to be detached, cannot be NULL.
+ * @param env Environment. MUST NOT be NULL, .
+ * @return a pointer to detached node,returns NULL on error
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_detach(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * Detaches given node from the parent and reset the links. will not adjust the namespace as
+ * in the case of axiom_node_detach.
+ * @param om_node node to be detached, cannot be NULL.
+ * @param env Environment. MUST NOT be NULL, .
+ * @return a pointer to detached node,returns NULL on error
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_detach_without_namespaces(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * Inserts a sibling node after the given node
+ * @param om_node node to whom the sibling to be inserted. , cannot be NULL.
+ * @param env Environment. MUST NOT be NULL, .
+ * @param node_to_insert the node to be inserted. , cannot be NULL.
+ * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_node_insert_sibling_after(
+ axiom_node_t * om_node,
+ const axutil_env_t * env,
+ axiom_node_t * node_to_insert);
+
+ /**
+ * Inserts a sibling node before the given current node
+ * @param om_node node to whom the sibling to be inserted. , cannot be NULL.
+ * @param env Environment. MUST NOT be NULL, .
+ * @param node_to_insert the node to be inserted. , cannot be NULL.
+ * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_node_insert_sibling_before(
+ axiom_node_t * om_node,
+ const axutil_env_t * env,
+ axiom_node_t * node_to_insert);
+
+ /**
+ * Serializes the given node. This op makes the node go
+ * through its children and serialize them in order.
+ * @param om_node node to be serialized. cannot be NULL.
+ * @param env Environment .MUST NOT be NULL.
+ * @param om_output AXIOM output handler to be used in serializing
+ * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_node_serialize(
+ axiom_node_t * om_node,
+ const axutil_env_t * env,
+ struct axiom_output *om_output);
+
+ /** get parent of om_node
+ *@om_node node
+ *@param env environment
+ *@return pointer to parent node of om_node, return NULL if no parent exists or
+ * when an error occured.
+ */
+
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_parent(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the first child of om_node
+ * @param om_node node
+ * @param env environment must not be null.
+ * @returns pointer to first child node , NULL is returned on error with
+ * error code set in environments error
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_first_child(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**get the first AXIOM_ELEMENT in om_node
+ * @param om_node node
+ * @param env environment must not be null
+ * @returns pointer to first child om element, NULL is returned on error
+ * with error code set in environments error.
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_first_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the last child
+ * @param om_node node
+ * @param env environment, MUST NOT be NULL
+ * @return pointer to last child of this node , return NULL on error.
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_last_child(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the previous sibling
+ * @param om_node om_node struct
+ * @param env environment , must node be null
+ * @returns a pointer to previous sibling , NULL if a previous sibling does not exits
+ * (happens when this node is the first child of a node )
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_previous_sibling(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the previous sibling of type AXIOM_ELEMENT
+ * @param om_node om_node struct
+ * @param env environment , must node be null
+ * @returns a pointer to previous sibling , NULL if a previous sibling does not exits
+ * (happens when this node is the first element of a node )
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_previous_sibling_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get next sibling
+ * @param om_node om_node struct
+ * @param env environment, MUST NOT be NULL.
+ * @return next sibling of this node.
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_next_sibling(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get next sibling of type AXIOM_ELEMENT
+ * @param om_node om_node struct
+ * @param env environment, MUST NOT be NULL.
+ * @return next sibling of this node.
+ */
+ AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+ axiom_node_get_next_sibling_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the node type of this element
+ * Node type can be one of AXIOM_ELEMENT, AXIOM_COMMENT, AXIOM_TEXT
+ * AXIOM_DOCTYPE, AXIOM_PROCESSING_INSTRUCTION
+ * @param om_node node of which node type is required
+ * @param env environment
+ * @return node type
+ */
+ AXIS2_EXTERN axiom_types_t AXIS2_CALL
+ axiom_node_get_node_type(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * get the struct contained in the node
+ * IF the node is on type AXIOM_ELEMENT , this method returns
+ * a pointer to axiom_element_t struct contained
+ * @param om_node node
+ * @param env environment, MUST NOT be NULL.
+ * @returns pointer to struct contained in the node
+ * returns NULL if no struct is contained
+ */
+ AXIS2_EXTERN void *AXIS2_CALL
+ axiom_node_get_data_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * Indicates whether parser has parsed this information item completely or not
+ * @param om_node om_node struct
+ * @param env environment, MUST NOT be NULL.
+ * @returns AXIS2_TRUE if node is completly build,
+ * AXIS2_FALSE if node is not completed
+ */
+ AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+ axiom_node_is_complete(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * returns the associated document,
+ * only valid if built using builder and for a node of type
+ * AXIOM_ELEMENT
+ * returns null if no document is available
+ * @param om_node
+ * @param env environment, MUST NOT be NULL.
+ *
+ * @return the OM document of the node
+ */
+ AXIS2_EXTERN struct axiom_document *AXIS2_CALL
+ axiom_node_get_document(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ *
+ * @param om_node pointer to the OM node struct
+ * @param env environment, MUST NOT be NULL
+ *
+ * @return the string representation of the node
+ */
+ AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+ axiom_node_to_string(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ *
+ * @param om_node pointer to the OM node struct
+ * @param env environment, MUST NOT be NULL
+ * @param om_output the serialized output will be placed here
+ *
+ * @return AXIS2_SUCCESS on success else AXIS2_FAILURE
+ */
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_node_serialize_sub_tree(
+ axiom_node_t * om_node,
+ const axutil_env_t * env,
+ struct axiom_output *om_output);
+
+ /**
+ *
+ * @param om_node pointer to the OM node struct
+ * @param env environment, MUST NOT be NULL
+ *
+ * @return the tree as a string
+ */
+ AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+ axiom_node_sub_tree_to_string(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+ /**
+ * Convert the node to string, treating the binary contents, if any,
+ * as non-optimized content.
+ * @param om_node pointer to the OM node struct
+ * @param env environment, MUST NOT be NULL
+ *
+ * @return the none optimized string
+ */
+ AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+ axiom_node_to_string_non_optimized(
+ axiom_node_t * om_node,
+ const axutil_env_t * env);
+
+
+ /** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIOM_NODE_H */
diff --git a/axiom/src/om/om_node.c b/axiom/src/om/om_node.c
index d32949c..f9c3504 100644
--- a/axiom/src/om/om_node.c
+++ b/axiom/src/om/om_node.c
@@ -1129,6 +1129,17 @@ axiom_node_get_previous_sibling(
}
AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+axiom_node_get_previous_sibling_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env)
+{
+ axiom_node_t * result = axiom_node_get_previous_sibling( om_node, env );
+ while ( result && axiom_node_get_node_type(result, env) != AXIOM_ELEMENT )
+ result = axiom_node_get_previous_sibling( result, env );
+ return result;
+}
+
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
axiom_node_get_next_sibling(
axiom_node_t * om_node,
const axutil_env_t * env)
@@ -1160,6 +1171,18 @@ axiom_node_get_next_sibling(
return om_node->next_sibling;
}
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
+axiom_node_get_next_sibling_element(
+ axiom_node_t * om_node,
+ const axutil_env_t * env)
+{
+ axiom_node_t * result = axiom_node_get_next_sibling( om_node, env );
+ while ( result && axiom_node_get_node_type(result, env) != AXIOM_ELEMENT )
+ result = axiom_node_get_next_sibling( result, env );
+ return result;
+}
+
+
AXIS2_EXTERN axiom_types_t AXIS2_CALL
axiom_node_get_node_type(
axiom_node_t * om_node,