00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XML_SCHEMA_ANNOTATED_H
00019 #define XML_SCHEMA_ANNOTATED_H
00020
00036 #include <xml_schema_defines.h>
00037 #include <xml_schema_obj.h>
00038
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043
00045 typedef struct xml_schema_annotated xml_schema_annotated_t;
00046
00048 typedef struct xml_schema_annotated_ops xml_schema_annotated_ops_t;
00049
00053 struct xml_schema_annotated_ops
00054 {
00061 axis2_status_t (AXIS2_CALL *
00062 free)(void *annotated,
00063 const axis2_env_t *env);
00064
00071 axis2_hash_t *(AXIS2_CALL *
00072 super_objs)(
00073 void *annotated,
00074 const axis2_env_t *env);
00075
00083 xml_schema_types_t (AXIS2_CALL *
00084 get_type)(
00085 void *annotated,
00086 const axis2_env_t *env);
00093 xml_schema_obj_t *(AXIS2_CALL *
00094 get_base_impl)(
00095 void *annotated,
00096 const axis2_env_t *env);
00097
00104 axis2_char_t *(AXIS2_CALL *
00105 get_id) (void *annotated,
00106 const axis2_env_t *env);
00107
00108
00116 axis2_status_t (AXIS2_CALL *
00117 set_id) (
00118 void *annotated,
00119 const axis2_env_t *env,
00120 axis2_char_t *id);
00121
00128 struct xml_schema_annotation *(AXIS2_CALL *
00129 get_annotation) (
00130 void *annotated,
00131 const axis2_env_t *env);
00139 axis2_status_t (AXIS2_CALL *
00140 set_annotation)(
00141 void *annotated,
00142 const axis2_env_t *env,
00143 struct xml_schema_annotation *annotation);
00144
00153 axis2_array_list_t *(AXIS2_CALL *
00154 get_unhandled_attrs) (
00155 void *annotated,
00156 const axis2_env_t *env);
00164 axis2_status_t (AXIS2_CALL *
00165 set_unhandled_attrs) (
00166 void *annotated,
00167 const axis2_env_t *env,
00168 axis2_array_list_t *unhandled_attrs);
00169 };
00170
00175 struct xml_schema_annotated
00176 {
00177 xml_schema_obj_t base;
00178 xml_schema_annotated_ops_t *ops;
00179 };
00180
00186 AXIS2_EXTERN xml_schema_annotated_t * AXIS2_CALL
00187 xml_schema_annotated_create(const axis2_env_t *env);
00188
00192 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00193 xml_schema_annotated_resolve_methods(
00194 xml_schema_annotated_t *annotated,
00195 const axis2_env_t *env,
00196 xml_schema_annotated_t *annotated_impl,
00197 XML_SCHEMA_SUPER_OBJS_FN super_objs,
00198 XML_SCHEMA_GET_TYPE_FN get_type,
00199 XML_SCHEMA_FREE_FN free_fn);
00200
00203 #define XML_SCHEMA_ANNOTATED_FREE(annotated, env) \
00204 (((xml_schema_annotated_t *) annotated)->ops->free(\
00205 annotated, env))
00206
00209 #define XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env) \
00210 (((xml_schema_annotated_t *) annotated)->ops->super_objs(\
00211 annotated, env))
00212
00215 #define XML_SCHEMA_ANNOTATED_GET_TYPE(annotated, env) \
00216 (((xml_schema_annotated_t *) annotated)->ops->get_type(\
00217 annotated, env))
00218
00221 #define XML_SCHEMA_ANNOTATED_GET_BASE_IMPL(annotated, env) \
00222 (((xml_schema_annotated_t *) annotated)->ops->get_base_impl(\
00223 annotated, env))
00224
00227 #define XML_SCHEMA_ANNOTATED_GET_ID(annotated, env) \
00228 (((xml_schema_annotated_t *) annotated)->ops->get_id(\
00229 annotated, env))
00230
00233 #define XML_SCHEMA_ANNOTATED_SET_ID(annotated, env, id) \
00234 (((xml_schema_annotated_t *) annotated)->ops->set_id(\
00235 annotated, env, id))
00236
00239 #define XML_SCHEMA_ANNOTATED_GET_ANNOTATION(annotated, env) \
00240 (((xml_schema_annotated_t *) annotated)->ops->get_annotation(\
00241 annotated, env))
00242
00244 #define XML_SCHEMA_ANNOTATED_SET_ANNOTATION(annotated, env, \
00245 annotation) \
00246 (((xml_schema_annotated_t *) annotated)->ops->set_annotation(\
00247 annotated, env, annotation))
00248
00251 #define XML_SCHEMA_ANNOTATED_GET_UNHANDLED_ATTRS(annotated, env) \
00252 (((xml_schema_annotated_t *) annotated)->ops->get_unhandled_attrs(\
00253 annotated, env))
00254
00257 #define XML_SCHEMA_ANNOTATED_SET_UNHANDLED_ATTRS(annotated, \
00258 env, unhandled_attrs) \
00259 (((xml_schema_annotated_t *) annotated)->ops->set_unhandled_attrs(\
00260 annotated, env, unhandled_attrs))
00261
00263 #ifdef __cplusplus
00264 }
00265 #endif
00266 #endif