00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef XML_SCHEMA_ANNOTATED_H
00018 #define XML_SCHEMA_ANNOTATED_H
00019
00035 #include <xml_schema_defines.h>
00036 #include <xml_schema_obj.h>
00037
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042
00044 typedef struct xml_schema_annotated xml_schema_annotated_t;
00045
00047 typedef struct xml_schema_annotated_ops xml_schema_annotated_ops_t;
00048
00052 struct xml_schema_annotated_ops
00053 {
00060 axis2_status_t (AXIS2_CALL *
00061 free)(void *annotated,
00062 const axis2_env_t *env);
00063
00070 axis2_hash_t *(AXIS2_CALL *
00071 super_objs)(
00072 void *annotated,
00073 const axis2_env_t *env);
00074
00082 xml_schema_types_t (AXIS2_CALL *
00083 get_type)(
00084 void *annotated,
00085 const axis2_env_t *env);
00092 xml_schema_obj_t *(AXIS2_CALL *
00093 get_base_impl)(
00094 void *annotated,
00095 const axis2_env_t *env);
00096
00103 axis2_char_t *(AXIS2_CALL *
00104 get_id) (void *annotated,
00105 const axis2_env_t *env);
00106
00107
00115 axis2_status_t (AXIS2_CALL *
00116 set_id) (
00117 void *annotated,
00118 const axis2_env_t *env,
00119 axis2_char_t *id);
00120
00127 struct xml_schema_annotation *(AXIS2_CALL *
00128 get_annotation) (
00129 void *annotated,
00130 const axis2_env_t *env);
00138 axis2_status_t (AXIS2_CALL *
00139 set_annotation)(
00140 void *annotated,
00141 const axis2_env_t *env,
00142 struct xml_schema_annotation *annotation);
00143
00152 axis2_array_list_t *(AXIS2_CALL *
00153 get_unhandled_attrs) (
00154 void *annotated,
00155 const axis2_env_t *env);
00163 axis2_status_t (AXIS2_CALL *
00164 set_unhandled_attrs) (
00165 void *annotated,
00166 const axis2_env_t *env,
00167 axis2_array_list_t *unhandled_attrs);
00168 };
00169
00174 struct xml_schema_annotated
00175 {
00176 xml_schema_obj_t base;
00177 xml_schema_annotated_ops_t *ops;
00178 };
00179
00185 AXIS2_EXTERN xml_schema_annotated_t * AXIS2_CALL
00186 xml_schema_annotated_create(const axis2_env_t *env);
00187
00191 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00192 xml_schema_annotated_resolve_methods(
00193 xml_schema_annotated_t *annotated,
00194 const axis2_env_t *env,
00195 xml_schema_annotated_t *annotated_impl,
00196 XML_SCHEMA_SUPER_OBJS_FN super_objs,
00197 XML_SCHEMA_GET_TYPE_FN get_type,
00198 XML_SCHEMA_FREE_FN free_fn);
00199
00202 #define XML_SCHEMA_ANNOTATED_FREE(annotated, env) \
00203 (((xml_schema_annotated_t *) annotated)->ops->free(\
00204 annotated, env))
00205
00208 #define XML_SCHEMA_ANNOTATED_SUPER_OBJS(annotated, env) \
00209 (((xml_schema_annotated_t *) annotated)->ops->super_objs(\
00210 annotated, env))
00211
00214 #define XML_SCHEMA_ANNOTATED_GET_TYPE(annotated, env) \
00215 (((xml_schema_annotated_t *) annotated)->ops->get_type(\
00216 annotated, env))
00217
00220 #define XML_SCHEMA_ANNOTATED_GET_BASE_IMPL(annotated, env) \
00221 (((xml_schema_annotated_t *) annotated)->ops->get_base_impl(\
00222 annotated, env))
00223
00226 #define XML_SCHEMA_ANNOTATED_GET_ID(annotated, env) \
00227 (((xml_schema_annotated_t *) annotated)->ops->get_id(\
00228 annotated, env))
00229
00232 #define XML_SCHEMA_ANNOTATED_SET_ID(annotated, env, id) \
00233 (((xml_schema_annotated_t *) annotated)->ops->set_id(\
00234 annotated, env, id))
00235
00238 #define XML_SCHEMA_ANNOTATED_GET_ANNOTATION(annotated, env) \
00239 (((xml_schema_annotated_t *) annotated)->ops->get_annotation(\
00240 annotated, env))
00241
00243 #define XML_SCHEMA_ANNOTATED_SET_ANNOTATION(annotated, env, \
00244 annotation) \
00245 (((xml_schema_annotated_t *) annotated)->ops->set_annotation(\
00246 annotated, env, annotation))
00247
00250 #define XML_SCHEMA_ANNOTATED_GET_UNHANDLED_ATTRS(annotated, env) \
00251 (((xml_schema_annotated_t *) annotated)->ops->get_unhandled_attrs(\
00252 annotated, env))
00253
00256 #define XML_SCHEMA_ANNOTATED_SET_UNHANDLED_ATTRS(annotated, \
00257 env, unhandled_attrs) \
00258 (((xml_schema_annotated_t *) annotated)->ops->set_unhandled_attrs(\
00259 annotated, env, unhandled_attrs))
00260
00262 #ifdef __cplusplus
00263 }
00264 #endif
00265 #endif