• Home
  • Raw
  • Download

Lines Matching refs:vector

41 u_vector_init_pow2(struct u_vector *vector,  in u_vector_init_pow2()  argument
48 vector->head = 0; in u_vector_init_pow2()
49 vector->tail = 0; in u_vector_init_pow2()
50 vector->element_size = element_size; in u_vector_init_pow2()
51 vector->size = element_size * initial_element_count; in u_vector_init_pow2()
52 vector->data = malloc(vector->size); in u_vector_init_pow2()
54 return vector->data != NULL; in u_vector_init_pow2()
58 u_vector_add(struct u_vector *vector) in u_vector_add() argument
63 if (vector->head - vector->tail == vector->size) { in u_vector_add()
64 size = vector->size * 2; in u_vector_add()
68 src_tail = vector->tail & (vector->size - 1); in u_vector_add()
69 dst_tail = vector->tail & (size - 1); in u_vector_add()
74 memcpy((char *)data + dst_tail, vector->data, vector->size); in u_vector_add()
81 split = u_align_u32(vector->tail, vector->size); in u_vector_add()
82 assert(vector->tail <= split && split < vector->head); in u_vector_add()
83 memcpy((char *)data + dst_tail, (char *)vector->data + src_tail, in u_vector_add()
84 split - vector->tail); in u_vector_add()
85 memcpy((char *)data + (split & (size - 1)), vector->data, in u_vector_add()
86 vector->head - split); in u_vector_add()
88 free(vector->data); in u_vector_add()
89 vector->data = data; in u_vector_add()
90 vector->size = size; in u_vector_add()
93 assert(vector->head - vector->tail < vector->size); in u_vector_add()
95 offset = vector->head & (vector->size - 1); in u_vector_add()
96 vector->head += vector->element_size; in u_vector_add()
98 return (char *)vector->data + offset; in u_vector_add()
102 u_vector_remove(struct u_vector *vector) in u_vector_remove() argument
106 if (vector->head == vector->tail) in u_vector_remove()
109 assert(vector->head - vector->tail <= vector->size); in u_vector_remove()
111 offset = vector->tail & (vector->size - 1); in u_vector_remove()
112 vector->tail += vector->element_size; in u_vector_remove()
114 return (char *)vector->data + offset; in u_vector_remove()