diff options
| author | ame <[email protected]> | 2024-01-25 13:27:29 -0600 |
|---|---|---|
| committer | ame <[email protected]> | 2024-01-25 13:27:29 -0600 |
| commit | 39f9aa57e59ed2311b785c83cd3d07e5eeb5fb26 (patch) | |
| tree | fa56cbcc136b5ab27d27c2c4e4fdc2935ecabc8f /src/parray.c | |
| parent | 91957f73e6459a549926e614144101e16043e825 (diff) | |
working... sometimes
Diffstat (limited to 'src/parray.c')
| -rw-r--r-- | src/parray.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/parray.c b/src/parray.c new file mode 100644 index 0000000..7ff1e6f --- /dev/null +++ b/src/parray.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include "i_str.h" +#include <stdlib.h> +#include <string.h> + +#include "parray.h" + +parray_t* parray_init(){ + parray_t* awa = malloc(sizeof * awa); + awa->P = malloc(sizeof * awa->P); + awa->len = 0; + return awa; +} + +void parray_set(parray_t* p, char* key, void* value){ + for(int i = 0; i != p->len; i++){ + if(strcmp(p->P[i].key->c, key) == 0){ + p->P[p->len - 1].value = value; + return; + } + } + + p->len++; + p->P = realloc(p->P, sizeof * p->P * (p->len + 1)); + p->P[p->len - 1].key = str_init(key); + p->P[p->len - 1].value = value; +} + +void* parray_get(parray_t* p, char* key){ + for(int i = 0; i != p->len; i++){ + if(strcmp(p->P[i].key->c, key) == 0){ + return p->P[i].value; + } + } + return NULL; +} + +void parray_clear(parray_t* p, int clear_val){ + for(int i = 0; i != p->len; i++){ + str_free(p[i].P->key); + if(clear_val) free(p[i].P->value); + } + free(p->P); + free(p); +} |
