# axiom_node.h

Go to the documentation of this file.

    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_NODE_H
    00020 #define AXIOM_NODE_H
    00021
    00039 #include <axutil_env.h>
    00040 #include <axutil_utils.h>
    00041
    00042 #ifdef __cplusplus
    00043 extern "C"
    00044 {
    00045 #endif
    00046
    00047     typedef struct axiom_node axiom_node_t;
    00048     struct axiom_output;
    00049     struct axiom_document;
    00050     struct axiom_stax_builder;
    00051
    00061     typedef enum axiom_types_t
    00062     {
    00063
    00065         AXIOM_INVALID = 0,
    00066
    00068         AXIOM_DOCUMENT,
    00069
    00071         AXIOM_ELEMENT,
    00072
    00074         AXIOM_DOCTYPE,
    00075
    00077         AXIOM_COMMENT,
    00078
    00080         AXIOM_ATTRIBUTE,
    00081
    00083         AXIOM_NAMESPACE,
    00084
    00086         AXIOM_PROCESSING_INSTRUCTION,
    00087
    00089         AXIOM_TEXT,
    00090
    00092         AXIOM_DATA_SOURCE
    00093     } axiom_types_t;
    00094
    00100     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00101     axiom_node_create(
    00102         const axutil_env_t * env);
    00103
    00110     AXIS2_EXTERN axiom_node_t* AXIS2_CALL
    00111     axiom_node_create_from_buffer(
    00112         const axutil_env_t * env,
    00113         axis2_char_t *buffer);
    00114
    00115
    00124     AXIS2_EXTERN void AXIS2_CALL
    00125     axiom_node_free_tree(
    00126         axiom_node_t * om_node,
    00127         const axutil_env_t * env);
    00128
    00137     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00138     axiom_node_add_child(
    00139         axiom_node_t * om_node,
    00140         const axutil_env_t * env,
    00141         axiom_node_t * child);
    00142
    00150     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00151     axiom_node_detach(
    00152         axiom_node_t * om_node,
    00153         const axutil_env_t * env);
    00154
    00162     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00163     axiom_node_insert_sibling_after(
    00164         axiom_node_t * om_node,
    00165         const axutil_env_t * env,
    00166         axiom_node_t * node_to_insert);
    00167
    00175     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00176     axiom_node_insert_sibling_before(
    00177         axiom_node_t * om_node,
    00178         const axutil_env_t * env,
    00179         axiom_node_t * node_to_insert);
    00180
    00189     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00190     axiom_node_serialize(
    00191         axiom_node_t * om_node,
    00192         const axutil_env_t * env,
    00193         struct axiom_output *om_output);
    00194
    00202     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00203     axiom_node_get_parent(
    00204         axiom_node_t * om_node,
    00205         const axutil_env_t * env);
    00206
    00214     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00215     axiom_node_get_first_child(
    00216         axiom_node_t * om_node,
    00217         const axutil_env_t * env);
    00218
    00225     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00226     axiom_node_get_first_element(
    00227         axiom_node_t * om_node,
    00228         const axutil_env_t * env);
    00229
    00236     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00237     axiom_node_get_last_child(
    00238         axiom_node_t * om_node,
    00239         const axutil_env_t * env);
    00240
    00248     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00249     axiom_node_get_previous_sibling(
    00250         axiom_node_t * om_node,
    00251         const axutil_env_t * env);
    00252
    00259     AXIS2_EXTERN axiom_node_t *AXIS2_CALL
    00260     axiom_node_get_next_sibling(
    00261         axiom_node_t * om_node,
    00262         const axutil_env_t * env);
    00263
    00272     AXIS2_EXTERN axiom_types_t AXIS2_CALL
    00273     axiom_node_get_node_type(
    00274         axiom_node_t * om_node,
    00275         const axutil_env_t * env);
    00276
    00286     AXIS2_EXTERN void *AXIS2_CALL
    00287     axiom_node_get_data_element(
    00288         axiom_node_t * om_node,
    00289         const axutil_env_t * env);
    00290
    00298     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
    00299     axiom_node_is_complete(
    00300         axiom_node_t * om_node,
    00301         const axutil_env_t * env);
    00302
    00313     AXIS2_EXTERN struct axiom_document *AXIS2_CALL
    00314                 axiom_node_get_document(
    00315                     axiom_node_t * om_node,
    00316                     const axutil_env_t * env);
    00317
    00325     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    00326     axiom_node_to_string(
    00327         axiom_node_t * om_node,
    00328         const axutil_env_t * env);
    00329
    00338     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00339     axiom_node_serialize_sub_tree(
    00340         axiom_node_t * om_node,
    00341         const axutil_env_t * env,
    00342         struct axiom_output *om_output);
    00343
    00351     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    00352     axiom_node_sub_tree_to_string(
    00353         axiom_node_t * om_node,
    00354         const axutil_env_t * env);
    00355
    00364     AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    00365     axiom_node_to_string_non_optimized(
    00366         axiom_node_t * om_node,
    00367         const axutil_env_t * env);
    00370 #ifdef __cplusplus
    00371 }
    00372 #endif
    00373
    00374 #endif                          /* AXIOM_NODE_H */