From 1c135b3d098dd7f1604d9f86b35b071c9c5aa9c1 Mon Sep 17 00:00:00 2001 From: Maciej Samborski Date: Sun, 3 Mar 2024 20:34:54 +0100 Subject: [PATCH] Added daPopDiscard function --- da.h | 19 +++++++++++++------ example.c | 2 ++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/da.h b/da.h index 3d5214c..c32354b 100644 --- a/da.h +++ b/da.h @@ -17,6 +17,7 @@ typedef void * dynarr; dynarr _daCreate(size_t initCapacity, size_t type, size_t size); dynarr _daPush(dynarr da, void * item); void _daPop(dynarr da, void * element); +void daPopDiscard(dynarr da); void daFree(dynarr da); size_t daSize(dynarr da); @@ -86,6 +87,11 @@ void _daPop(dynarr da, void * elem) memcpy(elem, (char *)da + daSize(da) * daType(da), daType(da)); } +void daPopDiscard(dynarr da) +{ + *daField(da, SIZE) -= 1; +} + size_t * daField(dynarr da, enum daFields field) { if (field < SIZE || field > TYPE) @@ -94,7 +100,8 @@ size_t * daField(dynarr da, enum daFields field) fprintf(stderr, "ERROR: Wrong field: %d\n", field); fprintf(stderr, "AVAILABLE: SIZE, CAPACITY, TYPE\n"); fprintf(stderr, "*------------------------------*\n"); - exit(1); + + return NULL; } return ((size_t *) da - DATA + field); @@ -124,7 +131,7 @@ void daForeach(dynarr da, func f) heapstr daToCStr(dynarr da) { char * buffer = (char *) calloc(1, daSize(da) + 1); - memcpy(buffer, da,daSize(da) * daType(da)); + memcpy(buffer, da, daSize(da) * daType(da)); return buffer; } @@ -138,10 +145,10 @@ void * daGetRef(dynarr da, size_t index) { if (index >= daSize(da)) { - fprintf(stderr, "*------------------------------*\n"); - fprintf(stderr, "ERROR: Access out of bounds\n"); - fprintf(stderr, "*------------------------------*\n"); - exit(1); + fprintf(stderr, ("*------------------------------*\n")); + fprintf(stderr, ("ERROR: Access out of bounds\n")); + fprintf(stderr, ("*------------------------------*\n")); + return NULL; } return (void *)((char *)da + index * daType(da)); diff --git a/example.c b/example.c index 97937c7..737d2cf 100644 --- a/example.c +++ b/example.c @@ -64,6 +64,8 @@ int main(void) *(char *)daGetRef(da2, 6) = '!'; + daPopDiscard(da2); + heapstr message = daToCStr(da2); printf("%s\n", message);