Compare commits

..

No commits in common. "f9fa4ce612f9afb1c5f44366922f671d0d0f242a" and "cadebd77ff40b867cf49e8459ff63f424521fb5e" have entirely different histories.

2 changed files with 21 additions and 19 deletions

8
da.h
View File

@ -18,6 +18,7 @@ enum daFields {
typedef void * dynarr; typedef void * dynarr;
GenericReturn _daCreate(size_t initCapacity, size_t type, size_t size); GenericReturn _daCreate(size_t initCapacity, size_t type, size_t size);
GenericReturn _daPush(dynarr * da, void * item);
GenericReturn _daPushLit(dynarr * da, size_t item); GenericReturn _daPushLit(dynarr * da, size_t item);
GenericReturn _daPushStr(dynarr * da, const char * str); GenericReturn _daPushStr(dynarr * da, const char * str);
GenericReturn daCopy(dynarr da); GenericReturn daCopy(dynarr da);
@ -42,10 +43,9 @@ void daBzero(dynarr da);
#define dynarr(type) type * #define dynarr(type) type *
#define daCreate(type, cap) _daCreate(cap, sizeof(type), 0) #define daCreate(type, cap) _daCreate(cap, sizeof(type), 0)
#define daPush(da, item) _Generic((item), \ #define daPush(da, item) _daPush((void *)&da, &item)
char *: _daPushStr, \ #define daPushLit(da, item) _daPushLit((void *)&da, item)
default: _daPushLit \ #define daPushStr(da, str) _daPushStr((void *)&da, str)
)((void *)&da, item)
#define daPop(da, item) _daPop(da, &item) #define daPop(da, item) _daPop(da, &item)
#endif // DA_H_ #endif // DA_H_

View File

@ -1,3 +1,5 @@
#include <stdio.h>
#define DA_IMPLEMENTATION #define DA_IMPLEMENTATION
#include "da.h" #include "da.h"
@ -47,13 +49,13 @@ int main(void)
dynarr(unsigned short) da = resultGeneric(dynarr(unsigned short), gr); dynarr(unsigned short) da = resultGeneric(dynarr(unsigned short), gr);
daPush(da, 69); daPushLit(da, 69);
daPush(da, 420); daPushLit(da, 420);
daPush(da, 1337); daPushLit(da, 1337);
daPush(da, 34); daPushLit(da, 34);
daPush(da, 35); daPushLit(da, 35);
daPush(da, 1667); daPushLit(da, 1667);
unsigned short x = 0; unsigned short x = 0;
@ -70,14 +72,14 @@ int main(void)
dynarr(char) da2 = daCreate(char, 1).val; dynarr(char) da2 = daCreate(char, 1).val;
daPush(da2, 'H'); daPushLit(da2, 'H');
daPush(da2, 'i'); daPushLit(da2, 'i');
daPush(da2, ' '); daPushLit(da2, ' ');
daPush(da2, 'm'); daPushLit(da2, 'm');
daPush(da2, 'o'); daPushLit(da2, 'o');
daPush(da2, 'm'); daPushLit(da2, 'm');
daPush(da2, '?'); daPushLit(da2, '?');
daPush(da2, '?'); daPushLit(da2, '?');
*(char *)daGetRef(da2, 6) = '!'; *(char *)daGetRef(da2, 6) = '!';
@ -94,7 +96,7 @@ int main(void)
dynarr(char *) da3 = daCreate(char *, 1).val; dynarr(char *) da3 = daCreate(char *, 1).val;
for (size_t i = 0; i < 1000000; ++i) { for (size_t i = 0; i < 1000000; ++i) {
daPush(da3, "Test"); daPushStr(da3, "Test");
} }
char * str; char * str;