00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXUTIL_LINKED_LIST_H
00019 #define AXUTIL_LINKED_LIST_H
00020
00026 #include <axutil_utils_defines.h>
00027 #include <axutil_env.h>
00028
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033
00034 typedef struct axutil_linked_list axutil_linked_list_t;
00035
00045 typedef struct entry_s
00046 {
00048 void *data;
00049
00051 struct entry_s *next;
00052
00054 struct entry_s *previous;
00055
00056 }
00057 entry_t;
00058
00062 AXIS2_EXTERN axutil_linked_list_t* AXIS2_CALL
00063 axutil_linked_list_create(const axutil_env_t *env);
00064
00065 AXIS2_EXTERN void AXIS2_CALL
00066 axutil_linked_list_free(axutil_linked_list_t *linked_list,
00067 const axutil_env_t *env);
00068
00081 AXIS2_EXTERN entry_t * AXIS2_CALL
00082 axutil_linked_list_get_entry(axutil_linked_list_t *linked_list,
00083 const axutil_env_t *env,
00084 int n);
00085
00092 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093 axutil_linked_list_remove_entry(axutil_linked_list_t *linked_list,
00094 const axutil_env_t *env,
00095 entry_t *e);
00096
00097
00103 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00104 axutil_linked_list_check_bounds_inclusive(axutil_linked_list_t *linked_list,
00105 const axutil_env_t *env,
00106 int index);
00107
00113 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00114 axutil_linked_list_check_bounds_exclusive(axutil_linked_list_t *linked_list,
00115 const axutil_env_t *env,
00116 int index);
00117
00123 AXIS2_EXTERN void * AXIS2_CALL
00124 axutil_linked_list_get_first(axutil_linked_list_t *linked_list,
00125 const axutil_env_t *env);
00126
00132 AXIS2_EXTERN void * AXIS2_CALL
00133 axutil_linked_list_get_last(axutil_linked_list_t *linked_list,
00134 const axutil_env_t *env);
00135
00141 AXIS2_EXTERN void * AXIS2_CALL
00142 axutil_linked_list_remove_first(axutil_linked_list_t *linked_list,
00143 const axutil_env_t *env);
00144
00150 AXIS2_EXTERN void * AXIS2_CALL
00151 axutil_linked_list_remove_last(axutil_linked_list_t *linked_list,
00152 const axutil_env_t *env);
00153
00159 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00160 axutil_linked_list_add_first(axutil_linked_list_t *linked_list,
00161 const axutil_env_t *env,
00162 void *o);
00163
00169 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00170 axutil_linked_list_add_last(axutil_linked_list_t *linked_list,
00171 const axutil_env_t *env,
00172 void *o);
00173
00181 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00182 axutil_linked_list_contains(axutil_linked_list_t *linked_list,
00183 const axutil_env_t *env,
00184 void *o);
00185
00191 AXIS2_EXTERN int AXIS2_CALL
00192 axutil_linked_list_size(axutil_linked_list_t *linked_list,
00193 const axutil_env_t *env);
00194
00201 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00202 axutil_linked_list_add(axutil_linked_list_t *linked_list,
00203 const axutil_env_t *env,
00204 void *o);
00205
00213 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00214 axutil_linked_list_remove(axutil_linked_list_t *linked_list,
00215 const axutil_env_t *env,
00216 void *o);
00217
00221 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00222 axutil_linked_list_clear(axutil_linked_list_t *linked_list,
00223 const axutil_env_t *env);
00224
00231 AXIS2_EXTERN void * AXIS2_CALL
00232 axutil_linked_list_get(axutil_linked_list_t *linked_list,
00233 const axutil_env_t *env,
00234 int index);
00235
00243 AXIS2_EXTERN void * AXIS2_CALL
00244 axutil_linked_list_set(axutil_linked_list_t *linked_list,
00245 const axutil_env_t *env,
00246 int index,
00247 void *o);
00248
00255 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00256 axutil_linked_list_add_at_index(axutil_linked_list_t *linked_list,
00257 const axutil_env_t *env,
00258 int index,
00259 void *o);
00260
00267 AXIS2_EXTERN void * AXIS2_CALL
00268 axutil_linked_list_remove_at_index(axutil_linked_list_t *linked_list,
00269 const axutil_env_t *env,
00270 int index);
00271
00278 AXIS2_EXTERN int AXIS2_CALL
00279 axutil_linked_list_index_of(axutil_linked_list_t *linked_list,
00280 const axutil_env_t *env,
00281 void *o);
00282
00289 AXIS2_EXTERN int AXIS2_CALL
00290 axutil_linked_list_last_index_of(axutil_linked_list_t *linked_list,
00291 const axutil_env_t *env,
00292 void *o);
00293
00299 AXIS2_EXTERN void ** AXIS2_CALL
00300 axutil_linked_list_to_array(axutil_linked_list_t *linked_list,
00301 const axutil_env_t *env);
00302
00303 #ifdef __cplusplus
00304 }
00305 #endif
00306
00307 #endif