Compare commits
No commits in common. "cadebd77ff40b867cf49e8459ff63f424521fb5e" and "ae489f5cc4cda41f82dafc3fd307ae5141c1bb5f" have entirely different histories.
cadebd77ff
...
ae489f5cc4
64
da.h
64
da.h
|
@ -19,8 +19,6 @@ 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 _daPush(dynarr * da, void * item);
|
||||||
GenericReturn _daPushLit(dynarr * da, size_t item);
|
|
||||||
GenericReturn _daPushStr(dynarr * da, const char * str);
|
|
||||||
GenericReturn daCopy(dynarr da);
|
GenericReturn daCopy(dynarr da);
|
||||||
GenericReturn daResize(dynarr da);
|
GenericReturn daResize(dynarr da);
|
||||||
void _daPop(dynarr da, void * element);
|
void _daPop(dynarr da, void * element);
|
||||||
|
@ -44,8 +42,6 @@ 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) _daPush((void *)&da, &item)
|
#define daPush(da, item) _daPush((void *)&da, &item)
|
||||||
#define daPushLit(da, item) _daPushLit((void *)&da, item)
|
|
||||||
#define daPushStr(da, str) _daPushStr((void *)&da, str)
|
|
||||||
#define daPop(da, item) _daPop(da, &item)
|
#define daPop(da, item) _daPop(da, &item)
|
||||||
|
|
||||||
#endif // DA_H_
|
#endif // DA_H_
|
||||||
|
@ -120,65 +116,7 @@ GenericReturn _daPush(dynarr * da, void * item)
|
||||||
|
|
||||||
memcpy((char *)(*da) + daSize(*da) * daType(*da), item, daType(*da));
|
memcpy((char *)(*da) + daSize(*da) * daType(*da), item, daType(*da));
|
||||||
*daField(*da, SIZE) += 1;
|
*daField(*da, SIZE) += 1;
|
||||||
return ehanValue(0);
|
return ehanValue(*da);
|
||||||
}
|
|
||||||
|
|
||||||
GenericReturn _daPushLit(dynarr * da, size_t item)
|
|
||||||
{
|
|
||||||
if (daSize(*da) >= daCap(*da))
|
|
||||||
{
|
|
||||||
GenericReturn temp = daResize(*da);
|
|
||||||
|
|
||||||
if (ehanCheck(temp))
|
|
||||||
return ehanError(resultError(temp));
|
|
||||||
|
|
||||||
*da = resultGeneric(dynarr, temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: Rewrite this
|
|
||||||
switch (daType(*da))
|
|
||||||
{
|
|
||||||
case 1: {
|
|
||||||
*((char *)*da + daType(*da) * daSize(*da)) = item;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 2: {
|
|
||||||
*(short *)((char *)*da + daType(*da) * daSize(*da)) = item;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 4: {
|
|
||||||
*(int *)((char *)*da + daType(*da) * daSize(*da)) = item;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 8: {
|
|
||||||
*(long long int *)((char *)*da + daType(*da) * daSize(*da)) = item;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 16: {
|
|
||||||
*(long double *)((char *)*da + daType(*da) * daSize(*da)) = item;
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
*daField(*da, SIZE) += 1;
|
|
||||||
|
|
||||||
return ehanValue(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
GenericReturn _daPushStr(dynarr * da, const char * str)
|
|
||||||
{
|
|
||||||
if (daSize(*da) >= daCap(*da))
|
|
||||||
{
|
|
||||||
GenericReturn temp = daResize(*da);
|
|
||||||
|
|
||||||
if (ehanCheck(temp))
|
|
||||||
return ehanError(resultError(temp));
|
|
||||||
|
|
||||||
*da = resultGeneric(dynarr, temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy((char *)(*da) + daSize(*da) * daType(*da), &str, daType(*da));
|
|
||||||
*daField(*da, SIZE) += 1;
|
|
||||||
|
|
||||||
return ehanValue(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _daPop(dynarr da, void * elem)
|
void _daPop(dynarr da, void * elem)
|
||||||
|
|
71
example.c
71
example.c
|
@ -6,24 +6,6 @@
|
||||||
#define EHAN_IMPLEMENTATION
|
#define EHAN_IMPLEMENTATION
|
||||||
#include "ehan.h"
|
#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)
|
void printDaU16(void * item)
|
||||||
{
|
{
|
||||||
printf("%hu\n", *((unsigned short *) item));
|
printf("%hu\n", *((unsigned short *) item));
|
||||||
|
@ -49,16 +31,19 @@ int main(void)
|
||||||
|
|
||||||
dynarr(unsigned short) da = resultGeneric(dynarr(unsigned short), gr);
|
dynarr(unsigned short) da = resultGeneric(dynarr(unsigned short), gr);
|
||||||
|
|
||||||
daPushLit(da, 69);
|
unsigned short x = 69;
|
||||||
daPushLit(da, 420);
|
daPush(da, x);
|
||||||
daPushLit(da, 1337);
|
x = 42069;
|
||||||
daPushLit(da, 34);
|
daPush(da, x);
|
||||||
daPushLit(da, 35);
|
x = 1337;
|
||||||
|
daPush(da, x);
|
||||||
daPushLit(da, 1667);
|
x = 34;
|
||||||
|
daPush(da, x);
|
||||||
unsigned short x = 0;
|
x = 35;
|
||||||
|
daPush(da, x);
|
||||||
|
x = 1667;
|
||||||
|
|
||||||
|
daPush(da, x);
|
||||||
daPop(da, x);
|
daPop(da, x);
|
||||||
printf("x: %hu\n", x);
|
printf("x: %hu\n", x);
|
||||||
|
|
||||||
|
@ -72,14 +57,22 @@ int main(void)
|
||||||
|
|
||||||
dynarr(char) da2 = daCreate(char, 1).val;
|
dynarr(char) da2 = daCreate(char, 1).val;
|
||||||
|
|
||||||
daPushLit(da2, 'H');
|
char y = 'H';
|
||||||
daPushLit(da2, 'i');
|
daPush(da2, y);
|
||||||
daPushLit(da2, ' ');
|
y = 'i';
|
||||||
daPushLit(da2, 'm');
|
daPush(da2, y);
|
||||||
daPushLit(da2, 'o');
|
y = ' ';
|
||||||
daPushLit(da2, 'm');
|
daPush(da2, y);
|
||||||
daPushLit(da2, '?');
|
y = 'm';
|
||||||
daPushLit(da2, '?');
|
daPush(da2, y);
|
||||||
|
y = 'o';
|
||||||
|
daPush(da2, y);
|
||||||
|
y = 'm';
|
||||||
|
daPush(da2, y);
|
||||||
|
y = '?';
|
||||||
|
daPush(da2, y);
|
||||||
|
y = '?';
|
||||||
|
daPush(da2, y);
|
||||||
|
|
||||||
*(char *)daGetRef(da2, 6) = '!';
|
*(char *)daGetRef(da2, 6) = '!';
|
||||||
|
|
||||||
|
@ -95,16 +88,15 @@ 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) {
|
const char * someString = "Test";
|
||||||
daPushStr(da3, "Test");
|
for (size_t i = 0; i < 100000000; ++i) {
|
||||||
|
daPush(da3, someString);
|
||||||
}
|
}
|
||||||
|
|
||||||
char * str;
|
char * str;
|
||||||
daPop(da3, str);
|
daPop(da3, str);
|
||||||
printf("%s\n", str);
|
printf("%s\n", str);
|
||||||
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
daFree(da3);
|
daFree(da3);
|
||||||
free(message);
|
free(message);
|
||||||
daFree(da2);
|
daFree(da2);
|
||||||
|
@ -112,4 +104,3 @@ cleanup:
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
Loading…
Reference in New Issue