woden_wsdl_obj.h

Go to the documentation of this file.
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 WODEN_WSDL_OBJ_H
00018 #define WODEN_WSDL_OBJ_H
00019 
00033 #include <woden.h>
00034 #include <woden_wsdl_element.h>
00035 #include <woden_wsdl_component.h>
00036 
00042 typedef union woden_wsdl_obj_base woden_wsdl_obj_base_t;
00043 typedef struct woden_wsdl_obj woden_wsdl_obj_t;
00044 typedef struct woden_wsdl_obj_ops woden_wsdl_obj_ops_t;
00045 struct woden_component_exts;
00046 
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051 
00052 struct woden_wsdl_obj_ops
00053 {
00058     axis2_status_t (AXIS2_CALL *
00059     free) (
00060             void *wsdl_obj,
00061             const axis2_env_t *env);
00062     
00063     axis2_hash_t *(AXIS2_CALL *
00064     super_objs) (
00065             void *wsdl_obj,
00066             const axis2_env_t *env);
00067     
00068     woden_obj_types_t (AXIS2_CALL *
00069     type) (
00070             void *wsdl_obj,
00071             const axis2_env_t *env);
00072 
00076     woden_wsdl_element_t *(AXIS2_CALL *
00077     get_base_impl) (
00078             void *wsdl_obj,
00079             const axis2_env_t *env);
00080 
00081     struct woden_component_exts *(AXIS2_CALL *
00082     get_component_exts_for_namespace) (
00083             void *wsdl_obj,
00084             const axis2_env_t *env,
00085             axis2_uri_t *namespc);
00086     
00087     /*
00088      * Store the extensions in a map using the namespace string as the key.
00089      * If the extensions value is null, delete any existing entry in the map
00090      * for this namespace. If the nsmespace string is null, do nothing.
00091      */
00092     axis2_status_t (AXIS2_CALL *
00093     set_component_exts) (
00094             void *wsdl_obj,
00095             const axis2_env_t *env,
00096             axis2_uri_t *namespc,
00097             struct woden_component_exts *exts);
00098 };
00099 
00100 union woden_wsdl_obj_base
00101 {
00102     woden_wsdl_element_t wsdl_element;
00103     woden_wsdl_component_t wsdl_component;
00104 };
00105 
00106 struct woden_wsdl_obj
00107 {
00108     woden_wsdl_obj_base_t base;
00109     woden_wsdl_obj_ops_t *ops;
00110 };
00111 
00112 AXIS2_EXTERN woden_wsdl_obj_t * AXIS2_CALL
00113 woden_wsdl_obj_create(
00114         const axis2_env_t *env);
00115 
00116 /************************Woden C Internal Methods******************************/
00117 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00118 woden_wsdl_obj_resolve_methods(
00119         woden_wsdl_obj_t *wsdl_obj,
00120         const axis2_env_t *env,
00121         woden_wsdl_obj_t *wsdl_obj_impl,
00122         axis2_hash_t *methods);
00123 /************************End of Woden C Internal Methods***********************/
00124 
00125 #define WODEN_WSDL_OBJ_FREE(wsdl_obj, env) \
00126       (((woden_wsdl_obj_t *) wsdl_obj)->ops->free(wsdl_obj, env))
00127 
00128 #define WODEN_WSDL_OBJ_SUPER_OBJS(wsdl_obj, env) \
00129       (((woden_wsdl_obj_t *) wsdl_obj)->ops->super_objs(wsdl_obj, env))
00130 
00131 #define WODEN_WSDL_OBJ_TYPE(wsdl_obj, env) \
00132       (((woden_wsdl_obj_t *) wsdl_obj)->ops->type(wsdl_obj, env))
00133 
00134 #define WODEN_WSDL_OBJ_GET_BASE_IMPL(wsdl_obj, env) \
00135       (((woden_wsdl_obj_t *) wsdl_obj)->ops->get_base_impl(wsdl_obj, env))
00136 
00137 #define WODEN_WSDL_OBJ_GET_COMPONENT_EXTS_FOR_NAMESPACE(wsdl_obj, env, \
00138                         namespc) \
00139       (((woden_wsdl_obj_t *) wsdl_obj)->ops->\
00140          get_component_exts_for_namespace(wsdl_obj, env, namespc))
00141 
00142 #define WODEN_WSDL_OBJ_SET_COMPONENT_EXTS(wsdl_obj, env, namespc, exts) \
00143       (((woden_wsdl_obj_t *) wsdl_obj)->ops->set_component_exts(\
00144         wsdl_obj, env, namespc, exts))
00145 
00147 #ifdef __cplusplus
00148 }
00149 #endif
00150 #endif /* WODEN_WSDL_OBJ_H */

Generated on Thu Aug 31 17:32:37 2006 for Axis2/C by  doxygen 1.4.6