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