diff options
author | Stefan Zabka <zabkaste@hu-berlin.de> | 2020-05-24 12:09:46 +0200 |
---|---|---|
committer | Stefan Zabka <zabkaste@hu-berlin.de> | 2020-05-24 12:09:46 +0200 |
commit | 65966ded0cc15c5966c6568cf0ff2f2bbe1fc29a (patch) | |
tree | 60af69be16926ef0f24ad2a954d9205ce9277450 /02_exercise/array.c | |
parent | 3b7e61eab8ce5d230bc1b172942c1ab9459ed161 (diff) | |
download | betriebssysteme-65966ded0cc15c5966c6568cf0ff2f2bbe1fc29a.tar.gz betriebssysteme-65966ded0cc15c5966c6568cf0ff2f2bbe1fc29a.zip |
Big remodelling
Diffstat (limited to '02_exercise/array.c')
-rw-r--r-- | 02_exercise/array.c | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/02_exercise/array.c b/02_exercise/array.c deleted file mode 100644 index 4f08366..0000000 --- a/02_exercise/array.c +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************//** - * @file array.c - * @author Dorian Weber - * @brief Implementation des generalisierten Arrays. - ******************************************************************************/ - -#include "array.h" -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> - -/* ********************************************************* public functions */ - -/* (die runden Klammern um einige Funktionsnamen sind notwendig, da Makros - * gleichen Namens existieren und der Präprozessor diese expandieren würde) */ - -void* (arrayInit)(size_t capacity, size_t size) { - ArrayHdr *hdr = malloc(sizeof(*hdr) + size*capacity); - - if (hdr == NULL) - return NULL; - - hdr->len = 0; - hdr->cap = capacity; - - return hdr + 1; -} - -void arrayRelease(void* self) { - free(((ArrayHdr*) self) - 1); -} - -void* (arrayPush)(void* self, size_t size) { - ArrayHdr *hdr = ((ArrayHdr*) self) - 1; - - if (hdr->len == hdr->cap) { - hdr->cap *= 2; - hdr = realloc(hdr, sizeof(*hdr) + size*hdr->cap); - - if (hdr == NULL) { - fputs("program ran out of heap memory\n", stderr); - exit(-1); - } - } - - ++hdr->len; - return hdr + 1; -} - -void (arrayPop)(void* self) { - ArrayHdr *hdr = ((ArrayHdr*) self) - 1; - assert(hdr->len > 0); - --hdr->len; -} - -/* Symbol für die Inline-Funktionen erzeugen und aus diesem Modul exportieren */ -extern void arrayClear(void* self); -extern int arrayIsEmpty(const void* self); -extern size_t arrayLen(const void* self); |