Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #478
Changes
This change adds memory alignment support to vec which in turn fixes alignment support for components stored in tables.
Changes to vec.
ecs_size_t alignment
argument alongsideecs_size_t size
argument in vec API.ecs_vec_t
stores bothvoid* array
andvoid* mem
.array
is the same as before, it is the pointer to the data.mem
is the original pointer that was allocated, this is used so we have the correct address to be able to realloc or free the memory.size * elem_count + alignment
this is thevoid* mem
pointer and then shifts the pointer in order to have the correct alignment forvoid* array
.memmove
may be necessary in order to correct for a different alignment of the new pointer.This increases the memory usage of both the vec struct and the allocated arrays.
Since hashmap uses vec internally it also now has alignment support.