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         
00153         axis2_om_namespace_t* (AXIS2_CALL *find_declared_namespace)
00154                                         (struct axis2_om_element *om_element,
00155                                          axis2_env_t **env,
00156                                          const axis2_char_t *uri,
00157                                          const axis2_char_t *prefix);
00158                                                              
00159                                                         
00166         axis2_char_t* (AXIS2_CALL *get_localname)(struct axis2_om_element *om_element,
00167                                                   axis2_env_t **env);
00176         axis2_status_t (AXIS2_CALL *set_localname)(struct axis2_om_element *om_element,
00177                                                   axis2_env_t **env,
00178                                                   const axis2_char_t *localname);
00187         axis2_om_namespace_t *(AXIS2_CALL *get_namespace)
00188                                                 (struct axis2_om_element *om_element,
00189                                                  axis2_env_t **env);
00198         axis2_status_t (AXIS2_CALL *set_namespace)(struct axis2_om_element *om_element,
00199                                                    axis2_env_t **env,
00200                                                    axis2_om_namespace_t *ns,
00201                                                    axis2_om_node_t *node);                                                                                                                                                              
00202     } axis2_om_element_ops_t;
00203 
00204     
00209     typedef struct axis2_om_element
00210     {
00212         axis2_om_element_ops_t *ops;
00213 
00214     } axis2_om_element_t;
00215 
00227     AXIS2_DECLARE(axis2_om_element_t *)
00228     axis2_om_element_create (axis2_env_t **env,
00229                              axis2_om_node_t *parent,
00230                              const axis2_char_t *localname,
00231                              axis2_om_namespace_t *ns,
00232                              axis2_om_node_t **node);
00233 
00244     AXIS2_DECLARE(axis2_om_element_t *) 
00245     axis2_om_element_create_with_qname (axis2_env_t **env,
00246                                         axis2_om_node_t *parent,
00247                                         axis2_qname_t *qname,
00248                                         axis2_om_node_t ** node);
00249 
00251 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE(om_element,env,om_node, uri, prefix) \
00252         ((om_element)->ops->find_namespace (om_element, env,om_node, uri, prefix))
00253         
00255 #define AXIS2_OM_ELEMENT_DECLARE_NAMESPACE(om_element, env , om_node, ns) \
00256         ((om_element)->ops->declare_namespace (om_element, env, om_node, ns))
00257 
00259 #define AXIS2_OM_ELEMENT_FIND_NAMESPACE_WITH_QNAME (om_element, env, om_node, qname) \
00260         ((om_element)->ops->find_namespace_with_qname (om_element, environment, node, qname))
00261         
00263 #define AXIS2_OM_ELEMENT_ADD_ATTRIBUTE(om_element, env, attribute) \
00264         ((om_element)->ops->add_attribute(om_element , env, attribute))
00265         
00267 #define AXIS2_OM_ELEMENT_GET_ATTRIBUTE(om_element, env, qname) \
00268         ((om_element)->ops->get_attribute(om_element, env, qname))
00269         
00271 #define AXIS2_OM_ELEMENT_FREE(om_element, env) \
00272         ((om_element)->ops->free(om_element, env))
00273         
00275 #define AXIS2_OM_ELEMENT_SERIALIZE_START_PART(om_element, env, om_output) \
00276         ((om_element)->ops->serialize_start_part(om_element, env, om_output))
00277         
00279 #define AXIS2_OM_ELEMENT_SERIALIZE_END_PART(om_element, env, om_output) \
00280         ((om_element)->ops->serialize_end_part(om_element, env, om_output))
00282 #define AXIS2_OM_ELEMENT_GET_LOCALNAME(om_element, env)\
00283         ((om_element)->ops->get_localname(om_element,env))
00285 #define AXIS2_OM_ELEMENT_GET_NAMESPACE(om_element, env) \
00286         ((om_element)->ops->get_namespace(om_element, env))
00288 #define AXIS2_OM_ELEMENT_SET_LOCALNAME(om_element, env, localname) \
00289         ((om_element)->ops->set_localname(om_element, env, localname))
00291 #define AXIS2_OM_ELEMENT_SET_NAMESPACE(om_element, env, ns , node) \
00292         ((om_element)->ops->set_namespace(om_element, env, ns, node))
00293 
00294 #define AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE(om_element, env, uri, prefix) \
00295         ((om_element)->ops->find_declared_namespace(om_element, env, uri, prefix))        
00296         
00300 #ifdef __cplusplus
00301 }
00302 #endif
00303 
00304 #endif                          /* AXIS2_OM_ELEMENT_H */

Generated on Wed Dec 7 07:58:24 2005 for Axis2/C by  doxygen 1.4.2