00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef WODEN_NESTED_ELEMENT_H
00018 #define WODEN_NESTED_ELEMENT_H
00019
00035 #include <axis2_allocator.h>
00036 #include <axis2_env.h>
00037 #include <axis2_error.h>
00038 #include <axis2_string.h>
00039 #include <axis2_utils.h>
00040 #include <axis2_hash.h>
00041 #include <axis2_qname.h>
00042 #include <woden.h>
00043 #include <woden_wsdl_element.h>
00044
00045 #ifdef __cplusplus
00046 extern "C"
00047 {
00048 #endif
00049
00050 typedef struct woden_nested_element woden_nested_element_t;
00051 typedef struct woden_nested_element_ops woden_nested_element_ops_t;
00052 struct woden_wsdl_element;
00053
00059 struct woden_nested_element_ops
00060 {
00065 axis2_status_t (AXIS2_CALL *
00066 free) (
00067 void *nested_el,
00068 const axis2_env_t *env);
00069
00070 woden_obj_types_t (AXIS2_CALL *
00071 type) (
00072 void *nested_el,
00073 const axis2_env_t *env);
00074
00075 axis2_status_t (AXIS2_CALL *
00076 set_parent_element) (
00077 void *nested_el,
00078 const axis2_env_t *env,
00079 struct woden_wsdl_element *parent);
00080
00081 void *(AXIS2_CALL *
00082 get_parent_element) (
00083 void *nested_el,
00084 const axis2_env_t *env);
00085
00086 };
00087
00088 struct woden_nested_element
00089 {
00090 woden_wsdl_element_t wsdl_element;
00091 woden_nested_element_ops_t *ops;
00092 };
00093
00094
00095 axis2_status_t AXIS2_CALL
00096 woden_nested_element_resolve_methods(
00097 woden_nested_element_t *nested_element,
00098 const axis2_env_t *env,
00099 axis2_hash_t *methods);
00100
00101
00102 #define WODEN_NESTED_ELEMENT_FREE(nested_el, env) \
00103 (((woden_nested_element_t *) nested_el)->ops->\
00104 free (nested_el, env))
00105
00106 #define WODEN_NESTED_ELEMENT_TYPE(nested_el, env) \
00107 (((woden_nested_element_t *) nested_el)->ops->\
00108 type (nested_el, env))
00109
00110 #define WODEN_NESTED_ELEMENT_SET_PARENT_ELEMENT(nested_el, env, parent) \
00111 (((woden_nested_element_t *) nested_el)->ops->\
00112 set_parent_element(nested_el, env, parent))
00113
00114 #define WODEN_NESTED_ELEMENT_GET_PARENT_ELEMENT(nested_el, env) \
00115 (((woden_nested_element_t *) nested_el)->ops->\
00116 get_parent_element(nested_el, env))
00117
00118
00120 #ifdef __cplusplus
00121 }
00122 #endif
00123 #endif