00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_GENERIC_OBJ_H
00018 #define AXIS2_GENERIC_OBJ_H
00019
00020 #include <axis2_defines.h>
00021 #include <axis2_error.h>
00022 #include <axis2_env.h>
00023 #include <axis2_utils.h>
00024
00025
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030
00031 typedef struct axis2_generic_obj axis2_generic_obj_t;
00032 typedef struct axis2_generic_obj_ops axis2_generic_obj_ops_t;
00033
00044 AXIS2_DECLARE_DATA struct axis2_generic_obj_ops
00045 {
00046
00047 axis2_status_t (AXIS2_CALL *
00048 free) (
00049 axis2_generic_obj_t *generic_obj,
00050 const axis2_env_t *env);
00051
00052 axis2_status_t (AXIS2_CALL *
00053 set_scope) (
00054 axis2_generic_obj_t *generic_obj,
00055 const axis2_env_t *env,
00056 axis2_scope_t scope);
00057
00058 axis2_status_t (AXIS2_CALL *
00059 set_free_func) (
00060 axis2_generic_obj_t *generic_obj,
00061 const axis2_env_t *env,
00062 AXIS2_FREE_VOID_ARG free_func);
00063
00064 axis2_status_t (AXIS2_CALL *
00065 set_value) (
00066 axis2_generic_obj_t *generic_obj,
00067 const axis2_env_t *env,
00068 void *value);
00069
00070 void *(AXIS2_CALL *
00071 get_value) (
00072 axis2_generic_obj_t *generic_obj,
00073 const axis2_env_t *env);
00074
00075 };
00076
00077
00081 AXIS2_DECLARE_DATA struct axis2_generic_obj
00082 {
00083 axis2_generic_obj_ops_t *ops;
00084 };
00085
00090 AXIS2_EXTERN axis2_generic_obj_t * AXIS2_CALL
00091 axis2_generic_obj_create(const axis2_env_t *env);
00092
00093
00094
00095 #define AXIS2_GENERIC_OBJ_FREE(generic_obj, env) \
00096 ((generic_obj)->ops->free (generic_obj, env))
00097
00098 #define AXIS2_GENERIC_OBJ_SET_FREE_FUNC(generic_obj, env, free_func) \
00099 ((generic_obj)->ops->set_free_func (generic_obj, env, free_func))
00100
00101 #define AXIS2_GENERIC_OBJ_SET_SCOPE(generic_obj, env, scope) \
00102 ((generic_obj)->ops->set_scope (generic_obj, env, scope))
00103
00104 #define AXIS2_GENERIC_OBJ_SET_VALUE(generic_obj, env, value) \
00105 ((generic_obj)->ops->set_value (generic_obj, env, value))
00106
00107 #define AXIS2_GENERIC_OBJ_GET_VALUE(generic_obj, env) \
00108 ((generic_obj)->ops->get_value(generic_obj, env))
00109
00110
00111
00112
00113
00116 #ifdef __cplusplus
00117 }
00118 #endif
00119
00120 #endif