00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_CONFIGURABLE_ELEMENT_H
00019 #define WODEN_CONFIGURABLE_ELEMENT_H
00020
00037 #include <axis2_allocator.h>
00038 #include <axis2_env.h>
00039 #include <axis2_error.h>
00040 #include <axis2_string.h>
00041 #include <axis2_utils.h>
00042 #include <axis2_hash.h>
00043 #include <axis2_qname.h>
00044 #include <woden.h>
00045 #include <woden_wsdl_element.h>
00046
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051
00052 typedef struct woden_configurable_element
00053 woden_configurable_element_t;
00054 typedef struct woden_configurable_element_ops
00055 woden_configurable_element_ops_t;
00056 struct woden_feature_element;
00057 struct woden_property_element;
00058
00064 struct woden_configurable_element_ops
00065 {
00070 axis2_status_t (AXIS2_CALL *
00071 free) (
00072 void *conf_el,
00073 const axis2_env_t *env);
00074
00075 woden_obj_types_t (AXIS2_CALL *
00076 type) (
00077 void *conf_el,
00078 const axis2_env_t *env);
00079
00080 axis2_status_t (AXIS2_CALL *
00081 add_feature_element) (
00082 void *conf_el,
00083 const axis2_env_t *env,
00084 struct woden_feature_element *feature);
00085
00086 axis2_array_list_t *(AXIS2_CALL *
00087 get_feature_elements) (
00088 void *conf_el,
00089 const axis2_env_t *env);
00090
00091 axis2_status_t (AXIS2_CALL *
00092 add_property_element) (
00093 void *conf_el,
00094 const axis2_env_t *env,
00095 struct woden_property_element *feature);
00096
00097 axis2_array_list_t *(AXIS2_CALL *
00098 get_property_elements) (
00099 void *conf_el,
00100 const axis2_env_t *env);
00101
00102
00103 };
00104
00105 struct woden_configurable_element
00106 {
00107 woden_wsdl_element_t wsdl_element;
00108 woden_configurable_element_ops_t *ops;
00109 };
00110
00111
00112 axis2_status_t AXIS2_CALL
00113 woden_configurable_element_resolve_methods(
00114 woden_configurable_element_t *configurable_element,
00115 const axis2_env_t *env,
00116 axis2_hash_t *methods);
00117
00118
00119 #define WODEN_CONFIGURABLE_ELEMENT_FREE(conf_el, env) \
00120 (((woden_configurable_element_t *) conf_el)->ops->\
00121 free (conf_el, env))
00122
00123 #define WODEN_CONFIGURABLE_ELEMENT_TYPE(conf_el, env) \
00124 (((woden_configurable_element_t *) conf_el)->ops->\
00125 type (conf_el, env))
00126
00127 #define WODEN_CONFIGURABLE_ELEMENT_ADD_FEATURE_ELEMENT(conf_el, env, \
00128 feature) \
00129 (((woden_configurable_element_t *) conf_el)->ops->\
00130 add_feature_element(conf_el, env, feature))
00131
00132 #define WODEN_CONFIGURABLE_ELEMENT_GET_FEATURE_ELEMENTS(conf_el, env) \
00133 (((woden_configurable_element_t *) conf_el)->ops->\
00134 get_feature_elements(conf_el, env))
00135
00136 #define WODEN_CONFIGURABLE_ELEMENT_ADD_PROPERTY_ELEMENT(conf_el, env, \
00137 property) \
00138 (((woden_configurable_element_t *) conf_el)->ops->\
00139 add_property_element(conf_el, env, property))
00140
00141 #define WODEN_CONFIGURABLE_ELEMENT_GET_PROPERTY_ELEMENTS(conf_el, env) \
00142 (((woden_configurable_element_t *) conf_el)->ops->\
00143 get_property_elements(conf_el, env))
00144
00145
00146
00148 #ifdef __cplusplus
00149 }
00150 #endif
00151 #endif