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