woden_wsdl10_desc.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_WSDL10_DESC_H
00018 #define WODEN_WSDL10_DESC_H
00019 
00038 #include <woden.h>
00039 #include <woden_wsdl10_desc_element.h>
00040 #include <woden_wsdl_obj.h>
00041 #include <woden_documentable.h>
00042 #include <woden_wsdl_component.h>
00043 
00049 typedef union woden_wsdl10_desc_base woden_wsdl10_desc_base_t;
00050 typedef struct woden_wsdl10_desc woden_wsdl10_desc_t;
00051 typedef struct woden_wsdl10_desc_ops woden_wsdl10_desc_ops_t;
00052 struct woden_documentation_element;
00053 struct woden_wsdl_component;
00054 struct woden_documentable;
00055 
00056 #ifdef __cplusplus
00057 extern "C"
00058 {
00059 #endif
00060 
00061 struct woden_wsdl10_desc_ops
00062 {
00067     axis2_status_t (AXIS2_CALL *
00068     free) (void *desc,
00069             const axis2_env_t *env);
00070 
00071     axis2_status_t (AXIS2_CALL *
00072     to_desc_free) (void *desc,
00073             const axis2_env_t *env);
00074     
00075     axis2_hash_t *(AXIS2_CALL *
00076     super_objs) (void *desc,
00077             const axis2_env_t *env);
00078 
00079     woden_obj_types_t (AXIS2_CALL *
00080     type) (void *desc,
00081             const axis2_env_t *env);
00085     struct woden_documentable *(AXIS2_CALL *
00086     get_base_impl) (
00087             void *desc,
00088             const axis2_env_t *env);
00089     /* ************************************************************
00090      *  Description interface methods (the WSDL Component model)
00091      * ************************************************************/
00092     axis2_array_list_t *(AXIS2_CALL *
00093     get_msgs) (
00094             void *desc,
00095             const axis2_env_t *env);
00096     
00097     axis2_array_list_t *(AXIS2_CALL *
00098     get_interfaces) (
00099             void *desc,
00100             const axis2_env_t *env);
00101 
00102     axis2_array_list_t *(AXIS2_CALL *
00103     get_bindings) (
00104             void *desc,
00105             const axis2_env_t *env);
00106 
00107     axis2_array_list_t *(AXIS2_CALL *
00108     get_svcs) (
00109             void *desc,
00110             const axis2_env_t *env);
00111 
00112     axis2_array_list_t *(AXIS2_CALL *
00113     get_element_decls) (
00114             void *desc,
00115             const axis2_env_t *env);
00116 
00117     void *(AXIS2_CALL *
00118     get_element_decl) (
00119             void *desc,
00120             const axis2_env_t *env,
00121             axis2_qname_t *qname);
00122 
00123     axis2_array_list_t *(AXIS2_CALL *
00124     get_type_defs) (
00125             void *desc,
00126             const axis2_env_t *env);
00127 
00128     void *(AXIS2_CALL *
00129     get_type_def) (
00130             void *desc,
00131             const axis2_env_t *env,
00132             axis2_qname_t *qname);
00133 
00134     void *(AXIS2_CALL *
00135     to_element) (
00136             void *desc,
00137             const axis2_env_t *env);
00138     /* ************************************************************
00139      *  Non-API implementation methods
00140      * ************************************************************/
00141 
00142     /*
00143      * The 'addAllXXX' methods are used to initialize the Description Component 
00144      * with its flattened properties - {Interfaces}, {Bindings}, {Services},
00145      * {Element Declarations}, {Type Definitions}. Currently these are non-API
00146      * public helper methods used by the implementation to convert the Element
00147      * model into the Component model (i.e. the Component model is read-only).
00148      * If we need to support programmatic creation/updating of the Component model,
00149      * we will need to consider exposing these methods on the API.
00150      */
00151 
00152     axis2_status_t (AXIS2_CALL *
00153     add_to_all_msgs) (
00154             void *desc,
00155             const axis2_env_t *env,
00156             void *msg);
00157 
00158     axis2_status_t (AXIS2_CALL *
00159     add_to_all_interfaces) (
00160             void *desc,
00161             const axis2_env_t *env,
00162             void *interface);
00163 
00164     axis2_status_t (AXIS2_CALL *
00165     add_to_all_bindings) (
00166             void *desc,
00167             const axis2_env_t *env,
00168             void *binding);
00169 
00170     axis2_status_t (AXIS2_CALL *
00171     add_to_all_svcs) (
00172             void *desc,
00173             const axis2_env_t *env,
00174             void *svc);
00175 
00176     axis2_status_t (AXIS2_CALL *
00177     add_to_all_element_decls) (
00178             void *desc,
00179             const axis2_env_t *env,
00180             void *element_decl);
00181 
00182     axis2_status_t (AXIS2_CALL *
00183     add_to_all_type_defs) (
00184             void *desc,
00185             const axis2_env_t *env,
00186             void *type_def);
00187 };
00188 
00189 union woden_wsdl10_desc_base
00190 {
00191     woden_documentable_t documentable;
00192     woden_wsdl10_desc_element_t desc_element;
00193     woden_wsdl_component_t wsdl_component;
00194 };
00195 
00196 struct woden_wsdl10_desc
00197 {
00198     woden_wsdl10_desc_base_t base;
00199     woden_wsdl10_desc_ops_t *ops;
00200 };
00201 
00202 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00203 woden_wsdl10_desc_create(
00204         const axis2_env_t *env);
00205 
00206 
00207 /***************************Woden C Internal Methods***************************/
00208 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00209 woden_wsdl10_desc_to_desc_element(
00210         void *desc,
00211         const axis2_env_t *env);
00212 
00213 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00214 woden_wsdl10_desc_to_documentable_element(
00215         void *desc,
00216         const axis2_env_t *env);
00217 
00218 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00219 woden_wsdl10_desc_to_documentable(
00220         void *desc,
00221         const axis2_env_t *env);
00222 
00223 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00224 woden_wsdl10_desc_to_wsdl_obj(
00225         void *desc,
00226         const axis2_env_t *env);
00227 
00228 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00229 woden_wsdl10_desc_to_wsdl_component(
00230         void *desc,
00231         const axis2_env_t *env);
00232 
00233 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00234 woden_wsdl10_desc_to_attr_extensible(
00235         void *desc,
00236         const axis2_env_t *env);
00237 
00238 AXIS2_EXTERN woden_wsdl10_desc_t * AXIS2_CALL
00239 woden_wsdl10_desc_to_element_extensible(
00240         void *desc,
00241         const axis2_env_t *env);
00242 
00243 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00244 woden_wsdl10_desc_resolve_methods(
00245         woden_wsdl10_desc_t *desc,
00246         const axis2_env_t *env,
00247         woden_wsdl10_desc_t *desc_impl,
00248         axis2_hash_t *methods);
00249 /************************End of Woden C Internal Methods***********************/
00250 
00251 #define WODEN_WSDL10_DESC_FREE(desc, env) \
00252       (((woden_wsdl10_desc_t *) desc)->ops->free(desc, env))
00253 
00254 #define WODEN_WSDL10_DESC_TO_DESC_FREE(desc, env) \
00255       (((woden_wsdl10_desc_t *) desc)->ops->to_desc_free(desc, env))
00256 
00257 #define WODEN_WSDL10_DESC_SUPER_OBJS(desc, env) \
00258       (((woden_wsdl10_desc_t *) desc)->ops->super_objs(desc, env))
00259 
00260 #define WODEN_WSDL10_DESC_TYPE(desc, env) \
00261       (((woden_wsdl10_desc_t *) desc)->ops->type(desc, env))
00262 
00263 #define WODEN_WSDL10_DESC_GET_BASE_IMPL(desc, env) \
00264       (((woden_wsdl10_desc_t *) desc)->ops->get_base_impl(desc, env))
00265 
00266 #define WODEN_WSDL10_DESC_GET_MSGS(desc, env) \
00267       (((woden_wsdl10_desc_t *) desc)->ops->\
00268         get_msgs (desc, env))
00269 
00270 #define WODEN_WSDL10_DESC_GET_INTERFACES(desc, env) \
00271       (((woden_wsdl10_desc_t *) desc)->ops->\
00272         get_interfaces (desc, env))
00273 
00274 #define WODEN_WSDL10_DESC_GET_BINDINGS(desc, env) \
00275       (((woden_wsdl10_desc_t *) desc)->ops->\
00276          get_bindings(desc, env))
00277 
00278 #define WODEN_WSDL10_DESC_GET_SVCS(desc, env) \
00279       (((woden_wsdl10_desc_t *) desc)->ops->\
00280          get_svcs(desc, env))
00281 
00282 #define WODEN_WSDL10_DESC_GET_ELEMENT_DECLS(desc, env) \
00283       (((woden_wsdl10_desc_t *) desc)->ops->\
00284          get_element_decls(desc, env))
00285 
00286 #define WODEN_WSDL10_DESC_GET_ELEMENT_DECL(desc, env, qname) \
00287       (((woden_wsdl10_desc_t *) desc)->ops->\
00288         get_element_decl (desc, env, qname))
00289 
00290 #define WODEN_WSDL10_DESC_GET_TYPE_DEFS(desc, env) \
00291       (((woden_wsdl10_desc_t *) desc)->ops->\
00292         get_type_defs (desc, env))
00293 
00294 #define WODEN_WSDL10_DESC_GET_TYPE_DEF(desc, env, qname) \
00295       (((woden_wsdl10_desc_t *) desc)->ops->\
00296         get_type_def (desc, env, qname))
00297 
00298 #define WODEN_WSDL10_DESC_TO_ELEMENT(desc, env) \
00299       (((woden_wsdl10_desc_t *) desc)->ops->\
00300         to_element (desc, env))
00301 
00302 #define WODEN_WSDL10_DESC_ADD_TO_ALL_MSGS(desc, env, msg) \
00303       (((woden_wsdl10_desc_t *) desc)->ops->\
00304         add_to_all_msgs (desc, env, msg))
00305 
00306 #define WODEN_WSDL10_DESC_ADD_TO_ALL_INTERFACES(desc, env, interface) \
00307       (((woden_wsdl10_desc_t *) desc)->ops->\
00308         add_to_all_interfaces (desc, env, interface))
00309 
00310 #define WODEN_WSDL10_DESC_ADD_TO_ALL_BINDINGS(desc, env, binding) \
00311       (((woden_wsdl10_desc_t *) desc)->ops->\
00312         add_to_all_bindings (desc, env, binding))
00313 
00314 #define WODEN_WSDL10_DESC_ADD_TO_ALL_SVCS(desc, env, svc) \
00315       (((woden_wsdl10_desc_t *) desc)->ops->\
00316         add_to_all_svcs (desc, env, svc))
00317 
00318 #define WODEN_WSDL10_DESC_ADD_TO_ALL_ELEMENT_DECLS(desc, env, element_decl) \
00319       (((woden_wsdl10_desc_t *) desc)->ops->\
00320         add_to_all_element_decls (desc, env, element_decl))
00321 
00322 #define WODEN_WSDL10_DESC_ADD_TO_ALL_TYPE_DEFS(desc, env, type_def) \
00323       (((woden_wsdl10_desc_t *) desc)->ops->\
00324         add_to_all_type_defs (desc, env, type_def))
00325 
00327 #ifdef __cplusplus
00328 }
00329 #endif
00330 #endif /* WODEN_WSDL10_DESC_H */

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