refactor dynamic array: update index types to size_t for better compatibility and memory safety
This commit is contained in:
@@ -3,16 +3,16 @@
|
||||
#define DEFAULT_ARRAY_SIZE 10
|
||||
|
||||
|
||||
typedef struct Array {
|
||||
typedef struct {
|
||||
void *value;
|
||||
size_t element_size;
|
||||
|
||||
int size;
|
||||
int capacity;
|
||||
size_t size;
|
||||
size_t capacity;
|
||||
} Array;
|
||||
|
||||
|
||||
typedef struct ArrayCreateOptions {
|
||||
typedef struct {
|
||||
int initial_size;
|
||||
size_t element_size;
|
||||
} ArrayCreateOptions;
|
||||
@@ -27,16 +27,28 @@ Array *array_create(const ArrayCreateOptions *options);
|
||||
void array_deconstructor(Array **pp_array);
|
||||
|
||||
|
||||
void array_resize(Array *p_array, int new_size);
|
||||
void array_resize(Array *p_array, size_t new_size);
|
||||
|
||||
|
||||
void *array_get_value(const Array *p_array, int index);
|
||||
void *array_get_value(const Array *p_array, size_t index);
|
||||
|
||||
|
||||
void array_set_value(Array *p_array, int index, const void *value);
|
||||
void array_set_value(Array *p_array, size_t index, const void *value);
|
||||
|
||||
|
||||
int array_get_size(const Array *p_array);
|
||||
size_t array_get_size(const Array *p_array);
|
||||
|
||||
|
||||
int array_get_capacity(const Array *p_array);
|
||||
size_t array_get_capacity(const Array *p_array);
|
||||
|
||||
|
||||
|
||||
#define array_get_value_as(type, arr, idx) \
|
||||
(sizeof(type) == (arr)->element_size) ? \
|
||||
(type*)array_get_value(arr, idx) : \
|
||||
NULL
|
||||
|
||||
#define array_set_value_as(type, arr, idx, value) \
|
||||
((sizeof(type) == (arr)->element_size) ? \
|
||||
(array_set_value((arr), (idx), (value)), 0) : \
|
||||
-1)
|
||||
Reference in New Issue
Block a user