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 
00459     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00460     axiom_element_get_text(
00461         axiom_element_t * om_element,
00462         const axutil_env_t * env,
00463         axiom_node_t * element_node);
00464 
00472     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00473     axiom_element_get_first_element(
00474         axiom_element_t * om_element,
00475         const axutil_env_t * env,
00476         axiom_node_t * element_node,
00477         axiom_node_t ** first_element_node);
00478 
00486     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00487     axiom_element_to_string(
00488         axiom_element_t * om_element,
00489         const axutil_env_t * env,
00490         axiom_node_t * element_node);
00491 
00500     AXIS2_EXTERN axiom_child_element_iterator_t *AXIS2_CALL
00501     axiom_element_get_child_elements(
00502         axiom_element_t * om_element,
00503         const axutil_env_t * env,
00504         axiom_node_t * element_node);
00505 
00517     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00518     axiom_element_build(
00519         axiom_element_t * om_element,
00520         const axutil_env_t * env,
00521         axiom_node_t * element_node);
00522 
00530     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00531     axiom_element_get_default_namespace(
00532         axiom_element_t * om_element,
00533         const axutil_env_t * env,
00534         axiom_node_t * element_node);
00535 
00543     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00544     axiom_element_declare_default_namespace(
00545         axiom_element_t * om_element,
00546         const axutil_env_t * env,
00547         axis2_char_t * uri);
00548 
00557     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00558     axiom_element_find_namespace_uri(
00559         axiom_element_t * om_element,
00560         const axutil_env_t * env,
00561         axis2_char_t * prefix,
00562         axiom_node_t * element_node);
00563 
00574     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00575     axiom_element_set_namespace_with_no_find_in_current_scope(
00576         axiom_element_t * om_element,
00577         const axutil_env_t * env,
00578         axiom_namespace_t * om_ns);
00579 
00588     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00589     axiom_element_extract_attributes(
00590         axiom_element_t * om_element,
00591         const axutil_env_t * env,
00592         axiom_node_t * ele_node);
00593 
00602     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00603     axiom_element_get_attribute_value_by_name(
00604         axiom_element_t * om_ele,
00605         const axutil_env_t * env,
00606         axis2_char_t * attr_name);
00607 
00617     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00618     axiom_element_create_str(
00619         const axutil_env_t * env,
00620         axiom_node_t * parent,
00621         axutil_string_t * localname,
00622         axiom_namespace_t * ns,
00623         axiom_node_t ** node);
00624 
00633     AXIS2_EXTERN axutil_string_t *AXIS2_CALL
00634     axiom_element_get_localname_str(
00635         axiom_element_t * om_element,
00636         const axutil_env_t * env);
00637 
00646     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00647     axiom_element_set_localname_str(
00648         axiom_element_t * om_element,
00649         const axutil_env_t * env,
00650         axutil_string_t * localname);
00651 
00659     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00660     axiom_element_get_is_empty(
00661         axiom_element_t * om_element,
00662         const axutil_env_t * env);
00663 
00672     AXIS2_EXTERN void AXIS2_CALL
00673     axiom_element_set_is_empty(
00674         axiom_element_t * om_element,
00675         const axutil_env_t * env,
00676         axis2_bool_t is_empty);
00677 
00689     AXIS2_EXTERN axutil_hash_t * AXIS2_CALL
00690     axiom_element_gather_parent_namespaces(
00691         axiom_element_t * om_element,
00692         const axutil_env_t * env,
00693         axiom_node_t * om_node);
00694 
00707     AXIS2_EXTERN void AXIS2_CALL
00708     axiom_element_use_parent_namespace(
00709         axiom_element_t * om_element,
00710         const axutil_env_t * env,
00711         axiom_node_t * om_node,
00712         axiom_namespace_t *ns,
00713         axiom_element_t * root_element,
00714         axutil_hash_t *inscope_namespaces);
00715 
00730     AXIS2_EXTERN void AXIS2_CALL
00731     axiom_element_redeclare_parent_namespaces(
00732         axiom_element_t * om_element,
00733         const axutil_env_t * env,
00734         axiom_node_t * om_node,
00735         axiom_element_t * root_element,
00736         axutil_hash_t *inscope_namespaces);
00737 
00740 #ifdef __cplusplus
00741 }
00742 #endif
00743 
00744 #endif                          /* AXIOM_ELEMENT_H */

Generated on Sat May 3 10:44:33 2008 for Axis2/C by  doxygen 1.5.5