00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_DOCUMENTABLE_H
00019 #define WODEN_DOCUMENTABLE_H
00020
00030 #include <woden.h>
00031 #include <woden_documentable_element.h>
00032 #include <woden_wsdl_obj.h>
00033
00039 typedef union woden_documentable_base woden_documentable_base_t;
00040 typedef struct woden_documentable woden_documentable_t;
00041 typedef struct woden_documentable_ops woden_documentable_ops_t;
00042 struct woden_documentation_element;
00043
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #endif
00048
00049 struct woden_documentable_ops
00050 {
00055 axis2_status_t (AXIS2_CALL *
00056 free) (
00057 void *documentable,
00058 const axis2_env_t *env);
00059
00060 axis2_status_t (AXIS2_CALL *
00061 to_documentable_free) (
00062 void *documentable,
00063 const axis2_env_t *env);
00064
00065 axis2_hash_t *(AXIS2_CALL *
00066 super_objs) (
00067 void *documentable,
00068 const axis2_env_t *env);
00069
00073 woden_wsdl_obj_t *(AXIS2_CALL *
00074 get_base_impl) (
00075 void *documentable,
00076 const axis2_env_t *env);
00077
00078 axis2_status_t (AXIS2_CALL *
00079 add_documentation_element) (
00080 void *types,
00081 const axis2_env_t *env,
00082 struct woden_documentation_element *documentation);
00083
00084 axis2_array_list_t *(AXIS2_CALL *
00085 get_documentation_elements) (
00086 void *types,
00087 const axis2_env_t *env);
00088
00089
00090 };
00091
00092 union woden_documentable_base
00093 {
00094 woden_wsdl_obj_t wsdl_obj;
00095 woden_documentable_element_t documentable_element;
00096 };
00097
00098 struct woden_documentable
00099 {
00100 woden_documentable_base_t base;
00101 woden_documentable_ops_t *ops;
00102 };
00103
00104 AXIS2_EXTERN woden_documentable_t * AXIS2_CALL
00105 woden_documentable_create(
00106 const axis2_env_t *env);
00107
00108
00109
00110 AXIS2_EXTERN woden_documentable_t * AXIS2_CALL
00111 woden_documentable_to_documentable_element(
00112 void *documentable,
00113 const axis2_env_t *env);
00114
00115 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00116 woden_documentable_resolve_methods(
00117 woden_documentable_t *documentable,
00118 const axis2_env_t *env,
00119 woden_documentable_t *documentable_impl,
00120 axis2_hash_t *methods);
00121
00122
00123
00124 #define WODEN_DOCUMENTABLE_FREE(documentable, env) \
00125 (((woden_documentable_t *) documentable)->ops->\
00126 free(documentable, env))
00127
00128 #define WODEN_DOCUMENTABLE_TO_DOCUMENTABLE_FREE(documentable, env) \
00129 (((woden_documentable_t *) documentable)->ops->\
00130 to_documentable_free(documentable, env))
00131
00132 #define WODEN_DOCUMENTABLE_SUPER_OBJS(documentable, env) \
00133 (((woden_documentable_t *) documentable)->ops->\
00134 super_objs(documentable, env))
00135
00136 #define WODEN_DOCUMENTABLE_GET_BASE_IMPL(documentable, env) \
00137 (((woden_documentable_t *) documentable)->ops->\
00138 get_base_impl(documentable, env))
00139
00140 #define WODEN_DOCUMENTABLE_ADD_DOCUMENTATION_ELEMENT(documentable, env, \
00141 documentation) \
00142 (((woden_documentable_t *) documentable)->ops->\
00143 add_documentation_element(documentable, env, documentation))
00144
00145 #define WODEN_DOCUMENTABLE_GET_DOCUMENTATION_ELEMENTS(documentable, env) \
00146 (((woden_documentable_t *) documentable)->ops->\
00147 get_documentation_elements(documentable, env))
00148
00150 #ifdef __cplusplus
00151 }
00152 #endif
00153 #endif