xml_schema.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef XML_SCHEMA_H
00018 #define XML_SCHEMA_H
00019 
00028 #include <xml_schema_defines.h>
00029 #include <xml_schema_annotated.h>
00030 #include <axiom_element.h>
00031 #include <axiom_node.h>
00032 #include <axis2_hash.h>
00033 
00041 #ifdef __cplusplus
00042 extern "C"
00043 {
00044 #endif
00045 
00046 typedef struct xml_schema xml_schema_t;
00047 typedef struct xml_schema_ops xml_schema_ops_t;
00048 struct xml_schema_form;
00049 struct xml_schema_obj_table;
00050 struct xml_schema_derivation_method;
00051 struct xml_schema_element;
00052 struct xml_schema_type;
00053 struct xml_schema_obj_collection;
00054 struct xml_schema_collection;
00055 
00056 #define XML_SCHEMA_NS "http://www.w3.org/2001/XMLSchema"
00057 
00058 struct xml_schema_ops
00059 {
00064     axis2_status_t (AXIS2_CALL *
00065     free)(
00066             void *schema,
00067             const axis2_env_t *env);
00068 
00069     axis2_hash_t *(AXIS2_CALL *
00070     super_objs)(
00071             void *schema,
00072             const axis2_env_t *env);
00073 
00074     xml_schema_types_t (AXIS2_CALL *
00075     get_type)(  void *schema,
00076             const axis2_env_t *env);
00077     
00078     xml_schema_annotated_t *(AXIS2_CALL *
00079     get_base_impl)(
00080             void *schema,
00081             const axis2_env_t *env);
00082 
00083     axis2_char_t *(AXIS2_CALL *
00084     get_namespace)(
00085             void *schema,
00086             const axis2_env_t *env,
00087             axis2_char_t *prefix);
00088 
00089     struct xml_schema_form *(AXIS2_CALL *
00090     get_attr_form_default)(
00091             void *schema,
00092             const axis2_env_t *env);
00093 
00094     axis2_status_t (AXIS2_CALL *
00095     set_attr_form_default)(
00096             void *schema,
00097             const axis2_env_t *env,
00098             struct xml_schema_form *value);
00099 
00100     struct xml_schema_obj_table *(AXIS2_CALL *
00101     get_attr_groups)(
00102             void *schema,
00103             const axis2_env_t *env);
00104 
00105     struct xml_schema_obj_table *(AXIS2_CALL *
00106     get_attrs)(
00107             void *schema,
00108             const axis2_env_t *env);
00109 
00110     struct xml_schema_derivation_method *(AXIS2_CALL *
00111     get_block_default)(
00112             void *schema,
00113             const axis2_env_t *env); 
00114 
00115     axis2_status_t (AXIS2_CALL *
00116     set_block_default)(
00117             void *schema,
00118             const axis2_env_t *env,
00119             struct xml_schema_derivation_method *block_default); 
00120 
00121     struct xml_schema_form *(AXIS2_CALL *
00122     get_element_form_default)(
00123             void *schema,
00124             const axis2_env_t *env); 
00125 
00126     axis2_status_t (AXIS2_CALL *
00127     set_element_form_default)(
00128             void *schema,
00129             const axis2_env_t *env,
00130             struct xml_schema_form *element_form_default); 
00131 
00132     struct xml_schema_obj_table *(AXIS2_CALL *
00133     get_elements)(
00134             void *schema,
00135             const axis2_env_t *env); 
00136 
00137     struct xml_schema_element *(AXIS2_CALL *
00138     get_element_by_qname)(
00139             void *schema,
00140             const axis2_env_t *env,
00141             const axis2_qname_t *qname); 
00142 
00143     struct xml_schema_type *(AXIS2_CALL *
00144     get_type_by_qname)(
00145             void *schema,
00146             const axis2_env_t *env,
00147             axis2_qname_t *qname); 
00148 
00149     struct xml_schema_derivation_method *(AXIS2_CALL *
00150     get_final_default)(
00151             void *schema,
00152             const axis2_env_t *env); 
00153 
00154     axis2_status_t (AXIS2_CALL *
00155     set_final_default)(
00156             void *schema,
00157             const axis2_env_t *env,
00158             struct xml_schema_derivation_method *final_default); 
00159 
00160     struct xml_schema_obj_table *(AXIS2_CALL *
00161     get_groups)(
00162             void *schema,
00163             const axis2_env_t *env); 
00164 
00165     struct xml_schema_obj_collection *(AXIS2_CALL *
00166     get_includes)(
00167             void *schema,
00168             const axis2_env_t *env); 
00169 
00170     axis2_bool_t (AXIS2_CALL *
00171     is_compiled)(
00172             void *schema,
00173             const axis2_env_t *env); 
00174 
00175     struct xml_schema_obj_collection *(AXIS2_CALL *
00176     get_items)(
00177             void *schema,
00178             const axis2_env_t *env); 
00179 
00180     struct xml_schema_obj_table *(AXIS2_CALL *
00181     get_notations)(
00182             void *schema,
00183             const axis2_env_t *env); 
00184 
00185     struct xml_schema_obj_table *(AXIS2_CALL *
00186     get_schema_types)(
00187             void *schema,
00188             const axis2_env_t *env); 
00189 
00190     axis2_char_t *(AXIS2_CALL *
00191     get_target_namespace)(
00192             void *schema,
00193             const axis2_env_t *env);
00194 
00195     axis2_status_t (AXIS2_CALL *
00196     set_target_namespace)(
00197             void *schema,
00198             const axis2_env_t *env,
00199             axis2_char_t *target_namespace); 
00200 
00201     axis2_char_t *(AXIS2_CALL *
00202     get_version)(
00203             void *schema,
00204             const axis2_env_t *env);
00205 
00206     axis2_status_t (AXIS2_CALL *
00207     compile)(void *schema,
00208              const axis2_env_t *env);
00209 
00210     axis2_status_t (AXIS2_CALL *
00211     write_with_out)(
00212             void *schema,
00213             const axis2_env_t *env,
00214             void *outstream); 
00215 
00216     axis2_status_t (AXIS2_CALL *
00217     write_with_writer)(
00218             void *schema,
00219             void *writer); 
00220 
00221     axis2_hash_t *(AXIS2_CALL *
00222     get_prefix_to_namespace_map)(
00223             void *schema,
00224             const axis2_env_t *env);
00225 
00226     axis2_status_t (AXIS2_CALL *
00227     set_prefix_to_namespace_map)(
00228             void *schema,
00229             const axis2_env_t *env,
00230             axis2_hash_t *map);
00231 
00232     axis2_status_t (AXIS2_CALL *
00233     add_type)(
00234             void *schema,
00235             const axis2_env_t *env,
00236             struct xml_schema_type *type);
00237             
00238     axis2_status_t (AXIS2_CALL *
00239     set_schema_ns_prefix)(
00240             void *schema,
00241             const axis2_env_t *env,
00242             axis2_char_t *ns_prefix);
00243             
00244     axis2_char_t* (AXIS2_CALL*
00245     serialize)(
00246             void *schema,
00247             const axis2_env_t *env);
00248             
00249     axis2_status_t (AXIS2_CALL*
00250     set_root_node)(
00251             void *schema,
00252             const axis2_env_t *env,
00253             axiom_node_t *node);            
00254             
00255 };
00256 
00257 struct xml_schema
00258 {
00259     xml_schema_annotated_t base;
00260     xml_schema_ops_t *ops;
00261 };
00262 
00266 AXIS2_EXTERN xml_schema_t * AXIS2_CALL
00267 xml_schema_create(const axis2_env_t *env,
00268                                 axis2_char_t *namespc,
00269                                 struct xml_schema_collection *parent);
00270 
00271 #define XML_SCHEMA_FREE(schema, env) \
00272       (((xml_schema_t *) schema)->ops->\
00273             free(schema, env))
00274 
00275 #define XML_SCHEMA_SUPER_OBJS(schema, env) \
00276       (((xml_schema_t *) schema)->ops->\
00277             super_objs(schema, env))
00278 
00279 #define XML_SCHEMA_GET_TYPE(schema, env) \
00280       (((xml_schema_t *) schema)->ops->\
00281             get_type(schema, env))
00282 
00283 #define XML_SCHEMA_GET_BASE_IMPL(schema, env) \
00284       (((xml_schema_t *) schema)->ops->\
00285             get_base_impl(schema, env))
00286             
00287 #define XML_SCHEMA_GET_NAMESPACE(schema, env, prefix) \
00288         (((xml_schema_t *) schema)->ops->\
00289             get_namespace(schema, env, prefix))            
00290 
00291 #define XML_SCHEMA_GET_ATTR_FORM_DEFAULT(schema, env) \
00292       (((xml_schema_t *) schema)->ops->\
00293             get_attr_form_default(schema, env))
00294 
00295 #define XML_SCHEMA_SET_ATTR_FORM_DEFAULT(schema, env, attr_form) \
00296       (((xml_schema_t *) schema)->ops->\
00297             set_attr_form_default(schema, env, attr_form))
00298 
00299 #define XML_SCHEMA_GET_ATTR_GROUPS(schema, env) \
00300       (((xml_schema_t *) schema)->ops->\
00301            get_attr_groups(schema, env))
00302            
00303 #define XML_SCHEMA_GET_ATTRS(schema, env) \
00304       (((xml_schema_t *) schema)->ops->\
00305            get_attrs(schema, env))           
00306 
00307 #define XML_SCHEMA_GET_BLOCK_DEFAULT(schema, env) \
00308       (((xml_schema_t *) schema)->ops->\
00309            get_block_default(schema, env))
00310            
00311 
00312 #define XML_SCHEMA_SET_BLOCK_DEFAULT(schema, env, block_default) \
00313       (((xml_schema_t *) schema)->ops->\
00314            set_block_default(schema, env, block_default))
00315            
00316 #define XML_SCHEMA_GET_ELEMENT_FORM_DEFAULT(schema, env) \
00317       (((xml_schema_t *) schema)->ops->\
00318            get_element_form_default(schema, env))
00319 
00320 #define XML_SCHEMA_SET_ELEMENT_FORM_DEFAULT(schema, env, ele_form_default) \
00321       (((xml_schema_t *) schema)->ops->\
00322            set_element_form_default(schema, env, ele_form_default))
00323            
00324 #define XML_SCHEMA_GET_ELEMENTS(schema, env) \
00325         (((xml_schema_t *) schema)->ops->\
00326            get_elements(schema, env))                         
00327 
00328 #define XML_SCHEMA_GET_ELEMENT_BY_QNAME(schema, env, qname) \
00329         (((xml_schema_t *) schema)->ops->\
00330            get_element_by_qname(schema, env, qname))  
00331            
00332 #define XML_SCHEMA_GET_TYPE_BY_QNAME(schema, env, qname) \
00333         (((xml_schema_t *) schema)->ops->\
00334            get_type_by_qname(schema, env, qname))                  
00335 
00336 #define XML_SCHEMA_SET_FINAL_DEFAULT(schema, env, final_default) \
00337       (((xml_schema_t *) schema)->ops->\
00338            set_final_default(schema, env, final_default))
00339 
00340 #define XML_SCHEMA_GET_FINAL_DEFAULT(schema, env) \
00341       (((xml_schema_t *) schema)->ops->\
00342            get_final_default(schema, env))
00343            
00344 #define XML_SCHEMA_GET_GROUPS(schema, env) \
00345         (((xml_schema_t *) schema)->ops->\
00346            get_groups(schema, env))      
00347            
00348            
00349 #define XML_SCHEMA_GET_INCLUDES(schema, env) \
00350         (((xml_schema_t *) schema)->ops->\
00351            get_includes(schema, env))                  
00352 
00353 #define XML_SCHEMA_IS_COMPILED(schema, env) \
00354         (((xml_schema_t *) schema)->ops->\
00355            is_compiled(schema, env)) 
00356 
00357 #define XML_SCHEMA_GET_ITEMS(schema, env) \
00358         (((xml_schema_t *) schema)->ops->\
00359            get_items(schema, env)) 
00360            
00361 #define XML_SCHEMA_GET_NOTATIONS(schema, env) \
00362         (((xml_schema_t *) schema)->ops->\
00363            get_items(schema, env))  
00364            
00365 #define XML_SCHEMA_GET_SCHEMA_TYPES(schema, env) \
00366         (((xml_schema_t *) schema)->ops->\
00367            get_schema_types(schema, env))            
00368                                
00369 #define XML_SCHEMA_GET_TARGET_NAMESPACE(schema, env) \
00370         (((xml_schema_t *) schema)->ops->\
00371            get_target_namespace(schema, env))    
00372            
00373 #define XML_SCHEMA_SET_TARGET_NAMESPACE(schema, env, target_ns) \
00374         (((xml_schema_t *) schema)->ops->\
00375            set_target_namespace(schema, env, target_ns))                    
00376            
00377 #define XML_SCHEMA_GET_VERSION(schema, env) \
00378         (((xml_schema_t *) schema)->ops->\
00379            get_version(schema, env)) 
00380 
00381 #define XML_SCHEMA_COMPILE(schema, env) \
00382         (((xml_schema_t *) schema)->ops->\
00383            compile(schema, env))   
00384            
00385 #define XML_SCHEMA_WRITE_WITH_OUT(schema, env, out) \
00386         (((xml_schema_t *) schema)->ops->\
00387             write_with_out(schema, env, out))
00388             
00389 #define XML_SCHEMA_WRITE_WITH_WRITER(schema, env, writer) \
00390         (((xml_schema_t *) schema)->ops->\
00391             write_with_writer(schema, env, writer))     
00392             
00393 #define XML_SCHEMA_GET_PREFIX_TO_NAMESPACE_MAP(schema, env)\
00394         (((xml_schema_t *) schema)->ops->\
00395             get_prefix_to_namespace_map(schema, env))    
00396             
00397 #define XML_SCHEMA_SET_PREFIX_TO_NAMESPACE_MAP(schema, env, map)\
00398         (((xml_schema_t *) schema)->ops->\
00399             set_prefix_to_namespace_map(schema, env, map))         
00400             
00401 #define XML_SCHEMA_ADD_TYPE(schema, env, type)\
00402         (((xml_schema_t *) schema)->ops->\
00403             add_type(schema, env, type)) 
00404             
00405 #define XML_SCHEMA_SET_SCHEMA_NS_PREFIX(schema, env, ns_prefix) \
00406         (((xml_schema_t *) schema)->ops->\
00407             set_schema_ns_prefix(schema, env, ns_prefix))
00408             
00409 #define XML_SCHEMA_SERIALIZE(schema, env) \
00410         (((xml_schema_t *) schema)->ops->\
00411             serialize(schema, env))                                              
00412                       
00413 #define XML_SCHEMA_SET_ROOT_NODE(schema, env, root_node) \
00414         (((xml_schema_t *) schema)->ops->\
00415             set_root_node(schema, env, root_node))
00416                                   
00417                       
00419 #ifdef __cplusplus
00420 }
00421 #endif
00422 #endif /* XML_SCHEMA_H */

Generated on Tue Oct 3 22:35:48 2006 for Axis2/C by  doxygen 1.4.7