2 * File : private/vector.h
4 * Copyright 2006,2007 Malek Cherier, Martin Quinson. All right reserved.
6 * This program is free software; you can redistribute it and/or modify it under the terms
7 * of the license (GNU LGPL) which comes with this package.
18 #ifndef __FN_FINALIZE_T_DEFINED
19 typedef int (*fn_finalize_t)(void**);
20 #define __FN_FINALIZE_T_DEFINED
36 * this type represents a vector of void* pointers.
38 typedef struct s_vector
40 int size; /* the number of items of the vector */
41 int capacity; /* the capacity of the vector */
42 void** items; /* the items of the vector */
43 fn_finalize_t fn_finalize; /* a pointer to a function used to cleanup the elements of the vector */
45 }s_vector_t,* vector_t;
48 vector_new(int capacity,fn_finalize_t fn_finalize);
51 vector_clear(vector_t vector);
54 vector_free(vector_t* vector_ptr);
57 vector_is_empty(vector_t vector);
60 vector_get_at(vector_t vector, int pos);
63 vector_get_size(vector_t vector);
66 vector_get_front(vector_t vector);
69 vector_get_back(vector_t vector);
72 vector_get_capacity_available(vector_t vector);
75 vector_push_back(vector_t vector, void* item);
78 vector_pop_back(vector_t vector);
81 vector_get_upper_bound(vector_t vector);
84 vector_set_at(vector_t vector, int index, void* item);
87 vector_insert(vector_t vector, int index, void* item);
90 vector_erase_at(vector_t vector, int index);
93 vector_erase(vector_t vector, void* item);
96 vector_erase_range(vector_t vector, int first, int last);
99 vector_remove(vector_t vector, void* item);
102 vector_search(vector_t vector, void* item);
105 vector_assign(vector_t dst,vector_t src);
108 vector_get_capacity(vector_t vector);
111 vector_equals(vector_t vector, vector_t other);
114 vector_swap(vector_t vector, vector_t other);
117 vector_clone(vector_t vector);
120 vector_contains(vector_t vector,void* item);
123 vector_reserve(vector_t vector,int size);
126 vector_is_autodelete(vector_t vector);
129 vector_has_capacity_available(vector_t vector);
132 vector_is_full(vector_t vector);
135 vector_get_max_index(vector_t vector);
138 vector_get(vector_t vector);
141 vector_get_at(vector_t vector, int pos);
144 vector_getpos(vector_t vector, int* pos);
147 vector_move_next(vector_t vector);
150 vector_move_prev(vector_t vector);
153 vector_rewind(vector_t vector);
156 vector_seek(vector_t vector, int offset, int whence);
159 vector_set(vector_t vector, void* item);
162 vector_setpos(vector_t vector, int pos);
165 vector_tell(vector_t vector);
168 vector_unwind(vector_t vector);
175 #endif /* !XBT_PRIVATE_VECTOR_PTR_H */