00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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
00090
00091
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
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
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