da.h/example.c

116 lines
2.0 KiB
C

#include <stdio.h>
#define DA_IMPLEMENTATION
#include "da.h"
#define EHAN_IMPLEMENTATION
#include "ehan.h"
#if 0
int main(void)
{
dynarr(char *) da = daCreate(char *,4).val;
for (size_t i = 0; i < 1000; ++i) {
daPushStr(da, "hi");
}
for (size_t i = 0; i < daSize(da); ++i) {
ILog("%zu: %s\n", i, da[i]);
}
daFree(da);
return 0;
}
#else
void printDaU16(void * item)
{
printf("%hu\n", *((unsigned short *) item));
}
void printDaS32(void * item)
{
printf("%hu\n", *((int *) item));
}
int main(void)
{
printf("----------\n");
printf("DA1\n");
printf("----------\n");
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);
daPushLit(da, 69);
daPushLit(da, 420);
daPushLit(da, 1337);
daPushLit(da, 34);
daPushLit(da, 35);
daPushLit(da, 1667);
unsigned short x = 0;
daPop(da, x);
printf("x: %hu\n", x);
daForeach(da, printDaU16);
printf("%zu %zu %zu\n", daSize(da), daCap(da), daType(da));
printf("----------\n");
printf("DA2\n");
printf("----------\n");
dynarr(char) da2 = daCreate(char, 1).val;
daPushLit(da2, 'H');
daPushLit(da2, 'i');
daPushLit(da2, ' ');
daPushLit(da2, 'm');
daPushLit(da2, 'o');
daPushLit(da2, 'm');
daPushLit(da2, '?');
daPushLit(da2, '?');
*(char *)daGetRef(da2, 6) = '!';
daPopDiscard(da2);
heapstr message = daToCStr(da2);
printf("%s\n", message);
printf("----------\n");
printf("DA3\n");
printf("----------\n");
dynarr(char *) da3 = daCreate(char *, 1).val;
for (size_t i = 0; i < 1000000; ++i) {
daPushStr(da3, "Test");
}
char * str;
daPop(da3, str);
printf("%s\n", str);
cleanup:
daFree(da3);
free(message);
daFree(da2);
daFree(da);
return 0;
}
#endif