Merge branch 'ehan'
This commit is contained in:
commit
ae489f5cc4
|
@ -1,3 +1,6 @@
|
|||
.ctags
|
||||
main
|
||||
valgrind-out.txt
|
||||
*.orig
|
||||
test
|
||||
test.c
|
||||
|
|
11
da.h
11
da.h
|
@ -50,9 +50,11 @@ void daBzero(dynarr da);
|
|||
|
||||
GenericReturn _daCreate(size_t cap, size_t type, size_t size)
|
||||
{
|
||||
if (cap == 0) cap = 1;
|
||||
|
||||
size_t * da = (size_t *) malloc(type * cap + DATA * sizeof(size_t));
|
||||
if (da == NULL)
|
||||
ehanError("Failed to allocate resources for a dynamic array!");
|
||||
return ehanError("Failed to allocate resources for a dynamic array!");
|
||||
|
||||
da[SIZE] = size;
|
||||
da[CAPACITY] = cap;
|
||||
|
@ -63,13 +65,14 @@ GenericReturn _daCreate(size_t cap, size_t type, size_t size)
|
|||
|
||||
void daFree(dynarr da)
|
||||
{
|
||||
if (da == NULL) return;
|
||||
free((size_t *) da - DATA);
|
||||
}
|
||||
|
||||
GenericReturn daCopy(dynarr da)
|
||||
{
|
||||
if (da == NULL)
|
||||
ehanError("Expected: 'dynarr' got 'NULL'");
|
||||
return ehanError("Expected: 'dynarr' got 'NULL'");
|
||||
|
||||
GenericReturn temp = _daCreate(daCap(da), daType(da), daSize(da));
|
||||
|
||||
|
@ -85,7 +88,7 @@ GenericReturn daCopy(dynarr da)
|
|||
GenericReturn daResize(dynarr da)
|
||||
{
|
||||
if (da == NULL)
|
||||
ehanError("Expected: 'dynarr' got 'NULL'");
|
||||
return ehanError("Expected: 'dynarr' got 'NULL'");
|
||||
|
||||
GenericReturn temp = _daCreate(daCap(da) * 2, daType(da), daSize(da));
|
||||
|
||||
|
@ -166,6 +169,8 @@ void daForeach(dynarr da, func f)
|
|||
heapstr daToCStr(dynarr da)
|
||||
{
|
||||
char * buffer = (char *) calloc(1, daSize(da) + 1);
|
||||
if (buffer == NULL) return NULL;
|
||||
|
||||
memcpy(buffer, da, daSize(da) * daType(da));
|
||||
return buffer;
|
||||
}
|
||||
|
|
31
example.c
31
example.c
|
@ -22,7 +22,14 @@ int main(void)
|
|||
printf("DA1\n");
|
||||
printf("----------\n");
|
||||
|
||||
dynarr(unsigned short) da = daCreate(unsigned short, 1).val;
|
||||
GenericReturn gr = daCreate(unsigned short, 1);
|
||||
if (ehanCheck(gr))
|
||||
{
|
||||
ELog("%s\n", resultError(gr));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
dynarr(unsigned short) da = resultGeneric(dynarr(unsigned short), gr);
|
||||
|
||||
unsigned short x = 69;
|
||||
daPush(da, x);
|
||||
|
@ -74,8 +81,26 @@ int main(void)
|
|||
heapstr message = daToCStr(da2);
|
||||
|
||||
printf("%s\n", message);
|
||||
free(message);
|
||||
|
||||
daFree(da);
|
||||
printf("----------\n");
|
||||
printf("DA3\n");
|
||||
printf("----------\n");
|
||||
|
||||
dynarr(char *) da3 = daCreate(char *, 1).val;
|
||||
|
||||
const char * someString = "Test";
|
||||
for (size_t i = 0; i < 100000000; ++i) {
|
||||
daPush(da3, someString);
|
||||
}
|
||||
|
||||
char * str;
|
||||
daPop(da3, str);
|
||||
printf("%s\n", str);
|
||||
|
||||
daFree(da3);
|
||||
free(message);
|
||||
daFree(da2);
|
||||
daFree(da);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue