/* * 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 #include #include #include #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 */