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 
00056     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00057     axiom_element_create(
00058         const axutil_env_t * env,
00059         axiom_node_t * parent,
00060         const axis2_char_t * localname,
00061         axiom_namespace_t * ns,
00062         axiom_node_t ** node);
00063 
00074     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00075     axiom_element_create_with_qname(
00076         const axutil_env_t * env,
00077         axiom_node_t * parent,
00078         const axutil_qname_t * qname,
00079         axiom_node_t ** node);
00080     /*
00081      * Find a namespace in the scope of the document.
00082      * Start to find from the given node and go up the hierarchy.
00083      * @param om_element pointer to om_element_struct contained in
00084      *        node , 
00085      * @param env Environment. MUST NOT be NULL.
00086      * @param node node containing an instance of an AXIOM element,cannot be NULL.
00087      * @param uri namespace uri..
00088      * @param prefix namespace prefix. can be NULL.
00089      * @return pointer to the namespace, if found, else NULL. On error, returns 
00090      *           NULL and sets error code in environment,s error
00091      */
00092     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00093     axiom_element_find_namespace(
00094         axiom_element_t * om_element,
00095         const axutil_env_t * env,
00096         axiom_node_t * node,
00097         const axis2_char_t * uri,
00098         const axis2_char_t * prefix);
00099 
00109     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110     axiom_element_declare_namespace(
00111         axiom_element_t * om_element,
00112         const axutil_env_t * env,
00113         axiom_node_t * node,
00114         axiom_namespace_t * ns);
00115 
00116     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00117 
00118     axiom_element_declare_namespace_assume_param_ownership(
00119         axiom_element_t * om_element,
00120         const axutil_env_t * env,
00121         axiom_namespace_t * ns);
00122 
00133     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00134 
00135     axiom_element_find_namespace_with_qname(
00136         axiom_element_t * om_element,
00137         const axutil_env_t * env,
00138         axiom_node_t * node,
00139         axutil_qname_t * qname);
00140 
00149     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00150     axiom_element_add_attribute(
00151         axiom_element_t * om_element,
00152         const axutil_env_t * env,
00153         axiom_attribute_t * attribute,
00154         axiom_node_t * node);
00155 
00164     AXIS2_EXTERN axiom_attribute_t *AXIS2_CALL
00165     axiom_element_get_attribute(
00166         axiom_element_t * om_element,
00167         const axutil_env_t * env,
00168         axutil_qname_t * qname);
00169 
00178     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00179     axiom_element_get_attribute_value(
00180         axiom_element_t * om_element,
00181         const axutil_env_t * env,
00182         axutil_qname_t * qname);
00183 
00190     AXIS2_EXTERN void AXIS2_CALL
00191     axiom_element_free(
00192         axiom_element_t * element,
00193         const axutil_env_t * env);
00194 
00202     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00203 
00204     axiom_element_serialize_start_part(
00205         axiom_element_t * om_element,
00206         const axutil_env_t * env,
00207         axiom_output_t * om_output,
00208         axiom_node_t * ele_node);
00209 
00218     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00219     axiom_element_serialize_end_part(
00220         axiom_element_t * om_element,
00221         const axutil_env_t * env,
00222         axiom_output_t * om_output);
00223 
00233     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00234 
00235     axiom_element_find_declared_namespace(
00236         axiom_element_t * om_element,
00237         const axutil_env_t * env,
00238         const axis2_char_t * uri,
00239         const axis2_char_t * prefix);
00240 
00247     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00248     axiom_element_get_localname(
00249         axiom_element_t * om_element,
00250         const axutil_env_t * env);
00251 
00260     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00261     axiom_element_set_localname(
00262         axiom_element_t * om_element,
00263         const axutil_env_t * env,
00264         const axis2_char_t * localname);
00265 
00274     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00275     axiom_element_get_namespace(
00276         axiom_element_t * om_element,
00277         const axutil_env_t * env,
00278         axiom_node_t * ele_node);
00279 
00288     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00289     axiom_element_set_namespace(
00290         axiom_element_t * om_element,
00291         const axutil_env_t * env,
00292         axiom_namespace_t * ns,
00293         axiom_node_t * node);
00294 
00295     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00296 
00297     axiom_element_set_namespace_assume_param_ownership(
00298         axiom_element_t * om_element,
00299         const axutil_env_t * env,
00300         axiom_namespace_t * ns);
00301 
00309     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00310     axiom_element_get_all_attributes(
00311         axiom_element_t * om_element,
00312         const axutil_env_t * env);
00313 
00321     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00322     axiom_element_get_namespaces(
00323         axiom_element_t * om_element,
00324         const axutil_env_t * env);
00325 
00333     AXIS2_EXTERN axutil_qname_t *AXIS2_CALL
00334     axiom_element_get_qname(
00335         axiom_element_t * om_element,
00336         const axutil_env_t * env,
00337         axiom_node_t * ele_node);
00338 
00343     AXIS2_EXTERN axiom_children_iterator_t *AXIS2_CALL
00344 
00345     axiom_element_get_children(
00346         axiom_element_t * om_element,
00347         const axutil_env_t * env,
00348         axiom_node_t * element_node);
00349 
00361     AXIS2_EXTERN axiom_children_qname_iterator_t *AXIS2_CALL
00362 
00363     axiom_element_get_children_with_qname(
00364         axiom_element_t * om_element,
00365         const axutil_env_t * env,
00366         axutil_qname_t * element_qname,
00367         axiom_node_t * element_node);
00368 
00373     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00374 
00375     axiom_element_get_first_child_with_qname(
00376         axiom_element_t * om_element,
00377         const axutil_env_t * env,
00378         axutil_qname_t * element_qname,
00379         axiom_node_t * element_node,
00380         axiom_node_t ** child_node);
00381 
00392     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00393     axiom_element_remove_attribute(
00394         axiom_element_t * om_element,
00395         const axutil_env_t * env,
00396         axiom_attribute_t * om_attribute);
00397 
00403     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00404     axiom_element_set_text(
00405         axiom_element_t * om_element,
00406         const axutil_env_t * env,
00407         const axis2_char_t * text,
00408         axiom_node_t * element_node);
00409 
00416     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00417     axiom_element_get_text(
00418         axiom_element_t * om_element,
00419         const axutil_env_t * env,
00420         axiom_node_t * element_node);
00421 
00427     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00428     axiom_element_get_first_element(
00429         axiom_element_t * om_element,
00430         const axutil_env_t * env,
00431         axiom_node_t * element_node,
00432         axiom_node_t ** first_element_node);
00433 
00439     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00440     axiom_element_to_string(
00441         axiom_element_t * om_element,
00442         const axutil_env_t * env,
00443         axiom_node_t * element_node);
00444 
00453     AXIS2_EXTERN axiom_child_element_iterator_t *AXIS2_CALL
00454 
00455     axiom_element_get_child_elements(
00456         axiom_element_t * om_element,
00457         const axutil_env_t * env,
00458         axiom_node_t * element_node);
00459 
00470     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00471     axiom_element_build(
00472         axiom_element_t * om_element,
00473         const axutil_env_t * env,
00474         axiom_node_t * element_node);
00475 
00482     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00483 
00484     axiom_element_get_default_namespace(
00485         axiom_element_t * om_element,
00486         const axutil_env_t * env,
00487         axiom_node_t * element_node);
00488 
00496     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00497 
00498     axiom_element_declare_default_namespace(
00499         axiom_element_t * om_element,
00500         const axutil_env_t * env,
00501         axis2_char_t * uri);
00502 
00512     AXIS2_EXTERN axiom_namespace_t *AXIS2_CALL
00513 
00514     axiom_element_find_namespace_uri(
00515         axiom_element_t * om_element,
00516         const axutil_env_t * env,
00517         axis2_char_t * prefix,
00518         axiom_node_t * element_node);
00519 
00527     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00528 
00529     axiom_element_set_namespace_with_no_find_in_current_scope(
00530         axiom_element_t * om_element,
00531         const axutil_env_t * env,
00532         axiom_namespace_t * om_ns);
00533 
00538     AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00539     axiom_element_extract_attributes(
00540         axiom_element_t * om_element,
00541         const axutil_env_t * env,
00542         axiom_node_t * ele_node);
00543 
00544     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00545 
00546     axiom_element_get_attribute_value_by_name(
00547         axiom_element_t * om_ele,
00548         const axutil_env_t * env,
00549         axis2_char_t * attr_name);
00550 
00551     AXIS2_EXTERN axiom_element_t *AXIS2_CALL
00552     axiom_element_create_str(
00553         const axutil_env_t * env,
00554         axiom_node_t * parent,
00555         axutil_string_t * localname,
00556         axiom_namespace_t * ns,
00557         axiom_node_t ** node);
00558 
00559     AXIS2_EXTERN axutil_string_t *AXIS2_CALL
00560     axiom_element_get_localname_str(
00561         axiom_element_t * om_element,
00562         const axutil_env_t * env);
00563 
00564     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00565     axiom_element_set_localname_str(
00566         axiom_element_t * om_element,
00567         const axutil_env_t * env,
00568         axutil_string_t * localname);
00569 
00572 #ifdef __cplusplus
00573 }
00574 #endif
00575 
00576 #endif                          /* AXIOM_ELEMENT_H */

Generated on Wed Jan 2 17:42:50 2008 for Axis2/C by  doxygen 1.5.1