00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef WODEN_ATTR_EXTENSIBLE_H
00019 #define WODEN_ATTR_EXTENSIBLE_H
00020
00028 #include <axis2_allocator.h>
00029 #include <axis2_env.h>
00030 #include <axis2_error.h>
00031 #include <axis2_string.h>
00032 #include <axis2_utils.h>
00033 #include <axis2_hash.h>
00034 #include <axis2_qname.h>
00035 #include <axis2_uri.h>
00036 #include <axis2_array_list.h>
00037 #include <woden.h>
00038
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043
00044 typedef struct woden_attr_extensible woden_attr_extensible_t;
00045 typedef struct woden_attr_extensible_ops woden_attr_extensible_ops_t;
00046 struct woden_xml_attr;
00047
00053 struct woden_attr_extensible_ops
00054 {
00059 axis2_status_t (AXIS2_CALL *
00060 free) (
00061 void *attr_extensible,
00062 const axis2_env_t *env);
00063
00064 axis2_status_t (AXIS2_CALL *
00065 to_attr_extensible_free) (
00066 void *attr_extensible,
00067 const axis2_env_t *env);
00068
00069 axis2_hash_t *(AXIS2_CALL *
00070 super_objs) (
00071 void *attr_extensible,
00072 const axis2_env_t *env);
00073
00074 woden_obj_types_t (AXIS2_CALL *
00075 type) (
00076 void *attr_extensible,
00077 const axis2_env_t *env);
00078
00079 axis2_status_t (AXIS2_CALL *
00080 set_ext_attr) (
00081 void *extensible,
00082 const axis2_env_t *env,
00083 axis2_qname_t *attr_type,
00084 struct woden_xml_attr *attr);
00085
00086 void *(AXIS2_CALL *
00087 get_ext_attr) (
00088 void *extensible,
00089 const axis2_env_t *env,
00090 axis2_qname_t *attr_type);
00091
00092 axis2_array_list_t *(AXIS2_CALL *
00093 get_ext_attrs) (
00094 void *extensible,
00095 const axis2_env_t *env);
00096
00097 axis2_array_list_t *(AXIS2_CALL *
00098 get_ext_attrs_for_namespace) (
00099 void *extensible,
00100 const axis2_env_t *env,
00101 axis2_uri_t *namespc);
00102
00103 axis2_bool_t (AXIS2_CALL *
00104 has_ext_attrs_for_namespace) (
00105 void *extensible,
00106 const axis2_env_t *env,
00107 axis2_uri_t *namespc);
00108
00109
00110 };
00111
00112 struct woden_attr_extensible
00113 {
00114 woden_attr_extensible_ops_t *ops;
00115 };
00116
00117 AXIS2_EXTERN woden_attr_extensible_t * AXIS2_CALL
00118 woden_attr_extensible_create(const axis2_env_t *env);
00119
00124 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00125 woden_attr_extensible_resolve_methods(
00126 woden_attr_extensible_t *extensible,
00127 const axis2_env_t *env,
00128 woden_attr_extensible_t *extensible_impl,
00129 axis2_hash_t *methods);
00130
00131 #define WODEN_ATTR_EXTENSIBLE_FREE(extensible, env) \
00132 (((woden_attr_extensible_t *) extensible)->ops->\
00133 free (extensible, env))
00134
00135 #define WODEN_ATTR_EXTENSIBLE_TO_ATTR_EXTENSIBLE_FREE(extensible, env) \
00136 (((woden_attr_extensible_t *) extensible)->ops->\
00137 to_attr_extensible_free (extensible, env))
00138
00139 #define WODEN_ATTR_EXTENSIBLE_SUPER_OBJS(extensible, env) \
00140 (((woden_attr_extensible_t *) extensible)->ops->\
00141 super_objs (extensible, env))
00142
00143 #define WODEN_ATTR_EXTENSIBLE_TYPE(extensible, env) \
00144 (((woden_attr_extensible_t *) extensible)->ops->\
00145 type (extensible, env))
00146
00147 #define WODEN_ATTR_EXTENSIBLE_SET_EXT_ATTR(extensible, env, attr_type, \
00148 attr) \
00149 (((woden_attr_extensible_t *) extensible)->ops->\
00150 set_ext_attr(extensible, env, attr_type, attr))
00151
00152 #define WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTR(extensible, env, \
00153 attr_type) \
00154 (((woden_attr_extensible_t *) extensible)->ops->\
00155 get_ext_attr(extensible, env, attr_type))
00156
00157 #define WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTRS(extensible, env) \
00158 (((woden_attr_extensible_t *) extensible)->ops->\
00159 get_ext_attrs(extensible, env))
00160
00161 #define WODEN_ATTR_EXTENSIBLE_GET_EXT_ATTRS_FOR_NAMESPACE(extensible, \
00162 env, namespc) \
00163 (((woden_attr_extensible_t *) extensible)->ops->\
00164 get_ext_attrs_for_namespace(extensible, env, namespc))
00165
00166 #define WODEN_ATTR_EXTENSIBLE_HAS_EXT_ATTRS_FOR_NAMESPACE(\
00167 extensible, env, namespc) \
00168 (((woden_attr_extensible_t *) extensible)->ops->\
00169 has_ext_attrs_for_namespace(extensible, env, namespc))
00170
00171
00173 #ifdef __cplusplus
00174 }
00175 #endif
00176 #endif