Lines Matching full:vector
29 #include "include/vector.h"
32 struct vector *vector, in dal_vector_construct() argument
37 vector->container = NULL; in dal_vector_construct()
45 vector->container = kcalloc(capacity, struct_size, GFP_KERNEL); in dal_vector_construct()
46 if (vector->container == NULL) in dal_vector_construct()
48 vector->capacity = capacity; in dal_vector_construct()
49 vector->struct_size = struct_size; in dal_vector_construct()
50 vector->count = 0; in dal_vector_construct()
51 vector->ctx = ctx; in dal_vector_construct()
56 struct vector *vector, in dal_vector_presized_costruct() argument
64 vector->container = NULL; in dal_vector_presized_costruct()
72 vector->container = kcalloc(count, struct_size, GFP_KERNEL); in dal_vector_presized_costruct()
74 if (vector->container == NULL) in dal_vector_presized_costruct()
83 vector->container + i * struct_size, in dal_vector_presized_costruct()
88 vector->capacity = count; in dal_vector_presized_costruct()
89 vector->struct_size = struct_size; in dal_vector_presized_costruct()
90 vector->count = count; in dal_vector_presized_costruct()
94 struct vector *dal_vector_presized_create( in dal_vector_presized_create()
100 struct vector *vector = kzalloc(sizeof(struct vector), GFP_KERNEL); in dal_vector_presized_create() local
102 if (vector == NULL) in dal_vector_presized_create()
106 vector, ctx, size, initial_value, struct_size)) in dal_vector_presized_create()
107 return vector; in dal_vector_presized_create()
110 kfree(vector); in dal_vector_presized_create()
114 struct vector *dal_vector_create( in dal_vector_create()
119 struct vector *vector = kzalloc(sizeof(struct vector), GFP_KERNEL); in dal_vector_create() local
121 if (vector == NULL) in dal_vector_create()
124 if (dal_vector_construct(vector, ctx, capacity, struct_size)) in dal_vector_create()
125 return vector; in dal_vector_create()
128 kfree(vector); in dal_vector_create()
133 struct vector *vector) in dal_vector_destruct() argument
135 kfree(vector->container); in dal_vector_destruct()
136 vector->count = 0; in dal_vector_destruct()
137 vector->capacity = 0; in dal_vector_destruct()
141 struct vector **vector) in dal_vector_destroy() argument
143 if (vector == NULL || *vector == NULL) in dal_vector_destroy()
145 dal_vector_destruct(*vector); in dal_vector_destroy()
146 kfree(*vector); in dal_vector_destroy()
147 *vector = NULL; in dal_vector_destroy()
151 const struct vector *vector) in dal_vector_get_count() argument
153 return vector->count; in dal_vector_get_count()
157 const struct vector *vector, in dal_vector_at_index() argument
160 if (vector->container == NULL || index >= vector->count) in dal_vector_at_index()
162 return vector->container + (index * vector->struct_size); in dal_vector_at_index()
166 struct vector *vector, in dal_vector_remove_at_index() argument
169 if (index >= vector->count) in dal_vector_remove_at_index()
172 if (index != vector->count - 1) in dal_vector_remove_at_index()
174 vector->container + (index * vector->struct_size), in dal_vector_remove_at_index()
175 vector->container + ((index + 1) * vector->struct_size), in dal_vector_remove_at_index()
176 (vector->count - index - 1) * vector->struct_size); in dal_vector_remove_at_index()
177 vector->count -= 1; in dal_vector_remove_at_index()
183 const struct vector *vector, in dal_vector_set_at_index() argument
187 void *where = dal_vector_at_index(vector, index); in dal_vector_set_at_index()
196 vector->struct_size); in dal_vector_set_at_index()
206 struct vector *vector, in dal_vector_insert_at() argument
212 if (vector->count == vector->capacity) { in dal_vector_insert_at()
214 vector, in dal_vector_insert_at()
215 calc_increased_capacity(vector->capacity))) in dal_vector_insert_at()
219 insert_address = vector->container + (vector->struct_size * position); in dal_vector_insert_at()
221 if (vector->count && position < vector->count) in dal_vector_insert_at()
223 insert_address + vector->struct_size, in dal_vector_insert_at()
225 vector->struct_size * (vector->count - position)); in dal_vector_insert_at()
230 vector->struct_size); in dal_vector_insert_at()
232 vector->count++; in dal_vector_insert_at()
238 struct vector *vector, in dal_vector_append() argument
241 return dal_vector_insert_at(vector, item, vector->count); in dal_vector_append()
244 struct vector *dal_vector_clone( in dal_vector_clone()
245 const struct vector *vector) in dal_vector_clone() argument
247 struct vector *vec_cloned; in dal_vector_clone()
250 /* create new vector */ in dal_vector_clone()
251 count = dal_vector_get_count(vector); in dal_vector_clone()
254 /* when count is 0 we still want to create clone of the vector in dal_vector_clone()
257 vector->ctx, in dal_vector_clone()
258 vector->capacity, in dal_vector_clone()
259 vector->struct_size); in dal_vector_clone()
262 * original vector was created. in dal_vector_clone()
263 * The owner of original vector must know how to treat the new in dal_vector_clone()
264 * vector - as "presized" or as "regular". in dal_vector_clone()
265 * But from vector point of view it doesn't matter. */ in dal_vector_clone()
266 vec_cloned = dal_vector_presized_create(vector->ctx, count, in dal_vector_clone()
268 vector->struct_size); in dal_vector_clone()
275 /* copy vector's data */ in dal_vector_clone()
276 memmove(vec_cloned->container, vector->container, in dal_vector_clone()
282 uint32_t dal_vector_capacity(const struct vector *vector) in dal_vector_capacity() argument
284 return vector->capacity; in dal_vector_capacity()
287 bool dal_vector_reserve(struct vector *vector, uint32_t capacity) in dal_vector_reserve() argument
291 if (capacity <= vector->capacity) in dal_vector_reserve()
294 new_container = krealloc(vector->container, in dal_vector_reserve()
295 capacity * vector->struct_size, GFP_KERNEL); in dal_vector_reserve()
298 vector->container = new_container; in dal_vector_reserve()
299 vector->capacity = capacity; in dal_vector_reserve()
306 void dal_vector_clear(struct vector *vector) in dal_vector_clear() argument
308 vector->count = 0; in dal_vector_clear()