woden_interface.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_INTERFACE_H
00018 #define WODEN_INTERFACE_H
00019 
00030 #include <woden.h>
00031 #include <woden_interface_element.h>
00032 #include <woden_configurable.h>
00033 
00039 typedef union woden_interface_base woden_interface_base_t;
00040 typedef struct woden_interface woden_interface_t;
00041 typedef struct woden_interface_ops woden_interface_ops_t;
00042 
00043 
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #endif
00048 
00049 struct woden_interface_ops
00050 {
00055     axis2_status_t (AXIS2_CALL *
00056     free) (void *woden_interface,
00057             const axis2_env_t *env);
00058 
00059     axis2_hash_t *(AXIS2_CALL *
00060     super_objs) (void *woden_interface,
00061             const axis2_env_t *env);
00062 
00063     woden_obj_types_t (AXIS2_CALL *
00064     type) (void *woden_interface,
00065             const axis2_env_t *env);
00069     struct woden_configurable *(AXIS2_CALL *
00070     get_base_impl) (
00071             void *woden_interface,
00072             const axis2_env_t *env);
00073 
00074     axis2_qname_t *(AXIS2_CALL *
00075     get_qname) (
00076             void *woden_interface,
00077             const axis2_env_t *env);
00078 
00079     axis2_array_list_t *(AXIS2_CALL *
00080     get_extended_interfaces) (
00081             void *woden_interface,
00082             const axis2_env_t *env);
00083 
00084     axis2_array_list_t *(AXIS2_CALL *
00085     get_interface_faults) (
00086             void *woden_interface,
00087             const axis2_env_t *env);
00088 
00089     void *(AXIS2_CALL *
00090     get_interface_fault) (
00091             void *woden_interface,
00092             const axis2_env_t *env,
00093             axis2_qname_t *qname);
00094 
00095     axis2_array_list_t *(AXIS2_CALL *
00096     get_interface_ops) (
00097             void *woden_interface,
00098             const axis2_env_t *env);
00099 
00100     void *(AXIS2_CALL *
00101     to_element)  (
00102             void *woden_interface,
00103             const axis2_env_t *env);
00104 
00105 };
00106 
00107 union woden_interface_base
00108 {
00109     woden_configurable_t configurable;
00110     woden_interface_element_t interface_element;
00111 };
00112 
00113 struct woden_interface
00114 {
00115     woden_interface_base_t base;
00116     woden_interface_ops_t *ops;
00117 };
00118 
00119 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00120 woden_interface_create(
00121         const axis2_env_t *env);
00122 
00123 
00124 /***************************Woden C Internal Methods***************************/
00125 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00126 woden_interface_to_interface_element(
00127         void *woden_interface,
00128         const axis2_env_t *env);
00129 
00130 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00131 woden_interface_to_documentable(
00132         void *woden_interface,
00133         const axis2_env_t *env);
00134 
00135 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00136 woden_interface_to_configurable(
00137         void *woden_interface,
00138         const axis2_env_t *env);
00139 
00140 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00141 woden_interface_to_attr_extensible(
00142         void *woden_interface,
00143         const axis2_env_t *env);
00144 
00145 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00146 woden_interface_to_element_extensible(
00147         void *woden_interface,
00148         const axis2_env_t *env);
00149 
00150 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00151 woden_interface_resolve_methods(
00152         woden_interface_t *woden_interface,
00153         const axis2_env_t *env,
00154         woden_interface_t *interface_impl,
00155         axis2_hash_t *methods);
00156 /************************End of Woden C Internal Methods***********************/
00157 
00158 #define WODEN_INTERFACE_FREE(interface, env) \
00159       (((woden_interface_t *) interface)->ops->free(interface, env))
00160 
00161 #define WODEN_INTERFACE_SUPER_OBJS(interface, env) \
00162       (((woden_interface_t *) interface)->ops->super_objs(interface, env))
00163 
00164 #define WODEN_INTERFACE_TYPE(interface, env) \
00165       (((woden_interface_t *) interface)->ops->type(interface, env))
00166 
00167 #define WODEN_INTERFACE_GET_BASE_IMPL(interface, env) \
00168       (((woden_interface_t *) interface)->ops->get_base_impl(interface, env))
00169 
00170 #define WODEN_INTERFACE_GET_QNAME(interface, env) \
00171       (((woden_interface_t *) interface)->ops->\
00172          get_qname(interface, env))
00173 
00174 #define WODEN_INTERFACE_GET_EXTENDED_INTERFACES(interface, env) \
00175       (((woden_interface_t *) interface)->ops->\
00176          get_extended_interfaces(interface, env))
00177 
00178 #define WODEN_INTERFACE_GET_INTERFACE_FAULTS(interface, env) \
00179       (((woden_interface_t *) interface)->ops->\
00180          get_interface_faults(interface, env))
00181 
00182 #define WODEN_INTERFACE_GET_INTERFACE_FAULT(interface, env, qname) \
00183       (((woden_interface_t *) interface)->ops->\
00184          get_interface_fault(interface, env, qname))
00185 
00186 #define WODEN_INTERFACE_GET_INTERFACE_OPS(interface, env) \
00187       (((woden_interface_t *) interface)->ops->\
00188          get_interface_ops(interface, env))
00189 
00190 #define WODEN_INTERFACE_TO_ELEMENT(interface, env) \
00191       (((woden_interface_t *) interface)->ops->\
00192          to_element(interface, env))
00193 
00195 #ifdef __cplusplus
00196 }
00197 #endif
00198 #endif /* WODEN_INTERFACE_H */

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