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