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