axiom_element.h

00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef AXIOM_ELEMENT_H
00019 #define AXIOM_ELEMENT_H
00020 
00021 #include <axiom_namespace.h>
00022 #include <axiom_attribute.h>
00023 #include <axiom_output.h>
00024 #include <axiom_node.h>
00025 #include <axiom_children_iterator.h>
00026 #include <axiom_children_qname_iterator.h>
00027 #include <axiom_child_element_iterator.h>
00028 #include <axutil_hash.h>
00029 #include <axutil_utils.h>
00030 
00031 #ifdef __cplusplus
00032 extern "C"
00033 {
00034 #endif
00035 
00036     typedef struct axiom_element axiom_element_t;
00037 
00056     AXIS2_EXTERN axiom_element_t * AXIS2_CALL
00057     axiom_element_create(const axutil_env_t *env,
00058             axiom_node_t *parent,
00059             const axis2_char_t *localname,
00060             axiom_namespace_t *ns,
00061             axiom_node_t **node);
00062 
00073     AXIS2_EXTERN axiom_element_t * AXIS2_CALL
00074     axiom_element_create_with_qname(const axutil_env_t *env,
00075             axiom_node_t *parent,
00076             const axutil_qname_t *qname,
00077             axiom_node_t ** node);
00078     /*
00079      * Find a namespace in the scope of the document.
00080      * Start to find from the given node and go up the hierarchy.
00081      * @param om_element pointer to om_element_struct contained in
00082      *        node , 
00083      * @param env Environment. MUST NOT be NULL.
00084      * @param node node containing an instance of an AXIOM element,cannot be NULL.
00085      * @param uri namespace uri..
00086      * @param prefix namespace prefix. can be NULL.
00087      * @return pointer to the namespace, if found, else NULL. On error, returns 
00088      *           NULL and sets error code in environment,s error
00089      */
00090     AXIS2_EXTERN axiom_namespace_t* AXIS2_CALL
00091     axiom_element_find_namespace(axiom_element_t *om_element,
00092             const axutil_env_t *env,
00093             axiom_node_t *node,
00094             const axis2_char_t *uri,
00095             const axis2_char_t *prefix);
00105     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00106     axiom_element_declare_namespace(axiom_element_t *om_element,
00107             const axutil_env_t *env,
00108             axiom_node_t *node,
00109             axiom_namespace_t * ns);
00110 
00111     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00112     axiom_element_declare_namespace_assume_param_ownership(axiom_element_t *om_element,
00113             const axutil_env_t *env,
00114             axiom_namespace_t *ns);
00115             
00126     AXIS2_EXTERN axiom_namespace_t * AXIS2_CALL
00127     axiom_element_find_namespace_with_qname(axiom_element_t *om_element,
00128             const axutil_env_t *env,
00129             axiom_node_t *node,
00130             axutil_qname_t *qname);
00131 
00140     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00141     axiom_element_add_attribute(axiom_element_t *om_element,
00142             const axutil_env_t *env,
00143             axiom_attribute_t *attribute,
00144             axiom_node_t *node);
00145 
00154     AXIS2_EXTERN axiom_attribute_t *AXIS2_CALL
00155     axiom_element_get_attribute(axiom_element_t *om_element,
00156             const axutil_env_t *env,
00157             axutil_qname_t * qname);
00158 
00167     AXIS2_EXTERN axis2_char_t * AXIS2_CALL
00168     axiom_element_get_attribute_value(axiom_element_t *om_element,
00169             const axutil_env_t *env,
00170             axutil_qname_t * qname);
00171 
00178     AXIS2_EXTERN void AXIS2_CALL
00179     axiom_element_free(axiom_element_t *element,
00180             const axutil_env_t *env);
00181 
00189     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00190     axiom_element_serialize_start_part(axiom_element_t *om_element,
00191             const axutil_env_t *env,
00192             axiom_output_t * om_output,
00193             axiom_node_t *ele_node);
00194 
00203     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00204     axiom_element_serialize_end_part(axiom_element_t *om_element,
00205             const axutil_env_t *env,
00206             axiom_output_t * om_output);
00216     AXIS2_EXTERN axiom_namespace_t* AXIS2_CALL
00217     axiom_element_find_declared_namespace(axiom_element_t *om_element,
00218             const axutil_env_t *env,
00219             const axis2_char_t *uri,
00220             const axis2_char_t *prefix);
00221 
00222 
00229     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00230     axiom_element_get_localname(axiom_element_t *om_element,
00231             const axutil_env_t *env);
00240     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00241     axiom_element_set_localname(axiom_element_t *om_element,
00242             const axutil_env_t *env,
00243             const axis2_char_t *localname);
00252     AXIS2_EXTERN axiom_namespace_t * AXIS2_CALL
00253     axiom_element_get_namespace(axiom_element_t *om_element,
00254             const axutil_env_t *env,
00255             axiom_node_t *ele_node);
00264     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00265     axiom_element_set_namespace(axiom_element_t *om_element,
00266             const axutil_env_t *env,
00267             axiom_namespace_t *ns,
00268             axiom_node_t *node);
00269 
00270     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00271     axiom_element_set_namespace_assume_param_ownership(axiom_element_t *om_element,
00272             const axutil_env_t *env,
00273             axiom_namespace_t *ns);
00281     AXIS2_EXTERN axutil_hash_t* AXIS2_CALL
00282     axiom_element_get_all_attributes(axiom_element_t *om_element,
00283             const axutil_env_t *env);
00291     AXIS2_EXTERN axutil_hash_t* AXIS2_CALL
00292     axiom_element_get_namespaces(axiom_element_t *om_element,
00293             const axutil_env_t *env);
00301     AXIS2_EXTERN axutil_qname_t* AXIS2_CALL
00302     axiom_element_get_qname(axiom_element_t *om_element,
00303             const axutil_env_t *env,
00304             axiom_node_t *ele_node);
00305 
00310     AXIS2_EXTERN axiom_children_iterator_t* AXIS2_CALL
00311     axiom_element_get_children(axiom_element_t *om_element,
00312             const axutil_env_t *env,
00313             axiom_node_t *element_node);
00314 
00326     AXIS2_EXTERN axiom_children_qname_iterator_t * AXIS2_CALL
00327     axiom_element_get_children_with_qname(axiom_element_t *om_element,
00328             const axutil_env_t *env,
00329             axutil_qname_t *element_qname,
00330             axiom_node_t* element_node);
00335     AXIS2_EXTERN axiom_element_t* AXIS2_CALL
00336     axiom_element_get_first_child_with_qname(axiom_element_t *om_element,
00337             const axutil_env_t *env,
00338             axutil_qname_t *element_qname,
00339             axiom_node_t* element_node,
00340             axiom_node_t **child_node);
00351     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00352     axiom_element_remove_attribute(axiom_element_t *om_element,
00353             const axutil_env_t *env,
00354             axiom_attribute_t *om_attribute);
00360     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00361     axiom_element_set_text(axiom_element_t *om_element,
00362             const axutil_env_t *env,
00363             const axis2_char_t *text,
00364             axiom_node_t *element_node);
00371     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00372     axiom_element_get_text(axiom_element_t *om_element,
00373             const axutil_env_t *env,
00374             axiom_node_t *element_node);
00375 
00381     AXIS2_EXTERN axiom_element_t* AXIS2_CALL
00382     axiom_element_get_first_element(
00383         axiom_element_t *om_element,
00384         const axutil_env_t *env,
00385         axiom_node_t *element_node,
00386         axiom_node_t **first_element_node);
00392     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00393     axiom_element_to_string(axiom_element_t *om_element,
00394             const axutil_env_t *env,
00395             axiom_node_t *element_node);
00404     AXIS2_EXTERN axiom_child_element_iterator_t* AXIS2_CALL
00405     axiom_element_get_child_elements(
00406         axiom_element_t *om_element,
00407         const axutil_env_t *env,
00408         axiom_node_t *element_node);
00419     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00420     axiom_element_build(axiom_element_t *om_element,
00421             const axutil_env_t *env,
00422             axiom_node_t *element_node);
00423 
00430     AXIS2_EXTERN axiom_namespace_t* AXIS2_CALL
00431     axiom_element_get_default_namespace(
00432         axiom_element_t *om_element,
00433         const axutil_env_t *env,
00434         axiom_node_t *element_node);
00435 
00443     AXIS2_EXTERN axiom_namespace_t* AXIS2_CALL
00444     axiom_element_declare_default_namespace(axiom_element_t *om_element,
00445             const axutil_env_t *env,
00446             axis2_char_t *uri);
00447 
00457     AXIS2_EXTERN axiom_namespace_t* AXIS2_CALL
00458     axiom_element_find_namespace_uri(axiom_element_t *om_element,
00459             const axutil_env_t *env,
00460             axis2_char_t *prefix,
00461             axiom_node_t *element_node);
00469     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00470     axiom_element_set_namespace_with_no_find_in_current_scope(axiom_element_t *om_element,
00471             const axutil_env_t *env,
00472             axiom_namespace_t *om_ns);
00473 
00478     AXIS2_EXTERN axutil_hash_t* AXIS2_CALL
00479     axiom_element_extract_attributes(axiom_element_t *om_element,
00480             const axutil_env_t *env,
00481             axiom_node_t *ele_node);
00482 
00483     AXIS2_EXTERN axis2_char_t* AXIS2_CALL
00484     axiom_element_get_attribute_value_by_name(axiom_element_t *om_ele,
00485             const axutil_env_t *env,
00486             axis2_char_t *attr_name);
00487 
00488     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00489     axiom_element_create_str(const axutil_env_t *env,
00490         axiom_node_t *parent,
00491         axutil_string_t *localname,
00492         axiom_namespace_t *ns,
00493         axiom_node_t **node);
00494 
00495     AXIS2_EXTERN axutil_string_t* AXIS2_CALL
00496     axiom_element_get_localname_str(axiom_element_t *om_element,
00497         const axutil_env_t *env);
00498 
00499     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00500     axiom_element_set_localname_str(axiom_element_t *om_element,
00501         const axutil_env_t *env,
00502         axutil_string_t *localname);
00503 
00504 
00508 #ifdef __cplusplus
00509 }
00510 #endif
00511 
00512 #endif    /* AXIOM_ELEMENT_H */

Generated on Thu May 3 12:31:01 2007 for Axis2/C by  doxygen 1.4.6