blob: 9c87877fac6b3b49da13aab599a29d16a87466b3 [file] [log] [blame]
/*
* 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_UTIL_H
#define AXIOM_UTIL_H
#include <axutil_array_list.h>
#include <axutil_string.h>
#include <axiom.h>
#include <axutil_uri.h>
#ifdef __cplusplus
extern "C"
{
#endif
/**
* After calling this method the variable child points to
* the node of the returning element
* @param ele_node axiom node
* @param env environment, MUST not be NULL
* @param uri uri
* return the first child element which has the given uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element_with_uri(
axiom_node_t * ele_node,
const axutil_env_t * env,
axis2_char_t * uri,
axiom_node_t ** child);
/**
* After calling this method next_node will point to the
* previous sibling node to the returning node
* @param ele_node axiom node
* @param env environment, MUST not be NULL
* @param uri uri
* @param next_node
* return the next sibling element to the element which contains
* the give namespace uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_sibling_element_with_uri(
axiom_node_t * ele_node,
const axutil_env_t * env,
axis2_char_t * uri,
axiom_node_t ** next_node);
/**
* @param eleaxiom node
* @param env environment, MUST not be NULL
* @param ele_node
* @param child_node
* return the first child element this calls the method
* axiom_element_get_first_child_element
*
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axiom_node_t ** child_node);
/**
* @param ele axiom element
* @param env environment, MUST not be NULL
* @param ele_node
* @param child_node
* return the last child element of the given element ele_node
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_last_child_element(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axiom_node_t ** child_node);
/**
* @param ele axiom node
* @param env environment, MUST not be NULL
* @param ele_node
* @param next_node
* return the first child element which has the given uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_sibling_element(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axiom_node_t ** next_node);
/**
* @param ele axiom element
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname localname to find the first child element
* @param child_node
*
* return the first child element from ele_node which contains the
* given local name
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element_with_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname to find the last child element
* @param child_node
* return the last child element which having the given local name
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_last_child_element_with_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname to find the last child element
* @param next_node
* return the next sibling element which is having the given local name
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_siblng_element_with_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axiom_node_t ** next_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname to find the last child element
* @param uri uri to of the namespace to find the first element
* @param next_node
* return the first child element which is having the given local
* name and the given namespace uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element_with_uri_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * uri,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname to find the last child element
* @param uri uri of the namespace to find the last element
* @param next_node
* return the last child element which is having the given local name and
* the given namespace uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_last_child_element_with_uri_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * uri,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param localname to find the last child element
* @param uri uri of the namespace to find the last element
* @param next_node
* return next sibling element which is having the given local name and
* the given namespace uri
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_sibling_element_with_uri_localname(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * uri,
axiom_node_t ** next_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param names local names to find the child element
* @param child_node
* return the first child element which is having all the localnames given
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element_with_localnames(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axutil_array_list_t * names,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param names local names to find the last child element
* @param child_node
* return the last child element which is having all the localnames given
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_last_child_element_with_localnames(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axutil_array_list_t * names,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node axiom node
* @param names local names to find the next sibling
* @param child_node
* return the next sibling element which is having all the localnames given
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_siblng_element_with_localnames(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axutil_array_list_t * names,
axiom_node_t ** next_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node
* @param localname local name to find the first child
* @param attr_name attribute name to find first child
* @param attr_value attribute value of attr_name attribute
* @param child_node
* return the first child element which is having the given local
* name and the given attribute (attribute name and attribute value)
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_first_child_element_with_localname_attr(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * attr_name,
axis2_char_t * attr_value,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node
* @param localname local name to find the last child
* @param attr_name attribute name to find last child
* @param attr_value attribute value of attr_name attribute
* @param child_node
* return the last child element which is having the given local
* name and the given attribute (attribute name and attribute value)
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_last_child_element_with_localname_attr(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * attr_name,
axis2_char_t * attr_value,
axiom_node_t ** child_node);
/**
* @param ele
* @param env environment, MUST not be NULL
* @param ele_node
* @param localname local name to find the next sibling child
* @param attr_name attribute name to find the next sibling child
* @param attr_value attribute value of attr_name attribute
* @param child_node
* return the next sibling child element which is having the given local
* name and the given attribute (attribute name and attribute value)
*/
AXIS2_EXTERN axiom_element_t *AXIS2_CALL
axiom_util_get_next_siblng_element_with_localname_attr(
axiom_element_t * ele,
const axutil_env_t * env,
axiom_node_t * ele_node,
axis2_char_t * localname,
axis2_char_t * attr_name,
axis2_char_t * attr_value,
axiom_node_t ** next_node);
/**
* @param node axiom node
* @param env environment, MUST not be NULL
*
* return the element text of axiom_node
*/
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axiom_util_get_child_text(
axiom_node_t * node,
const axutil_env_t * env);
/**
* @param node axiom node
* @param env environment, MUST not be NULL
*
* return the local name of axiom_node
*/
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axiom_util_get_localname(
axiom_node_t * node,
const axutil_env_t * env);
/**
* @param om_node axiom node
* @param env environment, MUST not be NULL
*
* return the namespace uri of the give node variable om_node if
* there's no namespace in that particular om_node this method
* returns NULL
*/
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axiom_util_get_node_namespace_uri(
axiom_node_t * om_node,
const axutil_env_t * env);
/**
* @param om_ele axiom node
* @param env environment, MUST not be NULL
* @param om_node
* return all the child element using the method
* axiom_child_element_iterator_create
*/
AXIS2_EXTERN axiom_child_element_iterator_t *AXIS2_CALL
axiom_util_get_child_elements(
axiom_element_t * om_ele,
const axutil_env_t * env,
axiom_node_t * om_node);
AXIS2_EXTERN axiom_document_t *AXIS2_CALL
axiom_util_new_document(
const axutil_env_t * env,
const axutil_uri_t * uri);
AXIS2_EXTERN axiom_node_t* AXIS2_CALL
axiom_util_get_node_by_local_name(
const axutil_env_t *env,
axiom_node_t *node,
axis2_char_t *local_name);
/**
* Creates a clone of given node
* @param env environment, MUST not be NULL
* @param node node to be cloned
* @return cloned node
*/
AXIS2_EXTERN axiom_node_t *AXIS2_CALL
axiom_util_clone_node(
const axutil_env_t *env,
axiom_node_t *node);
#ifdef __cplusplus
}
#endif
#endif /* AXIOM_UTIL_H */