Added empty
This commit is contained in:
parent
f78fc942c2
commit
29597aecaf
3 changed files with 30 additions and 5 deletions
|
|
@ -19,6 +19,13 @@ void *dyn_arr_init(size_t item_size, size_t capacity) {
|
|||
return dyna_ptr;
|
||||
}
|
||||
|
||||
bool dyna_empty(void *array) {
|
||||
if (dyna_length(array) == 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void *dyna_ensure_capacity(void *array, size_t item_count, size_t item_size) {
|
||||
dyna_header *header = dyna_get_header(array);
|
||||
size_t minimum_capacity = header->length + item_count;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,29 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define ARRAY_INITIAL_CAPACITY 4
|
||||
|
||||
/* TODO:
|
||||
* Functions to implement to match what I want:
|
||||
* - Capacity
|
||||
* - shrink capacity to size
|
||||
* - Modifiers
|
||||
* - clear
|
||||
* - insert
|
||||
* - (optional) insert range
|
||||
* - pop
|
||||
* - (optional) swap
|
||||
* - (optional) resize
|
||||
*/
|
||||
|
||||
typedef struct dyna_header {
|
||||
size_t capacity;
|
||||
size_t length;
|
||||
} dyna_header;
|
||||
|
||||
// Initialisation
|
||||
#define dyna_init(T) (T *)dyn_arr_init(sizeof(T), ARRAY_INITIAL_CAPACITY)
|
||||
void *dyn_arr_init(size_t item_size, size_t capacity);
|
||||
|
||||
|
|
@ -17,8 +32,9 @@ void *dyn_arr_init(size_t item_size, size_t capacity);
|
|||
(array)[dyna_get_header(array)->length] = (value), \
|
||||
&(array)[dyna_get_header(array)->length++])
|
||||
|
||||
// Get meta data
|
||||
#define dyna_get_header(array) ((dyna_header *)(array)-1)
|
||||
#define dyna_length(array) (array_header(array)->length)
|
||||
#define dyna_capacity(array) (array_header(array)->capacity)
|
||||
|
||||
#define dyna_length(array) (dyna_get_header(array)->length)
|
||||
#define dyna_capacity(array) (dyna_get_header(array)->capacity)
|
||||
bool dyna_empty(void* array);
|
||||
void *dyna_ensure_capacity(void *array, size_t item_count, size_t item_size);
|
||||
|
|
|
|||
|
|
@ -4,11 +4,13 @@
|
|||
|
||||
int main() {
|
||||
int *dyna_array = dyna_init(int);
|
||||
printf("empty %d\n", dyna_empty(dyna_array));
|
||||
|
||||
for (int i = 0; i < 999999999; i++) {
|
||||
dyna_append(dyna_array, i);
|
||||
}
|
||||
printf("capacity %zu\n", dyna_get_header(dyna_array)->capacity);
|
||||
printf("capacity %zu\n", dyna_capacity(dyna_array));
|
||||
printf("empty %d\n", dyna_empty(dyna_array));
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue