00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_DESC_H
00019 #define AXIS2_DESC_H
00020
00033 #include <axis2_param_container.h>
00034 #include <axis2_hash.h>
00035 #include <axis2_description.h>
00036
00037 #ifdef __cplusplus
00038 extern "C"
00039 {
00040 #endif
00041
00043 typedef struct axis2_desc_ops axis2_desc_ops_t;
00045 typedef struct axis2_desc axis2_desc_t;
00046
00051 struct axis2_desc_ops
00052 {
00059 axis2_status_t (AXIS2_CALL *
00060 free)(
00061 axis2_desc_t *desc,
00062 const axis2_env_t *env);
00063
00071 axis2_status_t (AXIS2_CALL *
00072 add_param)(
00073 axis2_desc_t *desc,
00074 const axis2_env_t *env,
00075 axis2_param_t *param);
00076
00084 axis2_param_t *(AXIS2_CALL *
00085 get_param) (
00086 const axis2_desc_t *desc,
00087 const axis2_env_t *env,
00088 const axis2_char_t *param_name);
00089
00096 axis2_array_list_t *(AXIS2_CALL *
00097 get_all_params)(
00098 const axis2_desc_t *desc,
00099 const axis2_env_t *env);
00100
00108 axis2_bool_t (AXIS2_CALL *
00109 is_param_locked)(
00110 const axis2_desc_t *desc,
00111 const axis2_env_t *env,
00112 const axis2_char_t *param_name);
00113
00125 axis2_status_t (AXIS2_CALL *
00126 add_child)(
00127 const axis2_desc_t *desc,
00128 const axis2_env_t *env,
00129 const axis2_char_t *key,
00130 const void *child);
00131
00138 axis2_hash_t *(AXIS2_CALL *
00139 get_all_children)(
00140 const axis2_desc_t *desc,
00141 const axis2_env_t *env);
00142
00151 void *(AXIS2_CALL *
00152 get_child)(
00153 const axis2_desc_t *desc,
00154 const axis2_env_t *env,
00155 const axis2_char_t *key);
00156
00164 axis2_status_t (AXIS2_CALL *
00165 remove_child)(
00166 const axis2_desc_t *desc,
00167 const axis2_env_t *env,
00168 const axis2_char_t *key);
00169 };
00170
00174 struct axis2_desc
00175 {
00177 axis2_desc_ops_t *ops;
00178
00179 };
00180
00186 AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
00187 axis2_desc_create (
00188 const axis2_env_t *env);
00189
00192 #define AXIS2_DESC_FREE(desc, env) \
00193 ((desc)->ops->free (desc, env))
00194
00197 #define AXIS2_DESC_ADD_PARAM(desc, env, param) \
00198 ((desc)->ops->add_param (desc, env, param))
00199
00202 #define AXIS2_DESC_GET_PARAM(desc, env, key) \
00203 ((desc)->ops->get_param (desc, env, key))
00204
00207 #define AXIS2_DESC_GET_ALL_PARAMS(desc, env) \
00208 ((desc)->ops->get_all_params (desc, env))
00209
00212 #define AXIS2_DESC_IS_PARAM_LOCKED(desc, env, param_name) \
00213 ((desc)->ops->is_param_locked(desc, env, param_name))
00214
00217 #define AXIS2_DESC_ADD_CHILD(desc, env, key, child) \
00218 ((desc)->ops->add_child(desc, env, key, child))
00219
00222 #define AXIS2_DESC_GET_ALL_CHILDREN(desc, env) \
00223 ((desc)->ops->get_all_children(desc, env))
00224
00227 #define AXIS2_DESC_GET_CHILD(desc, env, key) \
00228 ((desc)->ops->get_child(desc, env, key))
00229
00232 #define AXIS2_DESC_REMOVE_CHILD(desc, env, key) \
00233 ((desc)->ops->remove_child(desc, env, key))
00234
00236 #ifdef __cplusplus
00237 }
00238 #endif
00239 #endif