woden_wsdl_obj.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef WODEN_WSDL_OBJ_H
00019 #define WODEN_WSDL_OBJ_H
00020 
00034 #include <woden.h>
00035 #include <woden_wsdl_element.h>
00036 #include <woden_wsdl_component.h>
00037 
00043 typedef union woden_wsdl_obj_base woden_wsdl_obj_base_t;
00044 typedef struct woden_wsdl_obj woden_wsdl_obj_t;
00045 typedef struct woden_wsdl_obj_ops woden_wsdl_obj_ops_t;
00046 struct woden_component_exts;
00047 
00048 #ifdef __cplusplus
00049 extern "C"
00050 {
00051 #endif
00052 
00053 struct woden_wsdl_obj_ops
00054 {
00059     axis2_status_t (AXIS2_CALL *
00060     free) (
00061             void *wsdl_obj,
00062             const axis2_env_t *env);
00063     
00064     axis2_hash_t *(AXIS2_CALL *
00065     super_objs) (
00066             void *wsdl_obj,
00067             const axis2_env_t *env);
00068     
00069     woden_obj_types_t (AXIS2_CALL *
00070     type) (
00071             void *wsdl_obj,
00072             const axis2_env_t *env);
00073 
00077     woden_wsdl_element_t *(AXIS2_CALL *
00078     get_base_impl) (
00079             void *wsdl_obj,
00080             const axis2_env_t *env);
00081 
00082     struct woden_component_exts *(AXIS2_CALL *
00083     get_component_exts_for_namespace) (
00084             void *wsdl_obj,
00085             const axis2_env_t *env,
00086             axis2_uri_t *namespc);
00087     
00088     /*
00089      * Store the extensions in a map using the namespace string as the key.
00090      * If the extensions value is null, delete any existing entry in the map
00091      * for this namespace. If the nsmespace string is null, do nothing.
00092      */
00093     axis2_status_t (AXIS2_CALL *
00094     set_component_exts) (
00095             void *wsdl_obj,
00096             const axis2_env_t *env,
00097             axis2_uri_t *namespc,
00098             struct woden_component_exts *exts);
00099 };
00100 
00101 union woden_wsdl_obj_base
00102 {
00103     woden_wsdl_element_t wsdl_element;
00104     woden_wsdl_component_t wsdl_component;
00105 };
00106 
00107 struct woden_wsdl_obj
00108 {
00109     woden_wsdl_obj_base_t base;
00110     woden_wsdl_obj_ops_t *ops;
00111 };
00112 
00113 AXIS2_EXTERN woden_wsdl_obj_t * AXIS2_CALL
00114 woden_wsdl_obj_create(
00115         const axis2_env_t *env);
00116 
00117 /************************Woden C Internal Methods******************************/
00118 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00119 woden_wsdl_obj_resolve_methods(
00120         woden_wsdl_obj_t *wsdl_obj,
00121         const axis2_env_t *env,
00122         woden_wsdl_obj_t *wsdl_obj_impl,
00123         axis2_hash_t *methods);
00124 /************************End of Woden C Internal Methods***********************/
00125 
00126 #define WODEN_WSDL_OBJ_FREE(wsdl_obj, env) \
00127       (((woden_wsdl_obj_t *) wsdl_obj)->ops->free(wsdl_obj, env))
00128 
00129 #define WODEN_WSDL_OBJ_SUPER_OBJS(wsdl_obj, env) \
00130       (((woden_wsdl_obj_t *) wsdl_obj)->ops->super_objs(wsdl_obj, env))
00131 
00132 #define WODEN_WSDL_OBJ_TYPE(wsdl_obj, env) \
00133       (((woden_wsdl_obj_t *) wsdl_obj)->ops->type(wsdl_obj, env))
00134 
00135 #define WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env) \
00136       (((woden_wsdl_obj_t *) wsdl_obj)->ops->get_base_impl(wsdl_obj, env))
00137 
00138 #define WODEN_WSDL_OBJ_GET_COMPONENT_EXTS_FOR_NAMESPACE(wsdl_obj, env, \
00139                         namespc) \
00140       (((woden_wsdl_obj_t *) wsdl_obj)->ops->\
00141          get_component_exts_for_namespace(wsdl_obj, env, namespc))
00142 
00143 #define WODEN_WSDL_OBJ_SET_COMPONENT_EXTS(wsdl_obj, env, namespc, exts) \
00144       (((woden_wsdl_obj_t *) wsdl_obj)->ops->set_component_exts(\
00145         wsdl_obj, env, namespc, exts))
00146 
00148 #ifdef __cplusplus
00149 }
00150 #endif
00151 #endif /* WODEN_WSDL_OBJ_H */

Generated on Wed Dec 20 20:14:11 2006 for Axis2/C by  doxygen 1.5.1