00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_BINDING_ELEMENT_H
00019 #define WODEN_BINDING_ELEMENT_H
00020
00027 #include <axis2_allocator.h>
00028 #include <axis2_env.h>
00029 #include <axis2_error.h>
00030 #include <axis2_string.h>
00031 #include <axis2_utils.h>
00032 #include <axis2_hash.h>
00033 #include <axis2_qname.h>
00034 #include <axis2_uri.h>
00035 #include <axis2_array_list.h>
00036 #include <woden.h>
00037 #include <woden_documentable_element.h>
00038 #include <woden_configurable_element.h>
00039
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044
00045 typedef struct woden_binding_element woden_binding_element_t;
00046 typedef struct woden_binding_element_ops woden_binding_element_ops_t;
00047 typedef union woden_binding_element_base woden_binding_element_base_t;
00048
00054 struct woden_binding_element_ops
00055 {
00060 axis2_status_t (AXIS2_CALL *
00061 free) (
00062 void *binding_element,
00063 const axis2_env_t *env);
00064
00065 woden_obj_types_t (AXIS2_CALL *
00066 type) (
00067 void *binding_element,
00068 const axis2_env_t *env);
00069
00076 axis2_status_t (AXIS2_CALL *
00077 set_qname) (
00078 void *binding_element,
00079 const axis2_env_t *env,
00080 axis2_qname_t *qname);
00081
00082 axis2_qname_t *(AXIS2_CALL *
00083 get_qname) (
00084 void *binding_element,
00085 const axis2_env_t *env);
00086
00093 axis2_status_t (AXIS2_CALL *
00094 set_interface_qname) (
00095 void *binding_element,
00096 const axis2_env_t *env,
00097 axis2_qname_t *qname);
00098
00099 axis2_qname_t *(AXIS2_CALL *
00100 get_interface_qname) (
00101 void *binding_element,
00102 const axis2_env_t *env);
00103
00110 void *(AXIS2_CALL *
00111 get_interface_element) (
00112 void *binding_element,
00113 const axis2_env_t *env);
00114
00122 axis2_status_t (AXIS2_CALL *
00123 set_type) (
00124 void *binding_element,
00125 const axis2_env_t *env,
00126 axis2_uri_t *type);
00127
00128 axis2_uri_t *(AXIS2_CALL *
00129 get_type) (
00130 void *binding_element,
00131 const axis2_env_t *env);
00132
00133 axis2_status_t (AXIS2_CALL *
00134 add_binding_fault_element) (
00135 void *binding_element,
00136 const axis2_env_t *env,
00137 void *fault);
00138
00139 axis2_array_list_t *(AXIS2_CALL *
00140 get_binding_fault_elements) (
00141 void *binding_element,
00142 const axis2_env_t *env);
00143
00144 axis2_status_t (AXIS2_CALL *
00145 add_binding_op_element) (
00146 void *binding_element,
00147 const axis2_env_t *env,
00148 void *op);
00149
00150 axis2_array_list_t *(AXIS2_CALL *
00151 get_binding_op_elements) (
00152 void *binding_element,
00153 const axis2_env_t *env);
00154
00155 };
00156
00157 union woden_binding_element_base
00158 {
00159 woden_documentable_element_t documentable_element;
00160 woden_configurable_element_t configurable_element;
00161 };
00162
00163 struct woden_binding_element
00164 {
00165 woden_binding_element_base_t base;
00166 woden_binding_element_ops_t *ops;
00167 };
00168
00169 AXIS2_EXTERN woden_binding_element_t * AXIS2_CALL
00170 woden_binding_element_create(
00171 const axis2_env_t *env);
00172
00173
00174 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00175 woden_binding_element_resolve_methods(
00176 woden_binding_element_t *binding_element,
00177 const axis2_env_t *env,
00178 axis2_hash_t *methods);
00179
00180
00181 #define WODEN_BINDING_ELEMENT_FREE(binding_element, env) \
00182 (((woden_binding_element_t *) binding_element)->ops->\
00183 free (binding_element, env))
00184
00185 #define WODEN_BINDING_ELEMENT_SUPER_OBJS(binding_element, env) \
00186 (((woden_binding_element_t *) binding_element)->ops->\
00187 super_objs (binding_element, env))
00188
00189 #define WODEN_BINDING_ELEMENT_TYPE(binding_element, env) \
00190 (((woden_binding_element_t *) binding_element)->ops->\
00191 type (binding_element, env))
00192
00193 #define WODEN_BINDING_ELEMENT_SET_QNAME(binding_element, env, qname) \
00194 (((woden_binding_element_t *) binding_element)->ops->\
00195 set_qname (binding_element, env, qname))
00196
00197 #define WODEN_BINDING_ELEMENT_GET_QNAME(binding_element, env) \
00198 (((woden_binding_element_t *) binding_element)->ops->\
00199 get_qname (binding_element, env))
00200
00201 #define WODEN_BINDING_ELEMENT_SET_INTERFACE_QNAME(binding_element, env, qname) \
00202 (((woden_binding_element_t *) binding_element)->ops->\
00203 set_interface_qname (binding_element, env, qname))
00204
00205 #define WODEN_BINDING_ELEMENT_GET_INTERFACE_QNAME(binding_element, env) \
00206 (((woden_binding_element_t *) binding_element)->ops->\
00207 get_interface_qname (binding_element, env))
00208
00209 #define WODEN_BINDING_ELEMENT_GET_INTERFACE_ELEMENT(binding_element, env) \
00210 (((woden_binding_element_t *) binding_element)->ops->\
00211 get_interface_element (binding_element, env))
00212
00213 #define WODEN_BINDING_ELEMENT_SET_TYPE(binding_element, env, type) \
00214 (((woden_binding_element_t *) binding_element)->ops->\
00215 set_type (binding_element, env, type))
00216
00217 #define WODEN_BINDING_ELEMENT_GET_TYPE(binding_element, env) \
00218 (((woden_binding_element_t *) binding_element)->ops->\
00219 get_type (binding_element, env))
00220
00221 #define WODEN_BINDING_ELEMENT_ADD_BINDING_FAULT_ELEMENT(binding_element, env, fault) \
00222 (((woden_binding_element_t *) binding_element)->ops->\
00223 add_binding_fault_element (binding_element, env, fault))
00224
00225 #define WODEN_BINDING_ELEMENT_GET_BINDING_FAULT_ELEMENTS(binding_element, env) \
00226 (((woden_binding_element_t *) binding_element)->ops->\
00227 get_binding_fault_elements (binding_element, env))
00228
00229 #define WODEN_BINDING_ELEMENT_ADD_BINDING_OP_ELEMENT(binding_element, env, op) \
00230 (((woden_binding_element_t *) binding_element)->ops->\
00231 add_binding_op_element (binding_element, env, op))
00232
00233 #define WODEN_BINDING_ELEMENT_GET_BINDING_OP_ELEMENTS(binding_element, env) \
00234 (((woden_binding_element_t *) binding_element)->ops->\
00235 get_binding_op_elements (binding_element, env))
00236
00238 #ifdef __cplusplus
00239 }
00240 #endif
00241 #endif