Merge branch 'ehan'
This commit is contained in:
commit
ae489f5cc4
|
@ -1,3 +1,6 @@
|
||||||
.ctags
|
.ctags
|
||||||
main
|
main
|
||||||
valgrind-out.txt
|
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)
|
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));
|
size_t * da = (size_t *) malloc(type * cap + DATA * sizeof(size_t));
|
||||||
if (da == NULL)
|
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[SIZE] = size;
|
||||||
da[CAPACITY] = cap;
|
da[CAPACITY] = cap;
|
||||||
|
@ -63,13 +65,14 @@ GenericReturn _daCreate(size_t cap, size_t type, size_t size)
|
||||||
|
|
||||||
void daFree(dynarr da)
|
void daFree(dynarr da)
|
||||||
{
|
{
|
||||||
|
if (da == NULL) return;
|
||||||
free((size_t *) da - DATA);
|
free((size_t *) da - DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericReturn daCopy(dynarr da)
|
GenericReturn daCopy(dynarr da)
|
||||||
{
|
{
|
||||||
if (da == NULL)
|
if (da == NULL)
|
||||||
ehanError("Expected: 'dynarr' got 'NULL'");
|
return ehanError("Expected: 'dynarr' got 'NULL'");
|
||||||
|
|
||||||
GenericReturn temp = _daCreate(daCap(da), daType(da), daSize(da));
|
GenericReturn temp = _daCreate(daCap(da), daType(da), daSize(da));
|
||||||
|
|
||||||
|
@ -85,7 +88,7 @@ GenericReturn daCopy(dynarr da)
|
||||||
GenericReturn daResize(dynarr da)
|
GenericReturn daResize(dynarr da)
|
||||||
{
|
{
|
||||||
if (da == NULL)
|
if (da == NULL)
|
||||||
ehanError("Expected: 'dynarr' got 'NULL'");
|
return ehanError("Expected: 'dynarr' got 'NULL'");
|
||||||
|
|
||||||
GenericReturn temp = _daCreate(daCap(da) * 2, daType(da), daSize(da));
|
GenericReturn temp = _daCreate(daCap(da) * 2, daType(da), daSize(da));
|
||||||
|
|
||||||
|
@ -166,6 +169,8 @@ void daForeach(dynarr da, func f)
|
||||||
heapstr daToCStr(dynarr da)
|
heapstr daToCStr(dynarr da)
|
||||||
{
|
{
|
||||||
char * buffer = (char *) calloc(1, daSize(da) + 1);
|
char * buffer = (char *) calloc(1, daSize(da) + 1);
|
||||||
|
if (buffer == NULL) return NULL;
|
||||||
|
|
||||||
memcpy(buffer, da, daSize(da) * daType(da));
|
memcpy(buffer, da, daSize(da) * daType(da));
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
31
example.c
31
example.c
|
@ -22,7 +22,14 @@ int main(void)
|
||||||
printf("DA1\n");
|
printf("DA1\n");
|
||||||
printf("----------\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;
|
unsigned short x = 69;
|
||||||
daPush(da, x);
|
daPush(da, x);
|
||||||
|
@ -74,8 +81,26 @@ int main(void)
|
||||||
heapstr message = daToCStr(da2);
|
heapstr message = daToCStr(da2);
|
||||||
|
|
||||||
printf("%s\n", message);
|
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(da2);
|
||||||
|
daFree(da);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue