00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef WODEN_TYPE_DEF_H
00018 #define WODEN_TYPE_DEF_H
00019
00031 #include <woden.h>
00032 #include <axis2_hash.h>
00033 #include <axis2_qname.h>
00034 #include <axis2_uri.h>
00035
00041 typedef union woden_type_def_base woden_type_def_base_t;
00042 typedef struct woden_type_def woden_type_def_t;
00043 typedef struct woden_type_def_ops woden_type_def_ops_t;
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00050 struct woden_type_def_ops
00051 {
00056 axis2_status_t (AXIS2_CALL *
00057 free) (void *type_def,
00058 const axis2_env_t *env);
00059
00060 axis2_hash_t *(AXIS2_CALL *
00061 super_objs) (void *type_def,
00062 const axis2_env_t *env);
00063
00064 woden_obj_types_t (AXIS2_CALL *
00065 type) (void *type_def,
00066 const axis2_env_t *env);
00070 void *(AXIS2_CALL *
00071 get_base_impl) (
00072 void *type_def,
00073 const axis2_env_t *env);
00074
00075 axis2_status_t (AXIS2_CALL *
00076 set_qname) (
00077 void *type_def,
00078 const axis2_env_t *env,
00079 axis2_qname_t *qname);
00080
00081 axis2_qname_t *(AXIS2_CALL *
00082 get_qname) (
00083 void *type_def,
00084 const axis2_env_t *env);
00085
00086 axis2_status_t (AXIS2_CALL *
00087 set_system) (
00088 void *type_def,
00089 const axis2_env_t *env,
00090 axis2_uri_t *type_system_uri);
00091
00092 axis2_uri_t *(AXIS2_CALL *
00093 get_system) (
00094 void *type_def,
00095 const axis2_env_t *env);
00096
00097 axis2_status_t (AXIS2_CALL *
00098 set_content_model) (
00099 void *type_def,
00100 const axis2_env_t *env,
00101 axis2_char_t *content_model);
00102
00103 axis2_char_t *(AXIS2_CALL *
00104 get_content_model) (
00105 void *type_def,
00106 const axis2_env_t *env);
00107
00108
00109 axis2_status_t (AXIS2_CALL *
00110 set_content) (
00111 void *type_def,
00112 const axis2_env_t *env,
00113 void *type_def_content);
00114
00115 void *(AXIS2_CALL *
00116 get_content) (
00117 void *type_def,
00118 const axis2_env_t *env);
00119
00120 };
00121
00122 struct woden_type_def
00123 {
00124 woden_type_def_ops_t *ops;
00125 };
00126
00127 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00128 woden_type_def_create(
00129 const axis2_env_t *env);
00130
00131
00132 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00133 woden_type_def_to_type_def_element(
00134 void *type_def,
00135 const axis2_env_t *env);
00136
00137 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00138 woden_type_def_to_attr_extensible(
00139 void *type_def,
00140 const axis2_env_t *env);
00141
00142 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00143 woden_type_def_to_element_extensible(
00144 void *type_def,
00145 const axis2_env_t *env);
00146
00147 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00148 woden_type_def_resolve_methods(
00149 woden_type_def_t *type_def,
00150 const axis2_env_t *env,
00151 woden_type_def_t *type_def_impl,
00152 axis2_hash_t *methods);
00153
00154
00155
00156 #define WODEN_TYPE_DEF_FREE(type_def, env) \
00157 (((woden_type_def_t *) type_def)->ops->free(type_def, env))
00158
00159 #define WODEN_TYPE_DEF_SUPER_OBJS(type_def, env) \
00160 (((woden_type_def_t *) type_def)->ops->\
00161 super_objs(type_def, env))
00162
00163 #define WODEN_TYPE_DEF_TYPE(type_def, env) \
00164 (((woden_type_def_t *) type_def)->ops->type(type_def, env))
00165
00166 #define WODEN_TYPE_DEF_GET_BASE_IMPL(type_def, env) \
00167 (((woden_type_def_t *) type_def)->ops->\
00168 get_base_impl(type_def, env))
00169
00170 #define WODEN_TYPE_DEF_SET_QNAME(type_def, env, qname) \
00171 (((woden_type_def_t *) type_def)->ops->\
00172 set_qname(type_def, env, qname))
00173
00174 #define WODEN_TYPE_DEF_GET_QNAME(type_def, env) \
00175 (((woden_type_def_t *) type_def)->ops->\
00176 get_qname(type_def, env))
00177
00178 #define WODEN_TYPE_DEF_SET_SYSTEM(type_def, env, type_system_uri) \
00179 (((woden_type_def_t *) type_def)->ops->\
00180 set_system(type_def, env, type_system_uri))
00181
00182 #define WODEN_TYPE_DEF_GET_SYSTEM(type_def, env) \
00183 (((woden_type_def_t *) type_def)->ops->\
00184 get_system(type_def, env))
00185
00186 #define WODEN_TYPE_DEF_SET_CONTENT_MODEL(type_def, env, content_model) \
00187 (((woden_type_def_t *) type_def)->ops->\
00188 set_content_model(type_def, env, content_model))
00189
00190 #define WODEN_TYPE_DEF_GET_CONTENT_MODEL(type_def, env) \
00191 (((woden_type_def_t *) type_def)->ops->\
00192 get_content_model(type_def, env))
00193
00194 #define WODEN_TYPE_DEF_SET_CONTENT(type_def, env, type_def_content) \
00195 (((woden_type_def_t *) type_def)->ops->\
00196 set_content(type_def, env, type_def_content))
00197
00198 #define WODEN_TYPE_DEF_GET_CONTENT(type_def, env) \
00199 (((woden_type_def_t *) type_def)->ops->\
00200 get_content(type_def, env))
00201
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 #endif