woden_binding_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_BINDING_ELEMENT_H
00018 #define WODEN_BINDING_ELEMENT_H
00019 
00026 #include <axis2_allocator.h>
00027 #include <axis2_env.h>
00028 #include <axis2_error.h>
00029 #include <axis2_string.h>
00030 #include <axis2_utils.h>
00031 #include <axis2_hash.h>
00032 #include <axis2_qname.h>
00033 #include <axis2_uri.h>
00034 #include <axis2_array_list.h>
00035 #include <woden.h>
00036 #include <woden_documentable_element.h>
00037 #include <woden_configurable_element.h>
00038 
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043 
00044 typedef struct woden_binding_element woden_binding_element_t;
00045 typedef struct woden_binding_element_ops woden_binding_element_ops_t;
00046 typedef union woden_binding_element_base woden_binding_element_base_t;
00047 
00053 struct woden_binding_element_ops
00054 {
00059     axis2_status_t (AXIS2_CALL *
00060     free) (
00061             void *binding_element,
00062             const axis2_env_t *env);
00063  
00064     woden_obj_types_t (AXIS2_CALL *
00065     type) (
00066             void *binding_element,
00067             const axis2_env_t *env);
00068 
00075     axis2_status_t (AXIS2_CALL *
00076     set_qname) (
00077             void *binding_element,
00078             const axis2_env_t *env,
00079             axis2_qname_t *qname);
00080 
00081     axis2_qname_t *(AXIS2_CALL *
00082     get_qname) (
00083             void *binding_element,
00084             const axis2_env_t *env); 
00085  
00092     axis2_status_t (AXIS2_CALL *
00093     set_interface_qname) (
00094             void *binding_element,
00095             const axis2_env_t *env,
00096             axis2_qname_t *qname);
00097 
00098     axis2_qname_t *(AXIS2_CALL *
00099     get_interface_qname) (
00100             void *binding_element,
00101             const axis2_env_t *env); 
00102 
00109     void *(AXIS2_CALL *
00110     get_interface_element) (
00111             void *binding_element,
00112             const axis2_env_t *env);
00113   
00121     axis2_status_t (AXIS2_CALL *
00122     set_type) (
00123             void *binding_element,
00124             const axis2_env_t *env,
00125             axis2_uri_t *type);
00126 
00127     axis2_uri_t *(AXIS2_CALL *
00128     get_type) (
00129             void *binding_element,
00130             const axis2_env_t *env); 
00131   
00132     axis2_status_t (AXIS2_CALL *
00133     add_binding_fault_element) (
00134             void *binding_element,
00135             const axis2_env_t *env,
00136             void *fault);
00137 
00138     axis2_array_list_t *(AXIS2_CALL *
00139     get_binding_fault_elements) (
00140             void *binding_element,
00141             const axis2_env_t *env);
00142  
00143     axis2_status_t (AXIS2_CALL *
00144     add_binding_op_element) (
00145             void *binding_element,
00146             const axis2_env_t *env,
00147             void *op);
00148 
00149     axis2_array_list_t *(AXIS2_CALL *
00150     get_binding_op_elements) (
00151             void *binding_element,
00152             const axis2_env_t *env);
00153 
00154 };
00155 
00156 union woden_binding_element_base
00157 {
00158     woden_documentable_element_t documentable_element;
00159     woden_configurable_element_t configurable_element;
00160 };
00161 
00162 struct woden_binding_element
00163 {
00164     woden_binding_element_base_t base;
00165     woden_binding_element_ops_t *ops;
00166 };
00167 
00168 AXIS2_EXTERN woden_binding_element_t * AXIS2_CALL
00169 woden_binding_element_create(
00170         const axis2_env_t *env);
00171 
00172 /************************Woden C Internal Methods******************************/
00173 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00174 woden_binding_element_resolve_methods(
00175         woden_binding_element_t *binding_element,
00176         const axis2_env_t *env,
00177         axis2_hash_t *methods);
00178 /************************End of Woden C Internal Methods***********************/
00179 
00180 #define WODEN_BINDING_ELEMENT_FREE(binding_element, env) \
00181       (((woden_binding_element_t *) binding_element)->ops->\
00182          free (binding_element, env))
00183 
00184 #define WODEN_BINDING_ELEMENT_SUPER_OBJS(binding_element, env) \
00185       (((woden_binding_element_t *) binding_element)->ops->\
00186          super_objs (binding_element, env))
00187 
00188 #define WODEN_BINDING_ELEMENT_TYPE(binding_element, env) \
00189       (((woden_binding_element_t *) binding_element)->ops->\
00190          type (binding_element, env))
00191 
00192 #define WODEN_BINDING_ELEMENT_SET_QNAME(binding_element, env, qname) \
00193       (((woden_binding_element_t *) binding_element)->ops->\
00194          set_qname (binding_element, env, qname))
00195 
00196 #define WODEN_BINDING_ELEMENT_GET_QNAME(binding_element, env) \
00197       (((woden_binding_element_t *) binding_element)->ops->\
00198         get_qname  (binding_element, env))
00199 
00200 #define WODEN_BINDING_ELEMENT_SET_INTERFACE_QNAME(binding_element, env, qname) \
00201       (((woden_binding_element_t *) binding_element)->ops->\
00202          set_interface_qname (binding_element, env, qname))
00203 
00204 #define WODEN_BINDING_ELEMENT_GET_INTERFACE_QNAME(binding_element, env) \
00205       (((woden_binding_element_t *) binding_element)->ops->\
00206          get_interface_qname (binding_element, env))
00207 
00208 #define WODEN_BINDING_ELEMENT_GET_INTERFACE_ELEMENT(binding_element, env) \
00209       (((woden_binding_element_t *) binding_element)->ops->\
00210         get_interface_element  (binding_element, env))
00211 
00212 #define WODEN_BINDING_ELEMENT_SET_TYPE(binding_element, env, type) \
00213       (((woden_binding_element_t *) binding_element)->ops->\
00214          set_type (binding_element, env, type))
00215 
00216 #define WODEN_BINDING_ELEMENT_GET_TYPE(binding_element, env) \
00217       (((woden_binding_element_t *) binding_element)->ops->\
00218         get_type  (binding_element, env))
00219 
00220 #define WODEN_BINDING_ELEMENT_ADD_BINDING_FAULT_ELEMENT(binding_element, env, fault) \
00221       (((woden_binding_element_t *) binding_element)->ops->\
00222         add_binding_fault_element  (binding_element, env, fault))
00223 
00224 #define WODEN_BINDING_ELEMENT_GET_BINDING_FAULT_ELEMENTS(binding_element, env) \
00225       (((woden_binding_element_t *) binding_element)->ops->\
00226         get_binding_fault_elements  (binding_element, env))
00227 
00228 #define WODEN_BINDING_ELEMENT_ADD_BINDING_OP_ELEMENT(binding_element, env, op) \
00229       (((woden_binding_element_t *) binding_element)->ops->\
00230          add_binding_op_element (binding_element, env, op))
00231 
00232 #define WODEN_BINDING_ELEMENT_GET_BINDING_OP_ELEMENTS(binding_element, env) \
00233       (((woden_binding_element_t *) binding_element)->ops->\
00234          get_binding_op_elements (binding_element, env))
00235 
00237 #ifdef __cplusplus
00238 }
00239 #endif
00240 #endif /* WODEN_BINDING_ELEMENT_H */

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