00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef XML_SCHEMA_COMPLEX_TYPE_H
00018 #define XML_SCHEMA_COMPLEX_TYPE_H
00019
00026 #include <xml_schema_annotated.h>
00027 #include <xml_schema_type.h>
00028 #include <axis2_hash.h>
00029 #include <axis2_qname.h>
00030 #include <xml_schema_complex_type.h>
00031 #include <xml_schema_any_attribute.h>
00032 #include <xml_schema_obj_collection.h>
00033 #include <xml_schema_obj_table.h>
00034 #include <xml_schema_derivation_method.h>
00035 #include <xml_schema_content_type.h>
00036
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041
00047 typedef struct xml_schema_complex_type
00048 xml_schema_complex_type_t;
00049 typedef struct xml_schema_complex_type_ops
00050 xml_schema_complex_type_ops_t;
00051
00052 struct xml_schema_complex_type_ops
00053 {
00058 axis2_status_t (AXIS2_CALL *
00059 free) (void *cmp_type,
00060 const axis2_env_t *env);
00061
00062 xml_schema_type_t *(AXIS2_CALL *
00063 get_base_impl)(
00064 void *cmp_type,
00065 const axis2_env_t *env);
00066
00067 axis2_hash_t *(AXIS2_CALL *
00068 super_objs)(
00069 void *cmp_type,
00070 const axis2_env_t *env);
00071
00072 xml_schema_types_t (AXIS2_CALL *
00073 get_type)(
00074 void *cmp_type,
00075 const axis2_env_t *env);
00076
00077 xml_schema_any_attribute_t* (AXIS2_CALL *
00078 get_any_attribute)(
00079 void *cmp_type,
00080 const axis2_env_t *env);
00081
00082 axis2_status_t (AXIS2_CALL *
00083 set_any_attribute)(
00084 void *cmp_type,
00085 const axis2_env_t *env,
00086 xml_schema_any_attribute_t *any_attr);
00087
00088 xml_schema_obj_collection_t* (AXIS2_CALL *
00089 get_attributes)(
00090 void *cmp_type,
00091 const axis2_env_t *env);
00092
00093 xml_schema_obj_table_t* (AXIS2_CALL *
00094 get_attribute_use)(
00095 void *cmp_type,
00096 const axis2_env_t *env);
00097
00098 xml_schema_any_attribute_t* (AXIS2_CALL *
00099 get_attribute_wildcard)(
00100 void *cmp_type,
00101 const axis2_env_t *env);
00102
00103 xml_schema_derivation_method_t* (AXIS2_CALL *
00104 get_block)(
00105 void *cmp_type,
00106 const axis2_env_t *env);
00107
00108 axis2_status_t (AXIS2_CALL *
00109 set_block)(
00110 void *cmp_type,
00111 const axis2_env_t *env,
00112 xml_schema_derivation_method_t *block);
00113
00114 xml_schema_derivation_method_t* (AXIS2_CALL *
00115 get_block_resolved)(
00116 void *cmp_type,
00117 const axis2_env_t *env);
00118
00119 void* (AXIS2_CALL *
00120 get_content_model)(
00121 void *cmp_type,
00122 const axis2_env_t *env);
00123
00124 axis2_status_t (AXIS2_CALL *
00125 set_content_model)(
00126 void *cmp_type,
00127 const axis2_env_t *env,
00128 void *content_model);
00129
00130 xml_schema_content_type_t* (AXIS2_CALL *
00131 get_content_type)(
00132 void *cmp_type,
00133 const axis2_env_t *env);
00134
00135 axis2_status_t (AXIS2_CALL *
00136 set_content_type)(
00137 void *cmp_type,
00138 const axis2_env_t *env,
00139 xml_schema_content_type_t *content_type);
00140
00141 xml_schema_particle_t * (AXIS2_CALL *
00142 get_content_type_particle)(
00143 void *cmp_type,
00144 const axis2_env_t *env);
00145
00146 axis2_bool_t (AXIS2_CALL *
00147 is_abstract)(
00148 void *cmp_type,
00149 const axis2_env_t *env);
00150
00151 axis2_status_t (AXIS2_CALL *
00152 set_abstract)(
00153 void *cmp_type,
00154 const axis2_env_t *env,
00155 axis2_bool_t b);
00156
00157 axis2_bool_t (AXIS2_CALL*
00158 is_mixed)(
00159 void *cmp_type,
00160 const axis2_env_t *env);
00161
00162 axis2_status_t (AXIS2_CALL *
00163 set_mixed)(
00164 void *cmp_type,
00165 const axis2_env_t *env,
00166 axis2_bool_t b);
00167
00168 void* (AXIS2_CALL *
00169 get_particle)(
00170 void *cmp_type,
00171 const axis2_env_t *env);
00172
00173 axis2_status_t (AXIS2_CALL *
00174 set_particle)(
00175 void *cmp_type,
00176 const axis2_env_t *env,
00177 void *particle);
00178
00179
00180
00181 axis2_char_t* (AXIS2_CALL*
00182 to_string)(
00183 void *cmp_type,
00184 const axis2_env_t *env,
00185 axis2_char_t *prefix,
00186 int tab);
00187
00188 };
00189
00190 struct xml_schema_complex_type
00191 {
00192 xml_schema_type_t base;
00193 xml_schema_complex_type_ops_t *ops;
00194 };
00195
00204 AXIS2_EXTERN xml_schema_complex_type_t * AXIS2_CALL
00205 xml_schema_complex_type_create(const axis2_env_t *env,
00206 struct xml_schema *schema);
00207
00208
00209
00210 #define XML_SCHEMA_COMPLEX_TYPE_FREE(complex_type, env) \
00211 (((xml_schema_complex_type_t *) complex_type)->ops->\
00212 free(complex_type, env))
00213
00214 #define XML_SCHEMA_COMPLEX_TYPE_GET_BASE_IMPL(complex_type, env) \
00215 (((xml_schema_complex_type_t *) complex_type)->ops->\
00216 get_base_impl(complex_type, env))
00217
00218 #define XML_SCHEMA_COMPLEX_TYPE_GET_TYPE(complex_type, env) \
00219 (((xml_schema_complex_type_t *) complex_type)->ops->\
00220 get_type(complex_type, env))
00221
00222 #define XML_SCHEMA_COMPLEX_TYPE_SUPER_OBJS(complex_type, env) \
00223 (((xml_schema_complex_type_t *) complex_type)->ops->\
00224 super_objs(complex_type, env))
00225
00226 #define XML_SCHEMA_COMPLEX_TYPE_GET_ANY_ATTRIBUTE(complex_type, env) \
00227 (((xml_schema_complex_type_t *) complex_type)->ops->\
00228 get_any_attribute(complex_type, env))
00229
00230 #define XML_SCHEMA_COMPLEX_TYPE_SET_ANY_ATTRIBUTE(complex_type, env, any_attr) \
00231 (((xml_schema_complex_type_t *) complex_type)->ops->\
00232 set_any_attribute(complex_type, env, any_attr))
00233
00234 #define XML_SCHEMA_COMPLEX_TYPE_GET_ATTRIBUTES(complex_type, env) \
00235 (((xml_schema_complex_type_t *) complex_type)->ops->\
00236 get_attributes(complex_type, env))
00237
00238 #define XML_SCHEMA_COMPLEX_TYPE_GET_ATTRIBUTE_USE(complex_type, env) \
00239 (((xml_schema_complex_type_t *) complex_type)->ops->\
00240 get_attribute_use(complex_type, env))
00241
00242 #define XML_SCHEMA_COMPLEX_TYPE_GET_ATTRIBUTE_WILDCARD(complex_type, env) \
00243 (((xml_schema_complex_type_t *) complex_type)->ops->\
00244 get_attribute_wildcard(complex_type, env))
00245
00246 #define XML_SCHEMA_COMPLEX_TYPE_GET_BLOCK(complex_type, env) \
00247 (((xml_schema_complex_type_t *) complex_type)->ops->\
00248 get_block(complex_type, env))
00249
00250 #define XML_SCHEMA_COMPLEX_TYPE_SET_BLOCK(complex_type, env, block) \
00251 (((xml_schema_complex_type_t *) complex_type)->ops->\
00252 set_block(complex_type, env, block))
00253
00254 #define XML_SCHEMA_COMPLEX_TYPE_GET_BLOCK_RESOLVED(complex_type, env) \
00255 (((xml_schema_complex_type_t *) complex_type)->ops->\
00256 get_block_resolved(complex_type, env))
00257
00258 #define XML_SCHEMA_COMPLEX_TYPE_GET_CONTENT_MODEL(complex_type, env) \
00259 (((xml_schema_complex_type_t *) complex_type)->ops->\
00260 get_content_model(complex_type, env))
00261
00262 #define XML_SCHEMA_COMPLEX_TYPE_SET_CONTENT_MODEL(complex_type, env, cnt_model) \
00263 (((xml_schema_complex_type_t *) complex_type)->ops->\
00264 set_content_model(complex_type, env, cnt_model))
00265
00266 #define XML_SCHEMA_COMPLEX_TYPE_GET_CONTENT_TYPE(complex_type, env) \
00267 (((xml_schema_complex_type_t *) complex_type)->ops->\
00268 get_content_type(complex_type, env))
00269
00270 #define XML_SCHEMA_COMPLEX_TYPE_SET_CONTENT_TYPE(complex_type, env, cnt_type) \
00271 (((xml_schema_complex_type_t *) complex_type)->ops->\
00272 set_content_type(complex_type, env, cnt_type))
00273
00274 #define XML_SCHEMA_COMPLEX_TYPE_GET_CONTENT_TYPE_PARTICLE(complex_type, env) \
00275 (((xml_schema_complex_type_t *) complex_type)->ops->\
00276 get_content_type_particle(complex_type, env))
00277
00278 #define XML_SCHEMA_COMPLEX_TYPE_IS_ABSTRACT(complex_type, env) \
00279 (((xml_schema_complex_type_t *) complex_type)->ops->\
00280 is_abstract(complex_type, env))
00281
00282 #define XML_SCHEMA_COMPLEX_TYPE_SET_ABSTRACT(complex_type, env, b) \
00283 (((xml_schema_complex_type_t *) complex_type)->ops->\
00284 set_abstract(complex_type, env, b))
00285
00286 #define XML_SCHEMA_COMPLEX_TYPE_IS_MIXED(complex_type, env) \
00287 (((xml_schema_complex_type_t *) complex_type)->ops->\
00288 is_mixed(complex_type, env))
00289
00290 #define XML_SCHEMA_COMPLEX_TYPE_SET_MIXED(complex_type, env, b) \
00291 (((xml_schema_complex_type_t *) complex_type)->ops->\
00292 set_mixed(complex_type, env, b))
00293
00294 #define XML_SCHEMA_COMPLEX_TYPE_GET_PARTICLE(complex_type, env) \
00295 (((xml_schema_complex_type_t *) complex_type)->ops->\
00296 get_particle(complex_type, env))
00297
00298 #define XML_SCHEMA_COMPLEX_TYPE_SET_PARTICLE(complex_type, env, particle) \
00299 (((xml_schema_complex_type_t *)complex_type)->ops->\
00300 set_particle(complex_type, env, particle))
00301
00302 #define XML_SCHEMA_COMPLEX_TYPE_TO_STRING(complex_type, env, prefix, tab) \
00303 (((xml_schema_complex_type_t *) complex_type)->ops->\
00304 to_string(complex_type, env, prefix, tab))
00305
00306
00307
00309 #ifdef __cplusplus
00310 }
00311 #endif
00312 #endif