Main Page | Modules | Class List | Directories | File List | Class Members | File Members

axis2_om_element.h

00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef AXIS2_OM_ELEMENT_H
00018 #define AXIS2_OM_ELEMENT_H
00019 
00020 #include <axis2_om_namespace.h>
00021 #include <axis2_om_attribute.h>
00022 #include <axis2_om_output.h>
00023 #include <axis2_om_node.h>
00024 #include <axis2_hash.h>
00025 #include <axis2.h>
00026 
00027 #ifdef __cplusplus
00028 extern "C"
00029 {
00030 #endif
00031 
00032     struct axis2_om_element;
00033     struct axis2_om_element_ops;
00034 
00046 AXIS2_DECLARE_DATA    typedef struct axis2_om_element_ops
00047     {
00048        /*
00049         * Find a namespace in the scope of the document.
00050         * Start to find from the given node and go up the hierarchy.
00051         * @param om_element pointer to om_element_struct contained in
00052         *        node , 
00053         * @param env Environment. MUST NOT be NULL.
00054         * @param node node containing an instance of an OM element,cannot be NULL.
00055         * @param uri namespace uri..
00056         * @param prefix namespace prefix. can be NULL.
00057         * @return pointer to the namespace, if found, else NULL. On error, returns 
00058         *           NULL and sets error code in environment,s error
00059         */
00060         axis2_om_namespace_t* (AXIS2_CALL *find_namespace)
00061                                         (struct axis2_om_element *om_element,
00062                                         axis2_env_t **env,
00063                                         axis2_om_node_t *node,
00064                                         const axis2_char_t *uri,
00065                                         const axis2_char_t *prefix);
00075         axis2_status_t (AXIS2_CALL *declare_namespace)
00076                                         (struct axis2_om_element *om_element,
00077                                          axis2_env_t **env,
00078                                          axis2_om_node_t *node,
00079                                          axis2_om_namespace_t * ns);
00090          axis2_om_namespace_t *(AXIS2_CALL *find_namespace_with_qname)
00091                                             (struct axis2_om_element *om_element,
00092                                              axis2_env_t **env,
00093                                              axis2_om_node_t *node,
00094                                              axis2_qname_t *qname);
00095 
00103          axis2_status_t (AXIS2_CALL *add_attribute)(struct axis2_om_element *om_element,
00104                                                     axis2_env_t **env,
00105                                                     axis2_om_attribute_t *attribute);
00106 
00115          axis2_om_attribute_t *(AXIS2_CALL *get_attribute) (struct axis2_om_element *om_element,
00116                                                             axis2_env_t **env,
00117                                                             axis2_qname_t * qname);
00118 
00125          axis2_status_t (AXIS2_CALL *free) (struct axis2_om_element *element,
00126                                             axis2_env_t **env);
00127 
00135         axis2_status_t (AXIS2_CALL *serialize_start_part)
00136                                                 (struct axis2_om_element *om_element,
00137                                                  axis2_env_t **env,
00138                                                  axis2_om_output_t * om_output);
00139 
00148         axis2_status_t (AXIS2_CALL *serialize_end_part)
00149                                                     (struct axis2_om_element *om_element,
00150                                                      axis2_env_t **env,
00151                                                      axis2_om_output_t * om_output);
00152                                                         
00159         axis2_char_t* (AXIS2_CALL *get_localname)(struct axis2_om_element *om_element,
00160                                                   axis2_env_t **env);
00169         axis2_status_t (AXIS2_CALL *set_localname)(struct axis2_om_element *om_element,
00170                                                   axis2_env_t **env,
00171                                                   const axis2_char_t *localname);
00180         axis2_om_namespace_t *(AXIS2_CALL *get_namespace)
00181                                                 (struct axis2_om_element *om_element,
00182                                                  axis2_env_t **env);
00191         axis2_status_t (AXIS2_CALL *set_namespace)(struct axis2_om_element *om_element,
00192                                                    axis2_env_t **env,
00193                                                    axis2_om_namespace_t *ns,
00194                                                    axis2_om_node_t *node);                                                                                                                                                              
00195     } axis2_om_element_ops_t;
00196 
00197     
00202     typedef struct axis2_om_element
00203     {
00205         axis2_om_element_ops_t *ops;
00206 
00207     } axis2_om_element_t;
00208 
00220     AXIS2_DECLARE(axis2_om_element_t *)
00221     axis2_om_element_create (axis2_env_t **env,
00222                              axis2_om_node_t *parent,
00223                              const axis2_char_t *localname,
00224                              axis2_om_namespace_t *ns,
00225                              axis2_om_node_t **node);
00226 
00237     AXIS2_DECLARE(axis2_om_element_t *) 
00238     axis2_om_element_create_with_qname (axis2_env_t **env,
00239                                         axis2_om_node_t *parent,
00240                                         axis2_qname_t *qname,
00241                                         axis2_om_node_t ** node);
00242 
00244 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE(om_element,env,om_node, uri, prefix) \
00245         ((om_element)->ops->find_namespace (om_element, env,om_node, uri, prefix))
00246         
00248 #define AXIS2_OM_ELEMENT_DECLARE_NAMESPACE(om_element, env , om_node, ns) \
00249         ((om_element)->ops->declare_namespace (om_element, env, om_node, ns))
00250 
00252 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE_WITH_QNAME (om_element, env, om_node, qname) \
00253         ((om_element)->ops->find_namespace_with_qname (om_element, environment, node, qname))
00254         
00256 #define AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(om_element, env, attribute) \
00257         ((om_element)->ops->add_attribute(om_element , env, attribute))
00258         
00260 #define AXIS2_OM_ELEMENT_GET_ATTRIBUTE(om_element, env, qname) \
00261         ((om_element)->ops->get_attribute(om_element, env, qname))
00262         
00264 #define AXIS2_OM_ELEMENT_FREE(om_element, env) \
00265         ((om_element)->ops->free(om_element, env))
00266         
00268 #define AXIS2_OM_ELEMENT_SERIALIZE_START_PART(om_element, env, om_output) \
00269         ((om_element)->ops->serialize_start_part(om_element, env, om_output))
00270         
00272 #define AXIS2_OM_ELEMENT_SERIALIZE_END_PART(om_element, env, om_output) \
00273         ((om_element)->ops->serialize_end_part(om_element, env, om_output))
00275 #define AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env)\
00276         ((om_element)->ops->get_localname(om_element,env))
00278 #define AXIS2_OM_ELEMENT_GET_NAMESPACE(om_element, env) \
00279         ((om_element)->ops->get_namespace(om_element, env))
00281 #define AXIS2_OM_ELEMENT_SET_LOCALNAME(om_element, env, localname) \
00282         ((om_element)->ops->set_localname(om_element, env))
00284 #define AXIS2_OM_ELEMENT_SET_NAMESPACE(om_element, env, ns , node) \
00285         ((om_element)->ops->set_namespace(om_element, env, ns, node))
00286         
00290 #ifdef __cplusplus
00291 }
00292 #endif
00293 
00294 #endif                          /* AXIS2_OM_ELEMENT_H */

Generated on Thu Nov 24 13:58:29 2005 for Axis2/C by  doxygen 1.4.2