00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef AXUTIL_LINKED_LIST_H
00020 #define AXUTIL_LINKED_LIST_H
00021
00027 #include <axutil_utils_defines.h>
00028 #include <axutil_env.h>
00029
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034
00035 typedef struct axutil_linked_list axutil_linked_list_t;
00036
00046 typedef struct entry_s
00047 {
00048
00050 void *data;
00051
00053 struct entry_s *next;
00054
00056 struct entry_s *previous;
00057
00058 }
00059 entry_t;
00060
00064 AXIS2_EXTERN axutil_linked_list_t *AXIS2_CALL
00065 axutil_linked_list_create(
00066 const axutil_env_t * env);
00067
00068 AXIS2_EXTERN void AXIS2_CALL
00069 axutil_linked_list_free(
00070 axutil_linked_list_t * linked_list,
00071 const axutil_env_t * env);
00072
00085 AXIS2_EXTERN entry_t *AXIS2_CALL
00086 axutil_linked_list_get_entry(
00087 axutil_linked_list_t * linked_list,
00088 const axutil_env_t * env,
00089 int n);
00090
00097 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00098 axutil_linked_list_remove_entry(
00099 axutil_linked_list_t * linked_list,
00100 const axutil_env_t * env,
00101 entry_t * e);
00102
00108 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00109
00110 axutil_linked_list_check_bounds_inclusive(
00111 axutil_linked_list_t * linked_list,
00112 const axutil_env_t * env,
00113 int index);
00114
00120 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00121
00122 axutil_linked_list_check_bounds_exclusive(
00123 axutil_linked_list_t * linked_list,
00124 const axutil_env_t * env,
00125 int index);
00126
00132 AXIS2_EXTERN void *AXIS2_CALL
00133 axutil_linked_list_get_first(
00134 axutil_linked_list_t * linked_list,
00135 const axutil_env_t * env);
00136
00142 AXIS2_EXTERN void *AXIS2_CALL
00143 axutil_linked_list_get_last(
00144 axutil_linked_list_t * linked_list,
00145 const axutil_env_t * env);
00146
00152 AXIS2_EXTERN void *AXIS2_CALL
00153 axutil_linked_list_remove_first(
00154 axutil_linked_list_t * linked_list,
00155 const axutil_env_t * env);
00156
00162 AXIS2_EXTERN void *AXIS2_CALL
00163 axutil_linked_list_remove_last(
00164 axutil_linked_list_t * linked_list,
00165 const axutil_env_t * env);
00166
00172 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00173 axutil_linked_list_add_first(
00174 axutil_linked_list_t * linked_list,
00175 const axutil_env_t * env,
00176 void *o);
00177
00183 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00184 axutil_linked_list_add_last(
00185 axutil_linked_list_t * linked_list,
00186 const axutil_env_t * env,
00187 void *o);
00188
00196 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00197 axutil_linked_list_contains(
00198 axutil_linked_list_t * linked_list,
00199 const axutil_env_t * env,
00200 void *o);
00201
00207 AXIS2_EXTERN int AXIS2_CALL
00208 axutil_linked_list_size(
00209 axutil_linked_list_t * linked_list,
00210 const axutil_env_t * env);
00211
00218 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00219 axutil_linked_list_add(
00220 axutil_linked_list_t * linked_list,
00221 const axutil_env_t * env,
00222 void *o);
00223
00231 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00232 axutil_linked_list_remove(
00233 axutil_linked_list_t * linked_list,
00234 const axutil_env_t * env,
00235 void *o);
00236
00240 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00241 axutil_linked_list_clear(
00242 axutil_linked_list_t * linked_list,
00243 const axutil_env_t * env);
00244
00251 AXIS2_EXTERN void *AXIS2_CALL
00252 axutil_linked_list_get(
00253 axutil_linked_list_t * linked_list,
00254 const axutil_env_t * env,
00255 int index);
00256
00264 AXIS2_EXTERN void *AXIS2_CALL
00265 axutil_linked_list_set(
00266 axutil_linked_list_t * linked_list,
00267 const axutil_env_t * env,
00268 int index,
00269 void *o);
00270
00277 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00278 axutil_linked_list_add_at_index(
00279 axutil_linked_list_t * linked_list,
00280 const axutil_env_t * env,
00281 int index,
00282 void *o);
00283
00290 AXIS2_EXTERN void *AXIS2_CALL
00291 axutil_linked_list_remove_at_index(
00292 axutil_linked_list_t * linked_list,
00293 const axutil_env_t * env,
00294 int index);
00295
00302 AXIS2_EXTERN int AXIS2_CALL
00303 axutil_linked_list_index_of(
00304 axutil_linked_list_t * linked_list,
00305 const axutil_env_t * env,
00306 void *o);
00307
00314 AXIS2_EXTERN int AXIS2_CALL
00315 axutil_linked_list_last_index_of(
00316 axutil_linked_list_t * linked_list,
00317 const axutil_env_t * env,
00318 void *o);
00319
00325 AXIS2_EXTERN void **AXIS2_CALL
00326 axutil_linked_list_to_array(
00327 axutil_linked_list_t * linked_list,
00328 const axutil_env_t * env);
00329
00330 #ifdef __cplusplus
00331 }
00332 #endif
00333
00334 #endif