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