00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_PROPERTY_H
00019 #define WODEN_PROPERTY_H
00020
00030 #include <woden.h>
00031 #include <woden_property_element.h>
00032 #include <woden_wsdl_obj.h>
00033 #include <woden_documentable.h>
00034 #include <woden_nested_component.h>
00035
00041 typedef union woden_property_base woden_property_base_t;
00042 typedef struct woden_property woden_property_t;
00043 typedef struct woden_property_ops woden_property_ops_t;
00044 struct woden_documentation_element;
00045 struct woden_wsdl_component;
00046 struct woden_documentable;
00047
00048 #ifdef __cplusplus
00049 extern "C"
00050 {
00051 #endif
00052
00053 struct woden_property_ops
00054 {
00059 axis2_status_t (AXIS2_CALL *
00060 free) (void *property,
00061 const axis2_env_t *env);
00062
00063 axis2_hash_t *(AXIS2_CALL *
00064 super_objs) (void *property,
00065 const axis2_env_t *env);
00066
00067 woden_obj_types_t (AXIS2_CALL *
00068 type) (void *property,
00069 const axis2_env_t *env);
00073 struct woden_documentable *(AXIS2_CALL *
00074 get_base_impl) (
00075 void *property,
00076 const axis2_env_t *env);
00077
00078 axis2_uri_t *(AXIS2_CALL *
00079 get_ref) (
00080 void *property,
00081 const axis2_env_t *env);
00082
00083 void *(AXIS2_CALL *
00084 get_value_constraint) (
00085 void *property,
00086 const axis2_env_t *env);
00087
00088 void *(AXIS2_CALL *
00089 get_value) (
00090 void *property,
00091 const axis2_env_t *env);
00092
00093 void *(AXIS2_CALL *
00094 get_parent) (
00095 void *property,
00096 const axis2_env_t *env);
00097
00098 void *(AXIS2_CALL *
00099 to_element) (
00100 void *property,
00101 const axis2_env_t *env);
00102
00103
00104
00105
00106 axis2_status_t (AXIS2_CALL *
00107 set_value_constraint) (
00108 void *property,
00109 const axis2_env_t *env,
00110 void *type_def);
00111
00112 axis2_status_t (AXIS2_CALL *
00113 set_types) (
00114 void *property,
00115 const axis2_env_t *env,
00116 void *types);
00117
00118 };
00119
00120 union woden_property_base
00121 {
00122 woden_documentable_t documentable;
00123 woden_property_element_t property_element;
00124 woden_nested_component_t nested_component;
00125 };
00126
00127 struct woden_property
00128 {
00129 woden_property_base_t base;
00130 woden_property_ops_t *ops;
00131 };
00132
00133 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00134 woden_property_create(
00135 const axis2_env_t *env);
00136
00137
00138
00139 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00140 woden_property_to_property_element(
00141 void *property,
00142 const axis2_env_t *env);
00143
00144 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00145 woden_property_to_nested_element(
00146 void *property,
00147 const axis2_env_t *env);
00148
00149 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00150 woden_property_to_documentable_element(
00151 void *property,
00152 const axis2_env_t *env);
00153
00154 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00155 woden_property_to_documentable(
00156 void *property,
00157 const axis2_env_t *env);
00158
00159 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00160 woden_property_to_wsdl_obj(
00161 void *property,
00162 const axis2_env_t *env);
00163
00164 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00165 woden_property_to_nested_component(
00166 void *property,
00167 const axis2_env_t *env);
00168
00169 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00170 woden_property_to_wsdl_component(
00171 void *property,
00172 const axis2_env_t *env);
00173
00174 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00175 woden_property_to_element_extensible(
00176 void *property,
00177 const axis2_env_t *env);
00178
00179 AXIS2_EXTERN woden_property_t * AXIS2_CALL
00180 woden_property_to_attr_extensible(
00181 void *property,
00182 const axis2_env_t *env);
00183
00184
00185 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00186 woden_property_resolve_methods(
00187 woden_property_t *property,
00188 const axis2_env_t *env,
00189 woden_property_t *property_impl,
00190 axis2_hash_t *methods);
00191
00192
00193 #define WODEN_PROPERTY_FREE(property, env) \
00194 (((woden_property_t *) property)->ops->free(property, env))
00195
00196 #define WODEN_PROPERTY_SUPER_OBJS(property, env) \
00197 (((woden_property_t *) property)->ops->super_objs(property, env))
00198
00199 #define WODEN_PROPERTY_TYPE(property, env) \
00200 (((woden_property_t *) property)->ops->type(property, env))
00201
00202 #define WODEN_PROPERTY_GET_BASE_IMPL(property, env) \
00203 (((woden_property_t *) property)->ops->get_base_impl(property, env))
00204
00205 #define WODEN_PROPERTY_GET_REF(property, env) \
00206 (((woden_property_t *) property)->\
00207 get_ref(property, env))
00208
00209 #define WODEN_PROPERTY_GET_VALUE_CONSTRAINT(property, env) \
00210 (((woden_property_t *) property)->\
00211 get_value_constraint(property, env))
00212
00213 #define WODEN_PROPERTY_GET_VALUE(property, env) \
00214 (((woden_property_t *) property)->\
00215 get_value(property, env))
00216
00217 #define WODEN_PROPERTY_GET_PARENT(property, env) \
00218 (((woden_property_t *) property)->ops->\
00219 get_parent(property, env))
00220
00221 #define WODEN_PROPERTY_TO_ELEMENT(property, env) \
00222 (((woden_property_t *) property)->ops->\
00223 to_element(property, env))
00224
00225 #define WODEN_PROPERTY_SET_VALUE_CONSTRAINT(property, env, type_def) \
00226 (((woden_property_t *) property)->ops->\
00227 set_value_constraint(property, env, type_def))
00228
00229 #define WODEN_PROPERTY_SET_TYPES(property, env, types) \
00230 (((woden_property_t *) property)->ops->\
00231 set_types(property, env, types))
00232
00234 #ifdef __cplusplus
00235 }
00236 #endif
00237 #endif