xml_schema_element.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
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 /************ macros **********************************************************/
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 /* XML_SCHEMA_ELEMENT_H */

Generated on Wed Dec 20 20:14:11 2006 for Axis2/C by  doxygen 1.5.1