Lines Matching refs:vector

22     Vector vector = {0, 0, 0, NULL, key, compare};  in VECTOR_Make()  local
23 return vector; in VECTOR_Make()
26 void VECTOR_Clear(Vector *vector) in VECTOR_Clear() argument
28 if (vector == NULL) { in VECTOR_Clear()
31 if (vector->data == NULL) { in VECTOR_Clear()
34 SAMGR_Free(vector->data); in VECTOR_Clear()
35 vector->max = 0; in VECTOR_Clear()
36 vector->top = 0; in VECTOR_Clear()
37 vector->free = 0; in VECTOR_Clear()
38 vector->data = NULL; in VECTOR_Clear()
41 int16 VECTOR_Add(Vector *vector, void *element) in VECTOR_Add() argument
43 if (vector == NULL || element == NULL) { in VECTOR_Add()
47 if (vector->top >= vector->max) { in VECTOR_Add()
50 for (i = vector->top - (int16)1; i >= 0; --i) { in VECTOR_Add()
51 if (vector->data[i] == NULL) { in VECTOR_Add()
52 vector->data[i] = element; in VECTOR_Add()
53 vector->free--; in VECTOR_Add()
58 if (vector->max + GROW_STEP < 0) { in VECTOR_Add()
62 void **data = (void **)SAMGR_Malloc(sizeof(void *) * (vector->max + GROW_STEP)); in VECTOR_Add()
67 if (vector->data != NULL) { in VECTOR_Add()
70 (void)memcpy_s(data, sizeof(void *) * (vector->max + GROW_STEP), in VECTOR_Add()
71 vector->data, sizeof(void *) * vector->max); in VECTOR_Add()
72 SAMGR_Free(vector->data); in VECTOR_Add()
74 vector->data = data; in VECTOR_Add()
75 vector->max += GROW_STEP; in VECTOR_Add()
78 vector->data[vector->top] = element; in VECTOR_Add()
79 return vector->top++; in VECTOR_Add()
82 void *VECTOR_At(Vector *vector, int16 index) in VECTOR_At() argument
84 if (vector == NULL || vector->top <= index || index < 0) { in VECTOR_At()
88 return vector->data[index]; in VECTOR_At()
91 void *VECTOR_Swap(Vector *vector, int16 index, void *element) in VECTOR_Swap() argument
93 if (vector == NULL || vector->top <= index || index < 0) { in VECTOR_Swap()
97 vector->free++; in VECTOR_Swap()
99 void *oldElement = vector->data[index]; in VECTOR_Swap()
100 vector->data[index] = element; in VECTOR_Swap()
104 int16 VECTOR_Find(Vector *vector, const void *element) in VECTOR_Find() argument
106 if (vector == NULL || element == NULL) { in VECTOR_Find()
109 return VECTOR_FindByKey(vector, (vector->key == NULL) ? element : vector->key(element)); in VECTOR_Find()
112 int16 VECTOR_FindByKey(Vector *vector, const void *key) in VECTOR_FindByKey() argument
114 if (vector == NULL || key == NULL) { in VECTOR_FindByKey()
119 for (i = 0; i < vector->top; ++i) { in VECTOR_FindByKey()
120 if (vector->data[i] == NULL) { in VECTOR_FindByKey()
124 void *first = (vector->key != NULL) ? vector->key(vector->data[i]) : vector->data[i]; in VECTOR_FindByKey()
129 if (vector->compare == NULL || first == NULL) { in VECTOR_FindByKey()
133 if (vector->compare(first, key) == 0) { in VECTOR_FindByKey()
140 int16 VECTOR_Size(Vector *vector) in VECTOR_Size() argument
142 if (vector == NULL) { in VECTOR_Size()
145 return vector->top; in VECTOR_Size()
148 int16 VECTOR_Num(Vector *vector) in VECTOR_Num() argument
150 if (vector == NULL) { in VECTOR_Num()
153 return vector->top - vector->free; in VECTOR_Num()