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);
00128     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00129     axiom_element_declare_namespace_assume_param_ownership(
00130         axiom_element_t * om_element,
00131         const axutil_env_t * env,
00132         axiom_namespace_t * ns);
00133 
00144     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00145     axiom_element_find_namespace_with_qname(
00146         axiom_element_t * om_element,
00147         const axutil_env_t * env,
00148         axiom_node_t * node,
00149         axutil_qname_t * qname);
00150 
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00160     axiom_element_add_attribute(
00161         axiom_element_t * om_element,
00162         const axutil_env_t * env,
00163         axiom_attribute_t * attribute,
00164         axiom_node_t * node);
00165 
00174     AXIS2_EXTERN axiom_attribute_t *AXIS2_CALL
00175     axiom_element_get_attribute(
00176         axiom_element_t * om_element,
00177         const axutil_env_t * env,
00178         axutil_qname_t * qname);
00179 
00188     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00189     axiom_element_get_attribute_value(
00190         axiom_element_t * om_element,
00191         const axutil_env_t * env,
00192         axutil_qname_t * qname);
00193 
00200     AXIS2_EXTERN void AXIS2_CALL
00201     axiom_element_free(
00202         axiom_element_t * element,
00203         const axutil_env_t * env);
00204 
00212     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00213     axiom_element_serialize_start_part(
00214         axiom_element_t * om_element,
00215         const axutil_env_t * env,
00216         axiom_output_t * om_output,
00217         axiom_node_t * ele_node);
00218 
00228     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00229     axiom_element_serialize_end_part(
00230         axiom_element_t * om_element,
00231         const axutil_env_t * env,
00232         axiom_output_t * om_output);
00233 
00244     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00245     axiom_element_find_declared_namespace(
00246         axiom_element_t * om_element,
00247         const axutil_env_t * env,
00248         const axis2_char_t * uri,
00249         const axis2_char_t * prefix);
00250 
00257     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00258     axiom_element_get_localname(
00259         axiom_element_t * om_element,
00260         const axutil_env_t * env);
00261 
00270     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00271     axiom_element_set_localname(
00272         axiom_element_t * om_element,
00273         const axutil_env_t * env,
00274         const axis2_char_t * localname);
00275 
00284     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00285     axiom_element_get_namespace(
00286         axiom_element_t * om_element,
00287         const axutil_env_t * env,
00288         axiom_node_t * ele_node);
00289 
00301     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00302     axiom_element_set_namespace(
00303         axiom_element_t * om_element,
00304         const axutil_env_t * env,
00305         axiom_namespace_t * ns,
00306         axiom_node_t * node);
00307 
00308 
00318     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00319     axiom_element_set_namespace_assume_param_ownership(
00320         axiom_element_t * om_element,
00321         const axutil_env_t * env,
00322         axiom_namespace_t * ns);
00323 
00331     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00332     axiom_element_get_all_attributes(
00333         axiom_element_t * om_element,
00334         const axutil_env_t * env);
00335 
00343     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00344     axiom_element_get_namespaces(
00345         axiom_element_t * om_element,
00346         const axutil_env_t * env);
00347 
00359     AXIS2_EXTERN axutil_qname_t *AXIS2_CALL
00360     axiom_element_get_qname(
00361         axiom_element_t * om_element,
00362         const axutil_env_t * env,
00363         axiom_node_t * ele_node);
00364 
00375     AXIS2_EXTERN axiom_children_iterator_t *AXIS2_CALL
00376     axiom_element_get_children(
00377         axiom_element_t * om_element,
00378         const axutil_env_t * env,
00379         axiom_node_t * element_node);
00380 
00391     AXIS2_EXTERN axiom_children_qname_iterator_t *AXIS2_CALL
00392     axiom_element_get_children_with_qname(
00393         axiom_element_t * om_element,
00394         const axutil_env_t * env,
00395         axutil_qname_t * element_qname,
00396         axiom_node_t * element_node);
00397 
00409     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00410     axiom_element_get_first_child_with_qname(
00411         axiom_element_t * om_element,
00412         const axutil_env_t * env,
00413         axutil_qname_t * element_qname,
00414         axiom_node_t * element_node,
00415         axiom_node_t ** child_node);
00416 
00427     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00428     axiom_element_remove_attribute(
00429         axiom_element_t * om_element,
00430         const axutil_env_t * env,
00431         axiom_attribute_t * om_attribute);
00432 
00444     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00445     axiom_element_set_text(
00446         axiom_element_t * om_element,
00447         const axutil_env_t * env,
00448         const axis2_char_t * text,
00449         axiom_node_t * element_node);
00450 
00462     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00463     axiom_element_get_text(
00464         axiom_element_t * om_element,
00465         const axutil_env_t * env,
00466         axiom_node_t * element_node);
00467 
00475     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00476     axiom_element_get_first_element(
00477         axiom_element_t * om_element,
00478         const axutil_env_t * env,
00479         axiom_node_t * element_node,
00480         axiom_node_t ** first_element_node);
00481 
00489     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00490     axiom_element_to_string(
00491         axiom_element_t * om_element,
00492         const axutil_env_t * env,
00493         axiom_node_t * element_node);
00494 
00503     AXIS2_EXTERN axiom_child_element_iterator_t *AXIS2_CALL
00504     axiom_element_get_child_elements(
00505         axiom_element_t * om_element,
00506         const axutil_env_t * env,
00507         axiom_node_t * element_node);
00508 
00520     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00521     axiom_element_build(
00522         axiom_element_t * om_element,
00523         const axutil_env_t * env,
00524         axiom_node_t * element_node);
00525 
00533     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00534     axiom_element_get_default_namespace(
00535         axiom_element_t * om_element,
00536         const axutil_env_t * env,
00537         axiom_node_t * element_node);
00538 
00546     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00547     axiom_element_declare_default_namespace(
00548         axiom_element_t * om_element,
00549         const axutil_env_t * env,
00550         axis2_char_t * uri);
00551 
00560     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00561     axiom_element_find_namespace_uri(
00562         axiom_element_t * om_element,
00563         const axutil_env_t * env,
00564         const axis2_char_t * prefix,
00565         axiom_node_t * element_node);
00566 
00577     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00578     axiom_element_set_namespace_with_no_find_in_current_scope(
00579         axiom_element_t * om_element,
00580         const axutil_env_t * env,
00581         axiom_namespace_t * om_ns);
00582 
00591     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00592     axiom_element_extract_attributes(
00593         axiom_element_t * om_element,
00594         const axutil_env_t * env,
00595         axiom_node_t * ele_node);
00596 
00605     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00606     axiom_element_get_attribute_value_by_name(
00607         axiom_element_t * om_ele,
00608         const axutil_env_t * env,
00609         axis2_char_t * attr_name);
00610 
00620     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00621     axiom_element_create_str(
00622         const axutil_env_t * env,
00623         axiom_node_t * parent,
00624         axutil_string_t * localname,
00625         axiom_namespace_t * ns,
00626         axiom_node_t ** node);
00627 
00636     AXIS2_EXTERN axutil_string_t *AXIS2_CALL
00637     axiom_element_get_localname_str(
00638         axiom_element_t * om_element,
00639         const axutil_env_t * env);
00640 
00649     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00650     axiom_element_set_localname_str(
00651         axiom_element_t * om_element,
00652         const axutil_env_t * env,
00653         axutil_string_t * localname);
00654 
00662     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00663     axiom_element_get_is_empty(
00664         axiom_element_t * om_element,
00665         const axutil_env_t * env);
00666 
00675     AXIS2_EXTERN void AXIS2_CALL
00676     axiom_element_set_is_empty(
00677         axiom_element_t * om_element,
00678         const axutil_env_t * env,
00679         axis2_bool_t is_empty);
00680 
00692     AXIS2_EXTERN axutil_hash_t * AXIS2_CALL
00693     axiom_element_gather_parent_namespaces(
00694         axiom_element_t * om_element,
00695         const axutil_env_t * env,
00696         axiom_node_t * om_node);
00697 
00710     AXIS2_EXTERN void AXIS2_CALL
00711     axiom_element_use_parent_namespace(
00712         axiom_element_t * om_element,
00713         const axutil_env_t * env,
00714         axiom_node_t * om_node,
00715         axiom_namespace_t *ns,
00716         axiom_element_t * root_element,
00717         axutil_hash_t *inscope_namespaces);
00718 
00733     AXIS2_EXTERN void AXIS2_CALL
00734     axiom_element_redeclare_parent_namespaces(
00735         axiom_element_t * om_element,
00736         const axutil_env_t * env,
00737         axiom_node_t * om_node,
00738         axiom_element_t * root_element,
00739         axutil_hash_t *inscope_namespaces);
00740 
00743 #ifdef __cplusplus
00744 }
00745 #endif
00746 
00747 #endif                          /* AXIOM_ELEMENT_H */

Generated on Fri Apr 17 11:49:42 2009 for Axis2/C by  doxygen 1.5.3