woden_type_def.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_TYPE_DEF_H
00018 #define WODEN_TYPE_DEF_H
00019 
00031 #include <woden.h>
00032 #include <axis2_hash.h>
00033 #include <axis2_qname.h>
00034 #include <axis2_uri.h>
00035 
00041 typedef union woden_type_def_base woden_type_def_base_t;
00042 typedef struct woden_type_def woden_type_def_t;
00043 typedef struct woden_type_def_ops woden_type_def_ops_t;
00044 
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049 
00050 struct woden_type_def_ops
00051 {
00056     axis2_status_t (AXIS2_CALL *
00057     free) (void *type_def,
00058             const axis2_env_t *env);
00059     
00060     axis2_hash_t *(AXIS2_CALL *
00061     super_objs) (void *type_def,
00062             const axis2_env_t *env);
00063     
00064     woden_obj_types_t (AXIS2_CALL *
00065     type) (void *type_def,
00066             const axis2_env_t *env);
00070     void *(AXIS2_CALL *
00071     get_base_impl) (
00072             void *type_def,
00073             const axis2_env_t *env);
00074 
00075     axis2_status_t (AXIS2_CALL *
00076     set_qname) (
00077             void *type_def,
00078             const axis2_env_t *env,
00079             axis2_qname_t *qname);
00080 
00081     axis2_qname_t *(AXIS2_CALL *
00082     get_qname) (
00083             void *type_def,
00084             const axis2_env_t *env);
00085 
00086     axis2_status_t (AXIS2_CALL *
00087     set_system) (
00088             void *type_def,
00089             const axis2_env_t *env,
00090             axis2_uri_t *type_system_uri);
00091 
00092     axis2_uri_t *(AXIS2_CALL *
00093     get_system) (
00094             void *type_def,
00095             const axis2_env_t *env);
00096 
00097     axis2_status_t (AXIS2_CALL *
00098     set_content_model) (
00099             void *type_def,
00100             const axis2_env_t *env,
00101             axis2_char_t *content_model);
00102 
00103     axis2_char_t *(AXIS2_CALL *
00104     get_content_model) (
00105             void *type_def,
00106             const axis2_env_t *env);
00107 
00108 
00109     axis2_status_t (AXIS2_CALL *
00110     set_content) (
00111             void *type_def,
00112             const axis2_env_t *env,
00113             void *type_def_content);
00114 
00115     void *(AXIS2_CALL *
00116     get_content) (
00117             void *type_def,
00118             const axis2_env_t *env);
00119 
00120 };
00121 
00122 struct woden_type_def
00123 {
00124     woden_type_def_ops_t *ops;
00125 };
00126 
00127 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00128 woden_type_def_create(
00129         const axis2_env_t *env);
00130 
00131 /************************Woden C Internal Methods******************************/
00132 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00133 woden_type_def_to_type_def_element(
00134         void *type_def,
00135         const axis2_env_t *env);
00136 
00137 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00138 woden_type_def_to_attr_extensible(
00139         void *type_def,
00140         const axis2_env_t *env);
00141 
00142 AXIS2_EXTERN woden_type_def_t * AXIS2_CALL
00143 woden_type_def_to_element_extensible(
00144         void *type_def,
00145         const axis2_env_t *env);
00146 
00147 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00148 woden_type_def_resolve_methods(
00149         woden_type_def_t *type_def,
00150         const axis2_env_t *env,
00151         woden_type_def_t *type_def_impl,
00152         axis2_hash_t *methods);
00153 /************************End of Woden C Internal Methods***********************/
00154 
00155 
00156 #define WODEN_TYPE_DEF_FREE(type_def, env) \
00157       (((woden_type_def_t *) type_def)->ops->free(type_def, env))
00158 
00159 #define WODEN_TYPE_DEF_SUPER_OBJS(type_def, env) \
00160       (((woden_type_def_t *) type_def)->ops->\
00161          super_objs(type_def, env))
00162 
00163 #define WODEN_TYPE_DEF_TYPE(type_def, env) \
00164       (((woden_type_def_t *) type_def)->ops->type(type_def, env))
00165 
00166 #define WODEN_TYPE_DEF_GET_BASE_IMPL(type_def, env) \
00167       (((woden_type_def_t *) type_def)->ops->\
00168          get_base_impl(type_def, env))
00169 
00170 #define WODEN_TYPE_DEF_SET_QNAME(type_def, env, qname) \
00171       (((woden_type_def_t *) type_def)->ops->\
00172          set_qname(type_def, env, qname))
00173 
00174 #define WODEN_TYPE_DEF_GET_QNAME(type_def, env) \
00175       (((woden_type_def_t *) type_def)->ops->\
00176          get_qname(type_def, env))
00177 
00178 #define WODEN_TYPE_DEF_SET_SYSTEM(type_def, env, type_system_uri) \
00179       (((woden_type_def_t *) type_def)->ops->\
00180          set_system(type_def, env, type_system_uri))
00181 
00182 #define WODEN_TYPE_DEF_GET_SYSTEM(type_def, env) \
00183       (((woden_type_def_t *) type_def)->ops->\
00184          get_system(type_def, env))
00185 
00186 #define WODEN_TYPE_DEF_SET_CONTENT_MODEL(type_def, env, content_model) \
00187       (((woden_type_def_t *) type_def)->ops->\
00188          set_content_model(type_def, env, content_model))
00189 
00190 #define WODEN_TYPE_DEF_GET_CONTENT_MODEL(type_def, env) \
00191       (((woden_type_def_t *) type_def)->ops->\
00192          get_content_model(type_def, env))
00193 
00194 #define WODEN_TYPE_DEF_SET_CONTENT(type_def, env, type_def_content) \
00195       (((woden_type_def_t *) type_def)->ops->\
00196          set_content(type_def, env, type_def_content))
00197 
00198 #define WODEN_TYPE_DEF_GET_CONTENT(type_def, env) \
00199       (((woden_type_def_t *) type_def)->ops->\
00200          get_content(type_def, env))
00201 
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206 #endif /* WODEN_TYPE_DEF_H */

Generated on Tue Oct 3 18:21:11 2006 for Axis2/C by  doxygen 1.4.7