Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Examples

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

Generated on Fri Jun 16 18:02:32 2006 for Axis2/C by  doxygen 1.4.2