ev_vec improvements
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
16
ev_vec.h
16
ev_vec.h
@@ -134,8 +134,7 @@ ev_vec_init_impl(
|
|||||||
}) { \
|
}) { \
|
||||||
.meta.length = len, \
|
.meta.length = len, \
|
||||||
.meta.capacity = len, \
|
.meta.capacity = len, \
|
||||||
.meta.typeData.size = sizeof(T), \
|
.meta.typeData = TypeData(T), \
|
||||||
.meta.typeData.alignment = EV_ALIGNOF(T), \
|
|
||||||
.meta.allocationType = EV_VEC_ALLOCATION_TYPE_STACK, \
|
.meta.allocationType = EV_VEC_ALLOCATION_TYPE_STACK, \
|
||||||
.data = __VA_ARGS__ \
|
.data = __VA_ARGS__ \
|
||||||
}).data
|
}).data
|
||||||
@@ -147,8 +146,7 @@ ev_vec_init_impl(
|
|||||||
}) { \
|
}) { \
|
||||||
.meta.length = 0, \
|
.meta.length = 0, \
|
||||||
.meta.capacity = cap, \
|
.meta.capacity = cap, \
|
||||||
.meta.typeData.size = sizeof(T), \
|
.meta.typeData = TypeData(T), \
|
||||||
.meta.typeData.alignment = EV_ALIGNOF(T), \
|
|
||||||
.meta.allocationType = EV_VEC_ALLOCATION_TYPE_STACK, \
|
.meta.allocationType = EV_VEC_ALLOCATION_TYPE_STACK, \
|
||||||
.data = __EV_VEC_EMPTY_ARRAY \
|
.data = __EV_VEC_EMPTY_ARRAY \
|
||||||
}).data
|
}).data
|
||||||
@@ -424,20 +422,18 @@ ev_vec_find(
|
|||||||
{
|
{
|
||||||
__ev_vec_getmeta(*v)
|
__ev_vec_getmeta(*v)
|
||||||
if(metadata->typeData.equal_fn) {
|
if(metadata->typeData.equal_fn) {
|
||||||
for(u32 i = 0; i < metadata->length; i++) {
|
for (void *elem = ev_vec_iter_begin(v); elem != ev_vec_iter_end(v); ev_vec_iter_next(v, &elem)) {
|
||||||
void *elem = *v + metadata->typeData.size * i;
|
|
||||||
if(metadata->typeData.equal_fn(elem, val))
|
if(metadata->typeData.equal_fn(elem, val))
|
||||||
{
|
{
|
||||||
return i;
|
return (elem - *v) / metadata->typeData.size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(u32 i = 0; i < metadata->length; i++) {
|
for (void *elem = ev_vec_iter_begin(v); elem != ev_vec_iter_end(v); ev_vec_iter_next(v, &elem)) {
|
||||||
void *elem = *v + metadata->typeData.size * i;
|
|
||||||
if(memcmp(elem, val, metadata->typeData.size) == 0)
|
if(memcmp(elem, val, metadata->typeData.size) == 0)
|
||||||
{
|
{
|
||||||
return i;
|
return (elem - *v) / metadata->typeData.size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user