woden_interface.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef WODEN_INTERFACE_H
00019 #define WODEN_INTERFACE_H
00020 
00031 #include <woden.h>
00032 #include <woden_interface_element.h>
00033 #include <woden_configurable.h>
00034 
00040 typedef union woden_interface_base woden_interface_base_t;
00041 typedef struct woden_interface woden_interface_t;
00042 typedef struct woden_interface_ops woden_interface_ops_t;
00043 
00044 
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049 
00050 struct woden_interface_ops
00051 {
00056     axis2_status_t (AXIS2_CALL *
00057     free) (void *woden_interface,
00058             const axis2_env_t *env);
00059 
00060     axis2_hash_t *(AXIS2_CALL *
00061     super_objs) (void *woden_interface,
00062             const axis2_env_t *env);
00063 
00064     woden_obj_types_t (AXIS2_CALL *
00065     type) (void *woden_interface,
00066             const axis2_env_t *env);
00070     struct woden_configurable *(AXIS2_CALL *
00071     get_base_impl) (
00072             void *woden_interface,
00073             const axis2_env_t *env);
00074 
00075     axis2_qname_t *(AXIS2_CALL *
00076     get_qname) (
00077             void *woden_interface,
00078             const axis2_env_t *env);
00079 
00080     axis2_array_list_t *(AXIS2_CALL *
00081     get_extended_interfaces) (
00082             void *woden_interface,
00083             const axis2_env_t *env);
00084 
00085     axis2_array_list_t *(AXIS2_CALL *
00086     get_interface_faults) (
00087             void *woden_interface,
00088             const axis2_env_t *env);
00089 
00090     void *(AXIS2_CALL *
00091     get_interface_fault) (
00092             void *woden_interface,
00093             const axis2_env_t *env,
00094             axis2_qname_t *qname);
00095 
00096     axis2_array_list_t *(AXIS2_CALL *
00097     get_interface_ops) (
00098             void *woden_interface,
00099             const axis2_env_t *env);
00100 
00101     void *(AXIS2_CALL *
00102     to_element)  (
00103             void *woden_interface,
00104             const axis2_env_t *env);
00105 
00106 };
00107 
00108 union woden_interface_base
00109 {
00110     woden_configurable_t configurable;
00111     woden_interface_element_t interface_element;
00112 };
00113 
00114 struct woden_interface
00115 {
00116     woden_interface_base_t base;
00117     woden_interface_ops_t *ops;
00118 };
00119 
00120 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00121 woden_interface_create(
00122         const axis2_env_t *env);
00123 
00124 
00125 /***************************Woden C Internal Methods***************************/
00126 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00127 woden_interface_to_interface_element(
00128         void *woden_interface,
00129         const axis2_env_t *env);
00130 
00131 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00132 woden_interface_to_documentable(
00133         void *woden_interface,
00134         const axis2_env_t *env);
00135 
00136 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00137 woden_interface_to_configurable(
00138         void *woden_interface,
00139         const axis2_env_t *env);
00140 
00141 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00142 woden_interface_to_attr_extensible(
00143         void *woden_interface,
00144         const axis2_env_t *env);
00145 
00146 AXIS2_EXTERN woden_interface_t * AXIS2_CALL
00147 woden_interface_to_element_extensible(
00148         void *woden_interface,
00149         const axis2_env_t *env);
00150 
00151 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00152 woden_interface_resolve_methods(
00153         woden_interface_t *woden_interface,
00154         const axis2_env_t *env,
00155         woden_interface_t *interface_impl,
00156         axis2_hash_t *methods);
00157 /************************End of Woden C Internal Methods***********************/
00158 
00159 #define WODEN_INTERFACE_FREE(interface, env) \
00160       (((woden_interface_t *) interface)->ops->free(interface, env))
00161 
00162 #define WODEN_INTERFACE_SUPER_OBJS(interface, env) \
00163       (((woden_interface_t *) interface)->ops->super_objs(interface, env))
00164 
00165 #define WODEN_INTERFACE_TYPE(interface, env) \
00166       (((woden_interface_t *) interface)->ops->type(interface, env))
00167 
00168 #define WODEN_INTERFACE_GET_BASE_IMPL(interface, env) \
00169       (((woden_interface_t *) interface)->ops->get_base_impl(interface, env))
00170 
00171 #define WODEN_INTERFACE_GET_QNAME(interface, env) \
00172       (((woden_interface_t *) interface)->ops->\
00173          get_qname(interface, env))
00174 
00175 #define WODEN_INTERFACE_GET_EXTENDED_INTERFACES(interface, env) \
00176       (((woden_interface_t *) interface)->ops->\
00177          get_extended_interfaces(interface, env))
00178 
00179 #define WODEN_INTERFACE_GET_INTERFACE_FAULTS(interface, env) \
00180       (((woden_interface_t *) interface)->ops->\
00181          get_interface_faults(interface, env))
00182 
00183 #define WODEN_INTERFACE_GET_INTERFACE_FAULT(interface, env, qname) \
00184       (((woden_interface_t *) interface)->ops->\
00185          get_interface_fault(interface, env, qname))
00186 
00187 #define WODEN_INTERFACE_GET_INTERFACE_OPS(interface, env) \
00188       (((woden_interface_t *) interface)->ops->\
00189          get_interface_ops(interface, env))
00190 
00191 #define WODEN_INTERFACE_TO_ELEMENT(interface, env) \
00192       (((woden_interface_t *) interface)->ops->\
00193          to_element(interface, env))
00194 
00196 #ifdef __cplusplus
00197 }
00198 #endif
00199 #endif /* WODEN_INTERFACE_H */

Generated on Wed Dec 20 20:34:50 2006 for Axis2/C by  doxygen 1.5.1