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

woden_desc_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_DESC_ELEMENT_H
00018 #define WODEN_DESC_ELEMENT_H
00019 
00034 #include <axis2_allocator.h>
00035 #include <axis2_env.h>
00036 #include <axis2_error.h>
00037 #include <axis2_string.h>
00038 #include <axis2_utils.h>
00039 #include <axis2_hash.h>
00040 #include <axis2_qname.h>
00041 #include <axis2_uri.h>
00042 #include <woden.h>
00043 #include <woden_documentable_element.h>
00044 #include <woden_nested_element.h>
00045 
00046 #ifdef __cplusplus
00047 extern "C"
00048 {
00049 #endif
00050 
00051 typedef struct woden_desc_element woden_desc_element_t;
00052 typedef struct woden_desc_element_ops woden_desc_element_ops_t;
00053 typedef union woden_desc_element_base woden_desc_element_base_t;
00054 
00060 struct woden_desc_element_ops
00061 {
00066     axis2_status_t (AXIS2_CALL *
00067     free) (
00068             void *desc_el,
00069             const axis2_env_t *env);
00070     
00071     woden_obj_types_t (AXIS2_CALL *
00072     type) (void *desc_el,
00073             const axis2_env_t *env);
00074     
00075     axis2_status_t (AXIS2_CALL *
00076     set_document_base_uri) (
00077             void *desc_ele,
00078             const axis2_env_t *env,
00079             axis2_uri_t *document_base_uri);
00080 
00081     axis2_uri_t *(AXIS2_CALL *
00082     get_document_base_uri) (
00083             void *desc_ele,
00084             const axis2_env_t *env);
00085     
00086     /*
00087      * Attributes and namespaces
00088      */
00089     axis2_status_t (AXIS2_CALL *
00090     set_target_namespace) (
00091             void *desc_ele,
00092             const axis2_env_t *env,
00093             axis2_uri_t *namespace_uri);
00094 
00095     axis2_uri_t *(AXIS2_CALL *
00096     get_target_namespace) (
00097             void *desc_ele,
00098             const axis2_env_t *env);
00099 
00113     axis2_status_t (AXIS2_CALL *
00114     add_namespace) (
00115             void *desc_el,
00116             const axis2_env_t *env,
00117             axis2_char_t *prefix,
00118             axis2_uri_t *namespc);
00119     
00120     axis2_status_t (AXIS2_CALL *
00121     remove_namespace) (
00122             void *desc_el,
00123             const axis2_env_t *env,
00124             axis2_char_t *prefix);
00125     
00134     axis2_uri_t *(AXIS2_CALL * 
00135     get_namespace) (
00136             void *desc_el,
00137             const axis2_env_t *env,
00138             axis2_char_t *prefix);
00139     
00140     axis2_hash_t *(AXIS2_CALL * 
00141     get_namespaces) (
00142             void *desc_el,
00143             const axis2_env_t *env);/* TODO return arrays instead of Map? */
00144     
00145     /*
00146      * Element factory methods
00147      */
00148     
00149     void *(AXIS2_CALL *
00150     create_documentation_element) (
00151             void *desc_el,
00152             const axis2_env_t *env);
00153     
00154     void *(AXIS2_CALL *
00155     create_import_element) (
00156             void *desc_el,
00157             const axis2_env_t *env);
00158     
00159     void *(AXIS2_CALL *
00160     create_include_element) (
00161             void *desc_el,
00162             const axis2_env_t *env);
00163     
00164     void *(AXIS2_CALL *
00165     create_types_element) (
00166             void *desc_el,
00167             const axis2_env_t *env);
00168 
00169     void *(AXIS2_CALL *
00170     create_interface_element) (
00171             void *desc_el,
00172             const axis2_env_t *env);
00173 
00174     void *(AXIS2_CALL *
00175     create_interface_fault_element) (
00176             void *desc_el,
00177             const axis2_env_t *env);
00178 
00179     void *(AXIS2_CALL *
00180     create_interface_op_element) (
00181             void *desc_el,
00182             const axis2_env_t *env);
00183 
00184     void *(AXIS2_CALL *
00185     create_interface_fault_ref_element) (
00186             void *desc_el,
00187             const axis2_env_t *env);
00188 
00189     void *(AXIS2_CALL *
00190     create_interface_msg_ref_element) (
00191             void *desc_el,
00192             const axis2_env_t *env);
00193     
00194     void *(AXIS2_CALL *
00195     create_binding_element) (
00196             void *desc_el,
00197             const axis2_env_t *env);
00198 
00199     void *(AXIS2_CALL *
00200     create_binding_fault_element) (
00201             void *desc_el,
00202             const axis2_env_t *env);
00203 
00204     void *(AXIS2_CALL *
00205     create_binding_op_element) (
00206             void *desc_el,
00207             const axis2_env_t *env);
00208 
00209     void *(AXIS2_CALL *
00210     create_binding_fault_ref_element) (
00211             void *desc_el,
00212             const axis2_env_t *env);
00213 
00214     void *(AXIS2_CALL *
00215     create_binding_msg_ref_element) (
00216             void *desc_el,
00217             const axis2_env_t *env);
00218 
00219     void *(AXIS2_CALL *
00220     create_feature_element) (
00221             void *desc_el,
00222             const axis2_env_t *env);
00223 
00224     void *(AXIS2_CALL *
00225     create_svc_element) (
00226             void *desc_el,
00227             const axis2_env_t *env);
00228 
00229     void *(AXIS2_CALL *
00230     create_endpoint_element) (
00231             void *desc_el,
00232             const axis2_env_t *env);
00233 
00234     void *(AXIS2_CALL *
00235     create_property_element) (
00236             void *desc_el,
00237             const axis2_env_t *env);
00238     
00239     /*
00240      * Element accessor and modifier methods
00241      * 
00242      * TODO removeXXX(obj), getXXX(key) methods
00243      * 
00244      */
00245     axis2_status_t (AXIS2_CALL *
00246     add_import_element) (
00247             void *desc_ele,
00248             const axis2_env_t *env,
00249             void *import_el);
00250     
00251     axis2_array_list_t *(AXIS2_CALL *
00252     get_import_elements) (
00253             void *desc_ele,
00254             const axis2_env_t *env);
00255     
00256     axis2_status_t (AXIS2_CALL *
00257     add_include_element) (
00258             void *desc_ele,
00259             const axis2_env_t *env,
00260             void *include_el);
00261     
00262     axis2_array_list_t *(AXIS2_CALL *
00263     get_include_elements) (
00264             void *desc_ele,
00265             const axis2_env_t *env);
00266     
00267     axis2_status_t (AXIS2_CALL *
00268     set_types_element) (
00269             void *desc_ele,
00270             const axis2_env_t *env,
00271             void *types_el);
00272     
00273     void *(AXIS2_CALL *
00274     get_types_element) (
00275             void *desc_ele,
00276             const axis2_env_t *env);
00277     
00278     axis2_status_t (AXIS2_CALL *
00279     add_interface_element) (
00280             void *desc_ele,
00281             const axis2_env_t *env,
00282             void *interface_el);
00283     
00284     axis2_array_list_t *(AXIS2_CALL *
00285     get_interface_elements) (
00286             void *desc_ele,
00287             const axis2_env_t *env);
00288     
00289     axis2_status_t (AXIS2_CALL *
00290     add_binding_element) (
00291             void *desc_ele,
00292             const axis2_env_t *env,
00293             void *binding_el);
00294     
00295     axis2_array_list_t *(AXIS2_CALL *
00296     get_binding_elements) (
00297             void *desc_ele,
00298             const axis2_env_t *env);
00299     
00300     axis2_status_t (AXIS2_CALL *
00301     add_svc_element) (
00302             void *desc_ele,
00303             const axis2_env_t *env,
00304             void *svc_el);
00305     
00306     axis2_array_list_t *(AXIS2_CALL *
00307     get_svc_elements) (
00308             void *desc_ele,
00309             const axis2_env_t *env);
00310 
00311     axis2_status_t (AXIS2_CALL *
00312     set_ext_registry) (
00313             void *desc_ele,
00314             const axis2_env_t *env,
00315             void *ext_reg);
00316     
00317     void *(AXIS2_CALL *
00318     get_ext_registry) (
00319             void *desc_ele,
00320             const axis2_env_t *env);
00321 
00325     void *(AXIS2_CALL *
00326     to_component) (
00327             void *desc_ele,
00328             const axis2_env_t *env);
00329     
00330 
00331 };
00332 
00333 struct woden_desc_element
00334 {
00335     woden_documentable_element_t documentable_element;
00336     woden_desc_element_ops_t *ops;
00337 };
00338 
00339 /************************Woden C Internal Methods******************************/
00340 axis2_status_t AXIS2_CALL
00341 woden_desc_element_resolve_methods(
00342         woden_desc_element_t *desc_element,
00343         const axis2_env_t *env,
00344         axis2_hash_t *methods);
00345 /************************End of Woden C Internal Methods***********************/
00346 
00347 #define WODEN_DESC_ELEMENT_FREE(desc_el, env) \
00348       (((woden_desc_element_t *) desc_el)->ops->\
00349          free (desc_el, env))
00350 
00351 #define WODEN_DESC_ELEMENT_TYPE(desc_el, env) \
00352       (((woden_desc_element_t *) desc_el)->ops->\
00353          type (desc_el, env))
00354 
00355 #define WODEN_DESC_ELEMENT_SET_DOCUMENT_BASE_URI(desc_el, env, document_base_uri) \
00356       (((woden_desc_element_t *) desc_el)->ops->\
00357          set_document_base_uri(desc_el, env, document_base_uri))
00358 
00359 #define WODEN_DESC_ELEMENT_GET_DOCUMENT_BASE_URI(desc_el, env) \
00360       (((woden_desc_element_t *) desc_el)->ops->\
00361          get_document_base_uri(desc_el, env))
00362 
00363 #define WODEN_DESC_ELEMENT_SET_TARGET_NAMESPACE(desc_el, env, namespc_uri) \
00364       (((woden_desc_element_t *) desc_el)->ops->\
00365          set_target_namespace(desc_el, env, namespc_uri))
00366 
00367 #define WODEN_DESC_ELEMENT_GET_TARGET_NAMESPACE(desc_el, env) \
00368       (((woden_desc_element_t *) desc_el)->ops->\
00369          get_target_namespace(desc_el, env))
00370 
00371 #define WODEN_DESC_ELEMENT_ADD_NAMESPACE(desc_el, env, prefix, namespc) \
00372       (((woden_desc_element_t *) desc_el)->ops->\
00373         add_namespace (desc_el, env, prefix, namespc))
00374 
00375 #define WODEN_DESC_ELEMENT_REMOVE_NAMESPACE(desc_el, env, prefix) \
00376       (((woden_desc_element_t *) desc_el)->ops->\
00377         remove_namespace (desc_el, env, prefix))
00378 
00379 #define WODEN_DESC_ELEMENT_GET_NAMESPACE(desc_el, env, prefix) \
00380       (((woden_desc_element_t *) desc_el)->ops->\
00381         get_namespace (desc_el, env, prefix))
00382 
00383 #define WODEN_DESC_ELEMENT_GET_NAMESPACES(desc_el, env) \
00384       (((woden_desc_element_t *) desc_el)->ops->\
00385         get_namespaces (desc_el, env))
00386 
00387 #define WODEN_DESC_ELEMENT_CREATE_DOCUMENTATION_ELEMENT(desc_el, env) \
00388       (((woden_desc_element_t *) desc_el)->ops->\
00389         create_documentation_element (desc_el, env))
00390 
00391 #define WODEN_DESC_ELEMENT_CREATE_IMPORT_ELEMENT(desc_el, env) \
00392       (((woden_desc_element_t *) desc_el)->ops->\
00393         create_import_element (desc_el, env))
00394 
00395 #define WODEN_DESC_ELEMENT_CREATE_INCLUDE_ELEMENT(desc_el, env) \
00396       (((woden_desc_element_t *) desc_el)->ops->\
00397         create_include_element (desc_el, env))
00398 
00399 #define WODEN_DESC_ELEMENT_CREATE_TYPES_ELEMENT(desc_el, env) \
00400       (((woden_desc_element_t *) desc_el)->ops->\
00401         create_types_element (desc_el, env))
00402 
00403 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_ELEMENT(desc_el, env) \
00404       (((woden_desc_element_t *) desc_el)->ops->\
00405         create_interface_element (desc_el, env))
00406 
00407 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_FAULT_ELEMENT(desc_el, env) \
00408       (((woden_desc_element_t *) desc_el)->ops->\
00409         create_interface_fault_element (desc_el, env))
00410 
00411 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_OP_ELEMENT(desc_el, env) \
00412       (((woden_desc_element_t *) desc_el)->ops->\
00413         create_interface_op_element (desc_el, env))
00414 
00415 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_FAULT_REF_ELEMENT(desc_el, env) \
00416       (((woden_desc_element_t *) desc_el)->ops->\
00417         create_interface_fault_ref_element (desc_el, env))
00418 
00419 #define WODEN_DESC_ELEMENT_CREATE_INTERFACE_MSG_REF_ELEMENT(desc_el, env) \
00420       (((woden_desc_element_t *) desc_el)->ops->\
00421         create_interface_msg_ref_element (desc_el, env))
00422 
00423 #define WODEN_DESC_ELEMENT_CREATE_BINDING_ELEMENT(desc_el, env) \
00424       (((woden_desc_element_t *) desc_el)->ops->\
00425         create_binding_element (desc_el, env))
00426 
00427 #define WODEN_DESC_ELEMENT_CREATE_BINDING_FAULT_ELEMENT(desc_el, env) \
00428       (((woden_desc_element_t *) desc_el)->ops->\
00429         create_binding_fault_element (desc_el, env))
00430 
00431 #define WODEN_DESC_ELEMENT_CREATE_BINDING_OP_ELEMENT(desc_el, env) \
00432       (((woden_desc_element_t *) desc_el)->ops->\
00433         create_binding_op_element (desc_el, env))
00434 
00435 #define WODEN_DESC_ELEMENT_CREATE_BINDING_FAULT_REF_ELEMENT(desc_el, env) \
00436       (((woden_desc_element_t *) desc_el)->ops->\
00437         create_binding_fault_ref_element (desc_el, env))
00438 
00439 #define WODEN_DESC_ELEMENT_CREATE_BINDING_MSG_REF_ELEMENT(desc_el, env) \
00440       (((woden_desc_element_t *) desc_el)->ops->\
00441         create_binding_msg_ref_element (desc_el, env))
00442 
00443 #define WODEN_DESC_ELEMENT_CREATE_FEATURE_ELEMENT(desc_el, env) \
00444       (((woden_desc_element_t *) desc_el)->ops->\
00445         create_feature_element (desc_el, env))
00446 
00447 #define WODEN_DESC_ELEMENT_CREATE_SVC_ELEMENT(desc_el, env) \
00448       (((woden_desc_element_t *) desc_el)->ops->\
00449         create_svc_element (desc_el, env))
00450 
00451 #define WODEN_DESC_ELEMENT_CREATE_ENDPOINT_ELEMENT(desc_el, env) \
00452       (((woden_desc_element_t *) desc_el)->ops->\
00453         create_endpoint_element (desc_el, env))
00454 
00455 #define WODEN_DESC_ELEMENT_CREATE_PROPERTY_ELEMENT(desc_el, env) \
00456       (((woden_desc_element_t *) desc_el)->ops->\
00457         create_property_element (desc_el, env))
00458 
00459 #define WODEN_DESC_ELEMENT_ADD_IMPORT_ELEMENT(desc_el, env, import_el) \
00460       (((woden_desc_element_t *) desc_el)->ops->\
00461         add_import_element (desc_el, env, import_el))
00462 
00463 #define WODEN_DESC_ELEMENT_GET_IMPORT_ELEMENTS(desc_el, env) \
00464       (((woden_desc_element_t *) desc_el)->ops->\
00465         get_import_elements (desc_el, env))
00466 
00467 #define WODEN_DESC_ELEMENT_ADD_INCLUDE_ELEMENT(desc_el, env, include_el) \
00468       (((woden_desc_element_t *) desc_el)->ops->\
00469         add_include_element (desc_el, env, include_el))
00470 
00471 #define WODEN_DESC_ELEMENT_GET_INCLUDE_ELEMENTS(desc_el, env) \
00472       (((woden_desc_element_t *) desc_el)->ops->\
00473         get_include_elements (desc_el, env))
00474 
00475 #define WODEN_DESC_ELEMENT_SET_TYPES_ELEMENT(desc_el, env, types_el) \
00476       (((woden_desc_element_t *) desc_el)->ops->\
00477         set_types_element (desc_el, env, types_el))
00478 
00479 #define WODEN_DESC_ELEMENT_GET_TYPES_ELEMENT(desc_el, env) \
00480       (((woden_desc_element_t *) desc_el)->ops->\
00481         get_types_element (desc_el, env))
00482 
00483 #define WODEN_DESC_ELEMENT_ADD_INTERFACE_ELEMENT(desc_el, env, interface_el) \
00484       (((woden_desc_element_t *) desc_el)->ops->\
00485         add_interface_element (desc_el, env, interface_el))
00486 
00487 #define WODEN_DESC_ELEMENT_GET_INTERFACE_ELEMENTS(desc_el, env) \
00488       (((woden_desc_element_t *) desc_el)->ops->\
00489         get_interface_elements (desc_el, env))
00490 
00491 #define WODEN_DESC_ELEMENT_ADD_BINDING_ELEMENT(desc_el, env, binding_el) \
00492       (((woden_desc_element_t *) desc_el)->ops->\
00493         add_binding_element (desc_el, env, binding_el))
00494 
00495 #define WODEN_DESC_ELEMENT_GET_BINDING_ELEMENTS(desc_el, env) \
00496       (((woden_desc_element_t *) desc_el)->ops->\
00497         get_svc_elements (desc_el, env))
00498 
00499 #define WODEN_DESC_ELEMENT_ADD_SVC_ELEMENT(desc_el, env, svc_el) \
00500       (((woden_desc_element_t *) desc_el)->ops->\
00501         add_svc_element (desc_el, env, svc_el))
00502 
00503 #define WODEN_DESC_ELEMENT_GET_SVC_ELEMENTS(desc_el, env) \
00504       (((woden_desc_element_t *) desc_el)->ops->\
00505         get_svc_elements (desc_el, env))
00506 
00507 #define WODEN_DESC_ELEMENT_SET_EXT_REGISTRY(desc_el, env, ext_reg) \
00508       (((woden_desc_element_t *) desc_el)->ops->\
00509         set_ext_registry (desc_el, env, ext_reg))
00510 
00511 #define WODEN_DESC_ELEMENT_GET_EXT_REGISTRY(desc_el, env) \
00512       (((woden_desc_element_t *) desc_el)->ops->\
00513         get_ext_registry (desc_el, env))
00514 
00515 #define WODEN_DESC_ELEMENT_TO_COMPONENT(desc_el, env) \
00516       (((woden_desc_element_t *) desc_el)->ops->\
00517         to_component (desc_el, env))
00518 
00519 
00521 #ifdef __cplusplus
00522 }
00523 #endif
00524 #endif /* WODEN_DESC_ELEMENT_H */
00525 

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