00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_DESC_H
00018 #define AXIS2_DESC_H
00019
00032 #include <axis2_param_container.h>
00033 #include <axis2_hash.h>
00034 #include <axis2_description.h>
00035
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040
00042 typedef struct axis2_desc_ops axis2_desc_ops_t;
00044 typedef struct axis2_desc axis2_desc_t;
00045
00050 AXIS2_DECLARE_DATA struct axis2_desc_ops
00051 {
00058 axis2_status_t (AXIS2_CALL *
00059 free)(
00060 axis2_desc_t *desc,
00061 const axis2_env_t *env);
00062
00070 axis2_status_t (AXIS2_CALL *
00071 add_param)(
00072 axis2_desc_t *desc,
00073 const axis2_env_t *env,
00074 axis2_param_t *param);
00075
00083 axis2_param_t *(AXIS2_CALL *
00084 get_param) (
00085 const axis2_desc_t *desc,
00086 const axis2_env_t *env,
00087 const axis2_char_t *param_name);
00088
00095 axis2_array_list_t *(AXIS2_CALL *
00096 get_all_params)(
00097 const axis2_desc_t *desc,
00098 const axis2_env_t *env);
00099
00107 axis2_bool_t (AXIS2_CALL *
00108 is_param_locked)(
00109 const axis2_desc_t *desc,
00110 const axis2_env_t *env,
00111 const axis2_char_t *param_name);
00112
00124 axis2_status_t (AXIS2_CALL *
00125 add_child)(
00126 const axis2_desc_t *desc,
00127 const axis2_env_t *env,
00128 const axis2_char_t *key,
00129 const void *child);
00130
00137 axis2_hash_t *(AXIS2_CALL *
00138 get_all_children)(
00139 const axis2_desc_t *desc,
00140 const axis2_env_t *env);
00141
00150 void *(AXIS2_CALL *
00151 get_child)(
00152 const axis2_desc_t *desc,
00153 const axis2_env_t *env,
00154 const axis2_char_t *key);
00155
00163 axis2_status_t (AXIS2_CALL *
00164 remove_child)(
00165 const axis2_desc_t *desc,
00166 const axis2_env_t *env,
00167 const axis2_char_t *key);
00168 };
00169
00173 AXIS2_DECLARE_DATA struct axis2_desc
00174 {
00176 axis2_desc_ops_t *ops;
00177
00178 };
00179
00185 AXIS2_EXTERN axis2_desc_t *AXIS2_CALL
00186 axis2_desc_create (
00187 const axis2_env_t *env);
00188
00191 #define AXIS2_DESC_FREE(desc, env) \
00192 ((desc)->ops->free (desc, env))
00193
00196 #define AXIS2_DESC_ADD_PARAM(desc, env, param) \
00197 ((desc)->ops->add_param (desc, env, param))
00198
00201 #define AXIS2_DESC_GET_PARAM(desc, env, key) \
00202 ((desc)->ops->get_param (desc, env, key))
00203
00206 #define AXIS2_DESC_GET_ALL_PARAMS(desc, env) \
00207 ((desc)->ops->get_all_params (desc, env))
00208
00211 #define AXIS2_DESC_IS_PARAM_LOCKED(desc, env, param_name) \
00212 ((desc)->ops->is_param_locked(desc, env, param_name))
00213
00216 #define AXIS2_DESC_ADD_CHILD(desc, env, key, child) \
00217 ((desc)->ops->add_child(desc, env, key, child))
00218
00221 #define AXIS2_DESC_GET_ALL_CHILDREN(desc, env) \
00222 ((desc)->ops->get_all_children(desc, env))
00223
00226 #define AXIS2_DESC_GET_CHILD(desc, env, key) \
00227 ((desc)->ops->get_child(desc, env, key))
00228
00231 #define AXIS2_DESC_REMOVE_CHILD(desc, env, key) \
00232 ((desc)->ops->remove_child(desc, env, key))
00233
00235 #ifdef __cplusplus
00236 }
00237 #endif
00238 #endif