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

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