00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XML_SCHEMA_ELEMENT_H
00019 #define XML_SCHEMA_ELEMENT_H
00020
00028 #include <xml_schema_particle.h>
00029 #include <axis2_qname.h>
00030
00036 typedef struct xml_schema_element xml_schema_element_t;
00037 typedef struct xml_schema_element_ops xml_schema_element_ops_t;
00038 struct xml_schema;
00039 struct xml_schema_type_receiver;
00040 struct xml_schema_obj_collection;
00041 struct xml_schema_derivation_method;
00042 struct xml_schema_form;
00043 struct xml_schema_type;
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00050 struct xml_schema_element_ops
00051 {
00052 axis2_status_t (AXIS2_CALL *
00053 free) (void *element,
00054 const axis2_env_t *env);
00055
00056 xml_schema_particle_t *(AXIS2_CALL *
00057 get_base_impl) (
00058 void *element,
00059 const axis2_env_t *env);
00060
00061 xml_schema_types_t (AXIS2_CALL *
00062 get_type)(void *element,
00063 const axis2_env_t *env);
00064
00065 axis2_hash_t* (AXIS2_CALL *
00066 super_objs)(void *element,
00067 const axis2_env_t *env);
00068
00069 struct xml_schema_obj_collection *(AXIS2_CALL *
00070 get_constraints)(
00071 void *element,
00072 const axis2_env_t *env);
00073
00074 axis2_char_t *(AXIS2_CALL *
00075 get_default_value)(
00076 void *element,
00077 const axis2_env_t *env);
00078
00079 axis2_status_t (AXIS2_CALL *
00080 set_default_value)(
00081 void *element,
00082 const axis2_env_t *env,
00083 axis2_char_t *default_value);
00084
00085 struct xml_schema_derivation_method *(AXIS2_CALL *
00086 get_block)(
00087 void *element,
00088 const axis2_env_t *env);
00089
00090 axis2_status_t (AXIS2_CALL *
00091 set_block)(
00092 void *element,
00093 const axis2_env_t *env,
00094 struct xml_schema_derivation_method * block);
00095
00096
00097 struct xml_schema_derivation_method *(AXIS2_CALL *
00098 get_final) (void *element,
00099 const axis2_env_t *env);
00100
00101 axis2_status_t (AXIS2_CALL *
00102 set_final)(void *element,
00103 const axis2_env_t *env,
00104 struct xml_schema_derivation_method *final_derivation);
00105
00106 struct xml_schema_derivation_method *(AXIS2_CALL *
00107 get_block_resolved)(
00108 void *element,
00109 const axis2_env_t *env);
00110
00111 axis2_char_t *(AXIS2_CALL *
00112 get_fixed_value)(
00113 void *element,
00114 const axis2_env_t *env);
00115
00116 axis2_status_t (AXIS2_CALL *
00117 set_fixed_value)(
00118 void *element,
00119 const axis2_env_t *env,
00120 axis2_char_t *fixed_value);
00121
00122
00123 void *(AXIS2_CALL *
00124 get_element_type)(
00125 void *element,
00126 const axis2_env_t *env);
00127
00128
00129 struct xml_schema_form *(AXIS2_CALL *
00130 get_form)(void *element,
00131 const axis2_env_t *env);
00132
00133 axis2_status_t (AXIS2_CALL *
00134 set_form)(void *element,
00135 const axis2_env_t *env,
00136 struct xml_schema_form *form);
00137
00138 axis2_bool_t (AXIS2_CALL *
00139 is_abstract) (void *element,
00140 const axis2_env_t *env);
00141
00142 axis2_status_t (AXIS2_CALL *
00143 set_abstract) (
00144 void *element,
00145 const axis2_env_t *env,
00146 axis2_bool_t is_abstract);
00147
00148 axis2_bool_t (AXIS2_CALL *
00149 is_nillable)(
00150 void *element,
00151 const axis2_env_t *env);
00152
00153 axis2_status_t (AXIS2_CALL *
00154 set_nillable) (void *element,
00155 const axis2_env_t *env,
00156 axis2_bool_t is_nillable);
00157
00158 axis2_char_t *(AXIS2_CALL *
00159 get_name) (void *element,
00160 const axis2_env_t *env);
00161
00162 axis2_status_t (AXIS2_CALL *
00163 set_name)(
00164 void *element,
00165 const axis2_env_t *env,
00166 axis2_char_t *name);
00167
00168 axis2_qname_t *(AXIS2_CALL *
00169 get_ref_qname)(
00170 void *element,
00171 const axis2_env_t *env);
00172
00173 axis2_status_t (AXIS2_CALL *
00174 set_ref_qname)(
00175 void *element,
00176 const axis2_env_t *env,
00177 axis2_qname_t *ref_qname);
00178
00179 axis2_qname_t *(AXIS2_CALL *
00180 get_qname)(
00181 void *element,
00182 const axis2_env_t *env);
00183
00184 axis2_status_t (AXIS2_CALL *
00185 set_qname)(
00186 void *element,
00187 const axis2_env_t *env,
00188 axis2_qname_t *qualified_name);
00189
00190 struct xml_schema_type *(AXIS2_CALL *
00191 get_schema_type)(
00192 void *element,
00193 const axis2_env_t *env);
00194
00195 axis2_status_t (AXIS2_CALL *
00196 set_schema_type)(
00197 void *element,
00198 const axis2_env_t *env,
00199 void *schema_type);
00200
00201 axis2_qname_t *(AXIS2_CALL *
00202 get_schema_type_qname)(
00203 void *element,
00204 const axis2_env_t *env);
00205
00206 axis2_status_t (AXIS2_CALL *
00207 set_schema_type_qname)(
00208 void *element,
00209 const axis2_env_t *env,
00210 axis2_qname_t *schema_type_qname);
00211
00212 axis2_qname_t *(AXIS2_CALL *
00213 get_substitution_group)(
00214 void *element,
00215 const axis2_env_t *env);
00216
00217 axis2_status_t (AXIS2_CALL *
00218 set_substitution_group)(
00219 void *element,
00220 const axis2_env_t *env,
00221 axis2_qname_t *substitution_group);
00222
00223 axis2_char_t *(AXIS2_CALL *
00224 to_string)(
00225 void *element,
00226 const axis2_env_t *env,
00227 axis2_char_t *prefix,
00228 int tab);
00229
00230 axis2_status_t (AXIS2_CALL *
00231 set_type)(
00232 void *element,
00233 const axis2_env_t *env,
00234 struct xml_schema_type *type);
00235
00236 };
00237
00238 struct xml_schema_element
00239 {
00240 xml_schema_particle_t base;
00241 xml_schema_element_ops_t *ops;
00242 };
00243
00244 AXIS2_EXTERN xml_schema_element_t * AXIS2_CALL
00245 xml_schema_element_create(const axis2_env_t *env);
00246
00247
00248
00249 #define XML_SCHEMA_ELEMENT_FREE(element, env) \
00250 (((xml_schema_element_t *) element)->ops->free(\
00251 element, env))
00252
00253 #define XML_SCHEMA_ELEMENT_GET_BASE_IMPL(element, env) \
00254 (((xml_schema_element_t *) element)->ops->get_base_impl(\
00255 element, env))
00256
00257 #define XML_SCHEMA_ELEMENT_GET_TYPE(element, env) \
00258 (((xml_schema_element_t *) element)->ops->get_type(\
00259 element, env))
00260
00261 #define XML_SCHEMA_ELEMENT_SUPER_OBJS(element, env) \
00262 (((xml_schema_element_t *) element)->ops->super_objs(\
00263 element, env))
00264
00265 #define XML_SCHEMA_ELEMENT_GET_CONSTRAINTS(element, env) \
00266 (((xml_schema_element_t *) element)->ops->get_constraints(\
00267 element, env))
00268
00269 #define XML_SCHEMA_ELEMENT_GET_DEFAULT_VALUE(element, env) \
00270 (((xml_schema_element_t *) element)->ops->get_default_value(\
00271 element, env))
00272
00273 #define XML_SCHEMA_ELEMENT_SET_DEFAULT_VALUE(element, env, def_value) \
00274 (((xml_schema_element_t *) element)->ops->set_default_value(\
00275 element, env, def_value))
00276
00277 #define XML_SCHEMA_ELEMENT_SET_BLOCK(element, env, block) \
00278 (((xml_schema_element_t *) element)->ops->set_block(\
00279 element, env, block))
00280
00281 #define XML_SCHEMA_ELEMENT_GET_FINAL(element, env) \
00282 (((xml_schema_element_t *) element)->ops->get_final(\
00283 element, env))
00284
00285 #define XML_SCHEMA_ELEMENT_SET_FINAL(element, env, final_derivation) \
00286 (((xml_schema_element_t *) element)->ops->set_final(\
00287 element, env, final_derivation))
00288
00289 #define XML_SCHEMA_ELEMENT_GET_BLOCK_RESOLVED(element, env) \
00290 (((xml_schema_element_t *) element)->ops->get_block_resolved(\
00291 element, env))
00292
00293 #define XML_SCHEMA_ELEMENT_GET_BLOCK(element, env) \
00294 (((xml_schema_element_t *) element)->ops->get_block(\
00295 element, env))
00296
00297 #define XML_SCHEMA_ELEMENT_GET_FIXED_VALUE(element, env) \
00298 (((xml_schema_element_t *) element)->ops->get_fixed_value(\
00299 element, env))
00300
00301 #define XML_SCHEMA_ELEMENT_SET_FIXED_VALUE(element, env, fixed_value) \
00302 (((xml_schema_element_t *) element)->ops->set_fixed_value(\
00303 element, env, fixed_value))
00304
00305 #define XML_SCHEMA_ELEMENT_GET_ELEMENT_TYPE(element, env) \
00306 (((xml_schema_element_t *) element)->ops->get_element_type(\
00307 element, env))
00308
00309 #define XML_SCHEMA_ELEMENT_GET_FORM(element, env) \
00310 (((xml_schema_element_t *) element)->ops->get_form(\
00311 element, env))
00312
00313 #define XML_SCHEMA_ELEMENT_SET_FORM(element, env, form) \
00314 (((xml_schema_element_t *) element)->ops->set_form(\
00315 element, env, form))
00316
00317
00318 #define XML_SCHEMA_ELEMENT_IS_ABSTRACT(element, env) \
00319 (((xml_schema_element_t *) element)->ops->is_abstract(\
00320 element, env))
00321
00322 #define XML_SCHEMA_ELEMENT_SET_ABSTRACT(element, env, is_abstract) \
00323 (((xml_schema_element_t *) element)->ops->set_abstract(\
00324 element, env, is_abstract))
00325
00326
00327 #define XML_SCHEMA_ELEMENT_IS_NILLABLE(element, env) \
00328 (((xml_schema_element_t *) element)->ops->is_nillable(\
00329 element, env))
00330
00331 #define XML_SCHEMA_ELEMENT_SET_NILLABLE(element, env, is_nillable) \
00332 (((xml_schema_element_t *) element)->ops->set_nillable(\
00333 element, env, is_nillable))
00334
00335 #define XML_SCHEMA_ELEMENT_GET_NAME(element, env) \
00336 (((xml_schema_element_t *) element)->ops->get_name(\
00337 element, env))
00338
00339 #define XML_SCHEMA_ELEMENT_SET_NAME(element, env, name) \
00340 (((xml_schema_element_t *) element)->ops->set_name(\
00341 element, env, name))
00342
00343
00344 #define XML_SCHEMA_ELEMENT_GET_REF_NAME(element, env) \
00345 (((xml_schema_element_t *) element)->ops->get_ref_qname(\
00346 element, env))
00347
00348 #define XML_SCHEMA_ELEMENT_SET_REF_NAME(element, env, ref_name) \
00349 (((xml_schema_element_t *) element)->ops->set_ref_qname(\
00350 element, env, ref_name))
00351
00352 #define XML_SCHEMA_ELEMENT_GET_QNAME(element, env) \
00353 (((xml_schema_element_t *) element)->ops->get_qname(\
00354 element, env))
00355
00356 #define XML_SCHEMA_ELEMENT_SET_QNAME(element, env, qualified_name) \
00357 (((xml_schema_element_t *) element)->ops->set_qname(\
00358 element, env, qualified_name))
00359
00360 #define XML_SCHEMA_ELEMENT_GET_SCHEMA_TYPE(element, env) \
00361 (((xml_schema_element_t *) element)->ops->get_schema_type(\
00362 element, env))
00363
00364 #define XML_SCHEMA_ELEMENT_SET_SCHEMA_TYPE(element, env, schema_type) \
00365 (((xml_schema_element_t *) element)->ops->set_schema_type(\
00366 element, env, schema_type))
00367
00368 #define XML_SCHEMA_ELEMENT_GET_SCHEMA_TYPE_QNAME(element, env) \
00369 (((xml_schema_element_t *) element)->ops->get_schema_type_qname(\
00370 element, env))
00371
00372 #define XML_SCHEMA_ELEMENT_SET_SCHEMA_TYPE_QNAME(element, env, schema_type_name) \
00373 (((xml_schema_element_t *) element)->ops->set_schema_type_qname(\
00374 element, env, schema_type_name))
00375
00376 #define XML_SCHEMA_ELEMENT_GET_SUBSTITUTION_GROUP(element, env) \
00377 (((xml_schema_element_t *) element)->ops->get_substitution_group(\
00378 element, env))
00379
00380 #define XML_SCHEMA_ELEMENT_SET_SUBSTITUTION_GROUP(element, env, sub_group) \
00381 (((xml_schema_element_t *) element)->ops->set_substitution_group(\
00382 element, env, sub_group))
00383
00384 #ifdef __cplusplus
00385 }
00386 #endif
00387 #endif