00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_INTERFACE_H
00019 #define WODEN_INTERFACE_H
00020
00031 #include <woden.h>
00032 #include <woden_interface_element.h>
00033 #include <woden_configurable.h>
00034
00040 typedef union woden_interface_base woden_interface_base_t;
00041 typedef struct woden_interface woden_interface_t;
00042 typedef struct woden_interface_ops woden_interface_ops_t;
00043
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00050 struct woden_interface_ops
00051 {
00056 axis2_status_t (AXIS2_CALL *
00057 free) (void *woden_interface,
00058 const axis2_env_t *env);
00059
00060 axis2_hash_t *(AXIS2_CALL *
00061 super_objs) (void *woden_interface,
00062 const axis2_env_t *env);
00063
00064 woden_obj_types_t (AXIS2_CALL *
00065 type) (void *woden_interface,
00066 const axis2_env_t *env);
00070 struct woden_configurable *(AXIS2_CALL *
00071 get_base_impl) (
00072 void *woden_interface,
00073 const axis2_env_t *env);
00074
00075 axis2_qname_t *(AXIS2_CALL *
00076 get_qname) (
00077 void *woden_interface,
00078 const axis2_env_t *env);
00079
00080 axis2_array_list_t *(AXIS2_CALL *
00081 get_extended_interfaces) (
00082 void *woden_interface,
00083 const axis2_env_t *env);
00084
00085 axis2_array_list_t *(AXIS2_CALL *
00086 get_interface_faults) (
00087 void *woden_interface,
00088 const axis2_env_t *env);
00089
00090 void *(AXIS2_CALL *
00091 get_interface_fault) (
00092 void *woden_interface,
00093 const axis2_env_t *env,
00094 axis2_qname_t *qname);
00095
00096 axis2_array_list_t *(AXIS2_CALL *
00097 get_interface_ops) (
00098 void *woden_interface,
00099 const axis2_env_t *env);
00100
00101 void *(AXIS2_CALL *
00102 to_element) (
00103 void *woden_interface,
00104 const axis2_env_t *env);
00105
00106 };
00107
00108 union woden_interface_base
00109 {
00110 woden_configurable_t configurable;
00111 woden_interface_element_t interface_element;
00112 };
00113
00114 struct woden_interface
00115 {
00116 woden_interface_base_t base;
00117 woden_interface_ops_t *ops;
00118 };
00119
00120 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00121 woden_interface_create(
00122 const axis2_env_t *env);
00123
00124
00125
00126 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00127 woden_interface_to_interface_element(
00128 void *woden_interface,
00129 const axis2_env_t *env);
00130
00131 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00132 woden_interface_to_documentable(
00133 void *woden_interface,
00134 const axis2_env_t *env);
00135
00136 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00137 woden_interface_to_configurable(
00138 void *woden_interface,
00139 const axis2_env_t *env);
00140
00141 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00142 woden_interface_to_attr_extensible(
00143 void *woden_interface,
00144 const axis2_env_t *env);
00145
00146 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00147 woden_interface_to_element_extensible(
00148 void *woden_interface,
00149 const axis2_env_t *env);
00150
00151 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00152 woden_interface_resolve_methods(
00153 woden_interface_t *woden_interface,
00154 const axis2_env_t *env,
00155 woden_interface_t *interface_impl,
00156 axis2_hash_t *methods);
00157
00158
00159 #define WODEN_INTERFACE_FREE(interface, env) \
00160 (((woden_interface_t *) interface)->ops->free(interface, env))
00161
00162 #define WODEN_INTERFACE_SUPER_OBJS(interface, env) \
00163 (((woden_interface_t *) interface)->ops->super_objs(interface, env))
00164
00165 #define WODEN_INTERFACE_TYPE(interface, env) \
00166 (((woden_interface_t *) interface)->ops->type(interface, env))
00167
00168 #define WODEN_INTERFACE_GET_BASE_IMPL(interface, env) \
00169 (((woden_interface_t *) interface)->ops->get_base_impl(interface, env))
00170
00171 #define WODEN_INTERFACE_GET_QNAME(interface, env) \
00172 (((woden_interface_t *) interface)->ops->\
00173 get_qname(interface, env))
00174
00175 #define WODEN_INTERFACE_GET_EXTENDED_INTERFACES(interface, env) \
00176 (((woden_interface_t *) interface)->ops->\
00177 get_extended_interfaces(interface, env))
00178
00179 #define WODEN_INTERFACE_GET_INTERFACE_FAULTS(interface, env) \
00180 (((woden_interface_t *) interface)->ops->\
00181 get_interface_faults(interface, env))
00182
00183 #define WODEN_INTERFACE_GET_INTERFACE_FAULT(interface, env, qname) \
00184 (((woden_interface_t *) interface)->ops->\
00185 get_interface_fault(interface, env, qname))
00186
00187 #define WODEN_INTERFACE_GET_INTERFACE_OPS(interface, env) \
00188 (((woden_interface_t *) interface)->ops->\
00189 get_interface_ops(interface, env))
00190
00191 #define WODEN_INTERFACE_TO_ELEMENT(interface, env) \
00192 (((woden_interface_t *) interface)->ops->\
00193 to_element(interface, env))
00194
00196 #ifdef __cplusplus
00197 }
00198 #endif
00199 #endif