axiom_element.h

00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef AXIOM_ELEMENT_H
00020 #define AXIOM_ELEMENT_H
00021 
00022 #include <axiom_namespace.h>
00023 #include <axiom_attribute.h>
00024 #include <axiom_output.h>
00025 #include <axiom_node.h>
00026 #include <axiom_children_iterator.h>
00027 #include <axiom_children_qname_iterator.h>
00028 #include <axiom_child_element_iterator.h>
00029 #include <axutil_hash.h>
00030 #include <axutil_utils.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C"
00034 {
00035 #endif
00036 
00037     typedef struct axiom_element axiom_element_t;
00038 
00062     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00063     axiom_element_create(
00064         const axutil_env_t * env,
00065         axiom_node_t * parent,
00066         const axis2_char_t * localname,
00067         axiom_namespace_t * ns,
00068         axiom_node_t ** node);
00069 
00080     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00081     axiom_element_create_with_qname(
00082         const axutil_env_t * env,
00083         axiom_node_t * parent,
00084         const axutil_qname_t * qname,
00085         axiom_node_t ** node);
00086     /*
00087      * Find a namespace in the scope of the document.
00088      * Start to find from the given node and go up the hierarchy.
00089      * @param om_element pointer to om_element_struct contained in
00090      *        node , 
00091      * @param env Environment. MUST NOT be NULL.
00092      * @param node node containing an instance of an AXIOM element,cannot be NULL.
00093      * @param uri namespace uri..
00094      * @param prefix namespace prefix. can be NULL.
00095      * @return pointer to the namespace, if found, else NULL. On error, returns 
00096      *           NULL and sets error code in environment,s error
00097      */
00098     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00099     axiom_element_find_namespace(
00100         axiom_element_t * om_element,
00101         const axutil_env_t * env,
00102         axiom_node_t * node,
00103         const axis2_char_t * uri,
00104         const axis2_char_t * prefix);
00105 
00115     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116     axiom_element_declare_namespace(
00117         axiom_element_t * om_element,
00118         const axutil_env_t * env,
00119         axiom_node_t * node,
00120         axiom_namespace_t * ns);
00121 
00122     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00123 
00124     axiom_element_declare_namespace_assume_param_ownership(
00125         axiom_element_t * om_element,
00126         const axutil_env_t * env,
00127         axiom_namespace_t * ns);
00128 
00139     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00140 
00141     axiom_element_find_namespace_with_qname(
00142         axiom_element_t * om_element,
00143         const axutil_env_t * env,
00144         axiom_node_t * node,
00145         axutil_qname_t * qname);
00146 
00155     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00156     axiom_element_add_attribute(
00157         axiom_element_t * om_element,
00158         const axutil_env_t * env,
00159         axiom_attribute_t * attribute,
00160         axiom_node_t * node);
00161 
00170     AXIS2_EXTERN axiom_attribute_t *AXIS2_CALL
00171     axiom_element_get_attribute(
00172         axiom_element_t * om_element,
00173         const axutil_env_t * env,
00174         axutil_qname_t * qname);
00175 
00184     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00185     axiom_element_get_attribute_value(
00186         axiom_element_t * om_element,
00187         const axutil_env_t * env,
00188         axutil_qname_t * qname);
00189 
00196     AXIS2_EXTERN void AXIS2_CALL
00197     axiom_element_free(
00198         axiom_element_t * element,
00199         const axutil_env_t * env);
00200 
00208     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00209 
00210     axiom_element_serialize_start_part(
00211         axiom_element_t * om_element,
00212         const axutil_env_t * env,
00213         axiom_output_t * om_output,
00214         axiom_node_t * ele_node);
00215 
00224     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00225     axiom_element_serialize_end_part(
00226         axiom_element_t * om_element,
00227         const axutil_env_t * env,
00228         axiom_output_t * om_output);
00229 
00240     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00241     axiom_element_find_declared_namespace(
00242         axiom_element_t * om_element,
00243         const axutil_env_t * env,
00244         const axis2_char_t * uri,
00245         const axis2_char_t * prefix);
00246 
00253     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00254     axiom_element_get_localname(
00255         axiom_element_t * om_element,
00256         const axutil_env_t * env);
00257 
00266     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00267     axiom_element_set_localname(
00268         axiom_element_t * om_element,
00269         const axutil_env_t * env,
00270         const axis2_char_t * localname);
00271 
00280     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00281     axiom_element_get_namespace(
00282         axiom_element_t * om_element,
00283         const axutil_env_t * env,
00284         axiom_node_t * ele_node);
00285 
00297     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00298     axiom_element_set_namespace(
00299         axiom_element_t * om_element,
00300         const axutil_env_t * env,
00301         axiom_namespace_t * ns,
00302         axiom_node_t * node);
00303 
00304 
00314     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00315     axiom_element_set_namespace_assume_param_ownership(
00316         axiom_element_t * om_element,
00317         const axutil_env_t * env,
00318         axiom_namespace_t * ns);
00319 
00327     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00328     axiom_element_get_all_attributes(
00329         axiom_element_t * om_element,
00330         const axutil_env_t * env);
00331 
00339     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00340     axiom_element_get_namespaces(
00341         axiom_element_t * om_element,
00342         const axutil_env_t * env);
00343 
00351     AXIS2_EXTERN axutil_qname_t *AXIS2_CALL
00352     axiom_element_get_qname(
00353         axiom_element_t * om_element,
00354         const axutil_env_t * env,
00355         axiom_node_t * ele_node);
00356 
00363     AXIS2_EXTERN axiom_children_iterator_t *AXIS2_CALL
00364 
00365     axiom_element_get_children(
00366         axiom_element_t * om_element,
00367         const axutil_env_t * env,
00368         axiom_node_t * element_node);
00369 
00381     AXIS2_EXTERN axiom_children_qname_iterator_t *AXIS2_CALL
00382 
00383     axiom_element_get_children_with_qname(
00384         axiom_element_t * om_element,
00385         const axutil_env_t * env,
00386         axutil_qname_t * element_qname,
00387         axiom_node_t * element_node);
00388 
00393     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00394 
00395     axiom_element_get_first_child_with_qname(
00396         axiom_element_t * om_element,
00397         const axutil_env_t * env,
00398         axutil_qname_t * element_qname,
00399         axiom_node_t * element_node,
00400         axiom_node_t ** child_node);
00401 
00412     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00413     axiom_element_remove_attribute(
00414         axiom_element_t * om_element,
00415         const axutil_env_t * env,
00416         axiom_attribute_t * om_attribute);
00417 
00429     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00430     axiom_element_set_text(
00431         axiom_element_t * om_element,
00432         const axutil_env_t * env,
00433         const axis2_char_t * text,
00434         axiom_node_t * element_node);
00435 
00442     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00443     axiom_element_get_text(
00444         axiom_element_t * om_element,
00445         const axutil_env_t * env,
00446         axiom_node_t * element_node);
00447 
00453     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00454     axiom_element_get_first_element(
00455         axiom_element_t * om_element,
00456         const axutil_env_t * env,
00457         axiom_node_t * element_node,
00458         axiom_node_t ** first_element_node);
00459 
00465     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00466     axiom_element_to_string(
00467         axiom_element_t * om_element,
00468         const axutil_env_t * env,
00469         axiom_node_t * element_node);
00470 
00479     AXIS2_EXTERN axiom_child_element_iterator_t *AXIS2_CALL
00480 
00481     axiom_element_get_child_elements(
00482         axiom_element_t * om_element,
00483         const axutil_env_t * env,
00484         axiom_node_t * element_node);
00485 
00496     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00497     axiom_element_build(
00498         axiom_element_t * om_element,
00499         const axutil_env_t * env,
00500         axiom_node_t * element_node);
00501 
00508     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00509 
00510     axiom_element_get_default_namespace(
00511         axiom_element_t * om_element,
00512         const axutil_env_t * env,
00513         axiom_node_t * element_node);
00514 
00522     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00523 
00524     axiom_element_declare_default_namespace(
00525         axiom_element_t * om_element,
00526         const axutil_env_t * env,
00527         axis2_char_t * uri);
00528 
00537     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00538     axiom_element_find_namespace_uri(
00539         axiom_element_t * om_element,
00540         const axutil_env_t * env,
00541         axis2_char_t * prefix,
00542         axiom_node_t * element_node);
00543 
00551     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00552     axiom_element_set_namespace_with_no_find_in_current_scope(
00553         axiom_element_t * om_element,
00554         const axutil_env_t * env,
00555         axiom_namespace_t * om_ns);
00556 
00561     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00562     axiom_element_extract_attributes(
00563         axiom_element_t * om_element,
00564         const axutil_env_t * env,
00565         axiom_node_t * ele_node);
00566 
00567     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00568 
00569     axiom_element_get_attribute_value_by_name(
00570         axiom_element_t * om_ele,
00571         const axutil_env_t * env,
00572         axis2_char_t * attr_name);
00573 
00574     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00575     axiom_element_create_str(
00576         const axutil_env_t * env,
00577         axiom_node_t * parent,
00578         axutil_string_t * localname,
00579         axiom_namespace_t * ns,
00580         axiom_node_t ** node);
00581 
00582     AXIS2_EXTERN axutil_string_t *AXIS2_CALL
00583     axiom_element_get_localname_str(
00584         axiom_element_t * om_element,
00585         const axutil_env_t * env);
00586 
00587     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00588     axiom_element_set_localname_str(
00589         axiom_element_t * om_element,
00590         const axutil_env_t * env,
00591         axutil_string_t * localname);
00592 
00593     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00594     axiom_element_get_is_empty(
00595         axiom_element_t * om_element,
00596         const axutil_env_t * env);
00597 
00598     AXIS2_EXTERN void AXIS2_CALL
00599     axiom_element_set_is_empty(
00600         axiom_element_t * om_element,
00601         const axutil_env_t * env,
00602         axis2_bool_t is_empty);
00603 
00615     AXIS2_EXTERN axutil_hash_t * AXIS2_CALL
00616     axiom_element_gather_parent_namespaces(
00617         axiom_element_t * om_element,
00618         const axutil_env_t * env,
00619         axiom_node_t * om_node);
00620 
00633     AXIS2_EXTERN void AXIS2_CALL
00634     axiom_element_use_parent_namespace(
00635         axiom_element_t * om_element,
00636         const axutil_env_t * env,
00637         axiom_node_t * om_node,
00638         axiom_namespace_t *ns,
00639         axiom_element_t * root_element,
00640         axutil_hash_t *inscope_namespaces);
00641 
00655     AXIS2_EXTERN void AXIS2_CALL
00656     axiom_element_redeclare_parent_namespaces(
00657         axiom_element_t * om_element,
00658         const axutil_env_t * env,
00659         axiom_node_t * om_node,
00660         axiom_element_t * root_element,
00661         axutil_hash_t *inscope_namespaces);
00662 
00665 #ifdef __cplusplus
00666 }
00667 #endif
00668 
00669 #endif                          /* AXIOM_ELEMENT_H */

Generated on Wed Feb 27 19:43:03 2008 for Axis2/C by  doxygen 1.5.5