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