woden_types_element.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 WODEN_TYPES_ELEMENT_H
00018 #define WODEN_TYPES_ELEMENT_H
00019 
00037 #include <axis2_allocator.h>
00038 #include <axis2_env.h>
00039 #include <axis2_error.h>
00040 #include <axis2_string.h>
00041 #include <axis2_utils.h>
00042 #include <axis2_hash.h>
00043 #include <axis2_qname.h>
00044 #include <axis2_uri.h>
00045 #include <woden.h>
00046 #include <woden_documentable_element.h>
00047 #include <xml_schema.h>
00048 
00049 #ifdef __cplusplus
00050 extern "C"
00051 {
00052 #endif
00053 
00054 typedef struct woden_types_element woden_types_element_t;
00055 typedef struct woden_types_element_ops woden_types_element_ops_t;
00056 struct xml_schema;
00057 
00063 struct woden_types_element_ops
00064 {
00069     axis2_status_t (AXIS2_CALL *
00070     free) (
00071             void *types_el,
00072             const axis2_env_t *env);
00073     
00074     woden_obj_types_t (AXIS2_CALL *
00075     type) (void *types_el,
00076             const axis2_env_t *env);
00077     
00084     axis2_status_t (AXIS2_CALL *
00085     set_type_system) (void *types_el,
00086             const axis2_env_t *env,
00087             axis2_char_t *type_system);
00088 
00093     axis2_char_t *(AXIS2_CALL *
00094     get_type_system) (void *types_el,
00095             const axis2_env_t *env);
00096 
00103     axis2_status_t (AXIS2_CALL *
00104     add_schema) (void *types_el,
00105             const axis2_env_t *env,
00106             void *schema);
00107 
00111     axis2_status_t (AXIS2_CALL *
00112     remove_schema) (
00113             void *types_el,
00114             const axis2_env_t *env,
00115             struct xml_schema *schema);
00116     
00123     axis2_array_list_t *(AXIS2_CALL *
00124     get_schemas) (
00125             void *types_el,
00126             const axis2_env_t *env);
00127     
00140     axis2_array_list_t *(AXIS2_CALL *
00141     get_schemas_with_namespace) (
00142             void *types_el,
00143             const axis2_env_t *env,
00144             axis2_uri_t *namespc);
00145 
00152     axis2_array_list_t *(AXIS2_CALL *
00153     get_inlined_schemas) (
00154             void *types_el,
00155             const axis2_env_t *env);
00156     
00163     axis2_array_list_t *(AXIS2_CALL *
00164     get_imported_schemas) (
00165             void *types_el,
00166             const axis2_env_t *env);
00167 };
00168 
00169 struct woden_types_element
00170 {
00171     woden_documentable_element_t documentable_element;
00172     woden_types_element_ops_t *ops;
00173 };
00174 
00175 /************************Woden C Internal Methods******************************/
00176 axis2_status_t AXIS2_CALL
00177 woden_types_element_resolve_methods(
00178         woden_types_element_t *types_element,
00179         const axis2_env_t *env,
00180         axis2_hash_t *methods);
00181 /************************End of Woden C Internal Methods***********************/
00182 
00183 #define WODEN_TYPES_ELEMENT_FREE(types_el, env) \
00184       (((woden_types_element_t *) types_el)->ops->\
00185          free (types_el, env))
00186 
00187 #define WODEN_TYPES_ELEMENT_TYPE(types_el, env) \
00188       (((woden_types_element_t *) types_el)->ops->\
00189          type (types_el, env))
00190 
00191 #define WODEN_TYPES_ELEMENT_SET_TYPE_SYSTEM(types_el, env, type_system) \
00192       (((woden_types_element_t *) types_el)->ops->\
00193          set_type_system(types_el, env, type_system))
00194 
00195 #define WODEN_TYPES_ELEMENT_GET_TYPE_SYSTEM(types_el, env) \
00196       (((woden_types_element_t *) types_el)->ops->\
00197          get_type_system(types_el, env))
00198 
00199 #define WODEN_TYPES_ELEMENT_ADD_SCHEMA(types_el, env, schema) \
00200       (((woden_types_element_t *) types_el)->ops->\
00201          add_schema(types_el, env, schema))
00202 
00203 #define WODEN_TYPES_ELEMENT_REMOVE_SCHEMA(types_el, env, schema) \
00204       (((woden_types_element_t *) types_el)->ops->\
00205          remove_schema(types_el, env, schema))
00206 
00207 #define WODEN_TYPES_ELEMENT_GET_SCHEMAS(types_el, env) \
00208       (((woden_types_element_t *) types_el)->ops->\
00209          get_schemas(types_el, env))
00210 
00211 #define WODEN_TYPES_ELEMENT_GET_SCHEMAS_WITH_NAMESPACE(types_el, env, \
00212         namespc) \
00213       (((woden_types_element_t *) types_el)->ops->\
00214          get_schemas_with_namespace(types_el, env, namespc))
00215 
00216 #define WODEN_TYPES_ELEMENT_GET_INLINED_SCHEMAS(types_el, env) \
00217       (((woden_types_element_t *) types_el)->ops->\
00218          get_inlined_schemas(types_el, env))
00219 
00220 #define WODEN_TYPES_ELEMENT_GET_IMPORTED_SCHEMAS(types_el, env) \
00221       (((woden_types_element_t *) types_el)->ops->\
00222          get_imported_schemas(types_el, env))
00223 
00225 #ifdef __cplusplus
00226 }
00227 #endif
00228 #endif /* WODEN_TYPES_ELEMENT_H */

Generated on Tue Oct 3 20:47:59 2006 for Axis2/C by  doxygen 1.4.7