dqn: Upgrade to latest lib
This commit is contained in:
parent
c1de1a7c0d
commit
8f129e7893
@ -479,7 +479,7 @@ Dqn_UTest TestDSMap()
|
|||||||
uint64_t value = 0;
|
uint64_t value = 0;
|
||||||
uint64_t grow_threshold = map_start_size * 3 / 4;
|
uint64_t grow_threshold = map_start_size * 3 / 4;
|
||||||
for (; map.occupied != grow_threshold; value++) {
|
for (; map.occupied != grow_threshold; value++) {
|
||||||
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value, 1);
|
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value);
|
||||||
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
||||||
DQN_UTEST_ASSERT(&test, !Dqn_DSMap_Find<uint64_t>(&map, key));
|
DQN_UTEST_ASSERT(&test, !Dqn_DSMap_Find<uint64_t>(&map, key));
|
||||||
DQN_UTEST_ASSERT(&test, !Dqn_DSMap_FindSlot<uint64_t>(&map, key));
|
DQN_UTEST_ASSERT(&test, !Dqn_DSMap_FindSlot<uint64_t>(&map, key));
|
||||||
@ -498,7 +498,7 @@ Dqn_UTest TestDSMap()
|
|||||||
DQN_UTEST_ASSERT(&test, map.occupied == 1 /*Sentinel*/ + value);
|
DQN_UTEST_ASSERT(&test, map.occupied == 1 /*Sentinel*/ + value);
|
||||||
|
|
||||||
{ // NOTE: One more item should cause the table to grow by 2x
|
{ // NOTE: One more item should cause the table to grow by 2x
|
||||||
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value, 1);
|
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value);
|
||||||
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
||||||
bool found = false;
|
bool found = false;
|
||||||
if (test_type == DSMapTestType_Set) {
|
if (test_type == DSMapTestType_Set) {
|
||||||
@ -548,7 +548,7 @@ Dqn_UTest TestDSMap()
|
|||||||
uint64_t value = 0;
|
uint64_t value = 0;
|
||||||
uint64_t shrink_threshold = map.size * 1 / 4;
|
uint64_t shrink_threshold = map.size * 1 / 4;
|
||||||
for (; map.occupied != shrink_threshold; value++) {
|
for (; map.occupied != shrink_threshold; value++) {
|
||||||
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value, 1);
|
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value);
|
||||||
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
||||||
|
|
||||||
DQN_UTEST_ASSERT(&test, Dqn_DSMap_Find<uint64_t>(&map, key));
|
DQN_UTEST_ASSERT(&test, Dqn_DSMap_Find<uint64_t>(&map, key));
|
||||||
@ -561,7 +561,7 @@ Dqn_UTest TestDSMap()
|
|||||||
DQN_UTEST_ASSERT(&test, map.occupied == start_map_occupied - value);
|
DQN_UTEST_ASSERT(&test, map.occupied == start_map_occupied - value);
|
||||||
|
|
||||||
{ // NOTE: One more item should cause the table to grow by 2x
|
{ // NOTE: One more item should cause the table to grow by 2x
|
||||||
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value, 1);
|
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value);
|
||||||
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
||||||
Dqn_DSMap_Erase(&map, key);
|
Dqn_DSMap_Erase(&map, key);
|
||||||
value++;
|
value++;
|
||||||
@ -600,7 +600,7 @@ Dqn_UTest TestDSMap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (; map.occupied != 1; value++) { // NOTE: Remove all items from the table
|
for (; map.occupied != 1; value++) { // NOTE: Remove all items from the table
|
||||||
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value, 1);
|
uint64_t *val_copy = Dqn_Arena_NewCopy(scratch.arena, uint64_t, &value);
|
||||||
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
Dqn_DSMapKey key = Dqn_DSMap_KeyBuffer(&map, (char *)val_copy, sizeof(*val_copy));
|
||||||
DQN_UTEST_ASSERT(&test, Dqn_DSMap_Find<uint64_t>(&map, key));
|
DQN_UTEST_ASSERT(&test, Dqn_DSMap_Find<uint64_t>(&map, key));
|
||||||
Dqn_DSMap_Erase(&map, key);
|
Dqn_DSMap_Erase(&map, key);
|
||||||
|
12
dqn_math.cpp
12
dqn_math.cpp
@ -309,12 +309,24 @@ DQN_API Dqn_V2 operator-(Dqn_V2 lhs, Dqn_V2 rhs)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DQN_API Dqn_V2 operator-(Dqn_V2 lhs, Dqn_f32 rhs)
|
||||||
|
{
|
||||||
|
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x - rhs, lhs.y - rhs);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
DQN_API Dqn_V2 operator+(Dqn_V2 lhs, Dqn_V2 rhs)
|
DQN_API Dqn_V2 operator+(Dqn_V2 lhs, Dqn_V2 rhs)
|
||||||
{
|
{
|
||||||
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x + rhs.x, lhs.y + rhs.y);
|
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x + rhs.x, lhs.y + rhs.y);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DQN_API Dqn_V2 operator+(Dqn_V2 lhs, Dqn_f32 rhs)
|
||||||
|
{
|
||||||
|
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x + rhs, lhs.y + rhs);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
DQN_API Dqn_V2 operator*(Dqn_V2 lhs, Dqn_V2 rhs)
|
DQN_API Dqn_V2 operator*(Dqn_V2 lhs, Dqn_V2 rhs)
|
||||||
{
|
{
|
||||||
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x * rhs.x, lhs.y * rhs.y);
|
Dqn_V2 result = Dqn_V2_InitNx2(lhs.x * rhs.x, lhs.y * rhs.y);
|
||||||
|
@ -88,7 +88,9 @@ DQN_API bool operator<=(Dqn_V2 lhs, Dqn_V2 rhs);
|
|||||||
DQN_API bool operator< (Dqn_V2 lhs, Dqn_V2 rhs);
|
DQN_API bool operator< (Dqn_V2 lhs, Dqn_V2 rhs);
|
||||||
DQN_API bool operator> (Dqn_V2 lhs, Dqn_V2 rhs);
|
DQN_API bool operator> (Dqn_V2 lhs, Dqn_V2 rhs);
|
||||||
DQN_API Dqn_V2 operator- (Dqn_V2 lhs, Dqn_V2 rhs);
|
DQN_API Dqn_V2 operator- (Dqn_V2 lhs, Dqn_V2 rhs);
|
||||||
|
DQN_API Dqn_V2 operator- (Dqn_V2 lhs, Dqn_f32 rhs);
|
||||||
DQN_API Dqn_V2 operator+ (Dqn_V2 lhs, Dqn_V2 rhs);
|
DQN_API Dqn_V2 operator+ (Dqn_V2 lhs, Dqn_V2 rhs);
|
||||||
|
DQN_API Dqn_V2 operator+ (Dqn_V2 lhs, Dqn_f32 rhs);
|
||||||
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, Dqn_V2 rhs);
|
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, Dqn_V2 rhs);
|
||||||
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, Dqn_f32 rhs);
|
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, Dqn_f32 rhs);
|
||||||
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, int32_t rhs);
|
DQN_API Dqn_V2 operator* (Dqn_V2 lhs, int32_t rhs);
|
||||||
|
@ -242,9 +242,11 @@ enum Dqn_ArenaCommit
|
|||||||
|
|
||||||
// NOTE: Allocation ================================================================================
|
// NOTE: Allocation ================================================================================
|
||||||
#define Dqn_Arena_New(arena, Type, zero_mem) (Type *)Dqn_Arena_Alloc(arena, sizeof(Type), alignof(Type), zero_mem)
|
#define Dqn_Arena_New(arena, Type, zero_mem) (Type *)Dqn_Arena_Alloc(arena, sizeof(Type), alignof(Type), zero_mem)
|
||||||
|
#define Dqn_Arena_NewCopy(arena, Type, src) (Type *)Dqn_Arena_Copy(arena, src, sizeof(*src), alignof(Type))
|
||||||
|
#define Dqn_Arena_NewCopyZ(arena, Type, src) (Type *)Dqn_Arena_Copy(arena, src, sizeof(*src), alignof(Type))
|
||||||
#define Dqn_Arena_NewArray(arena, Type, count, zero_mem) (Type *)Dqn_Arena_Alloc(arena, sizeof(Type) * count, alignof(Type), zero_mem)
|
#define Dqn_Arena_NewArray(arena, Type, count, zero_mem) (Type *)Dqn_Arena_Alloc(arena, sizeof(Type) * count, alignof(Type), zero_mem)
|
||||||
#define Dqn_Arena_NewCopy(arena, Type, src, count) (Type *)Dqn_Arena_Copy(arena, src, sizeof(*src) * count, alignof(Type))
|
#define Dqn_Arena_NewArrayCopy(arena, Type, src, count) (Type *)Dqn_Arena_Copy(arena, src, sizeof(*src) * count, alignof(Type))
|
||||||
#define Dqn_Arena_NewCopyZ(arena, Type, src, count) (Type *)Dqn_Arena_CopyZ(arena, src, sizeof(*src) * count, alignof(Type))
|
#define Dqn_Arena_NewArrayCopyZ(arena, Type, src, count) (Type *)Dqn_Arena_CopyZ(arena, src, sizeof(*src) * count, alignof(Type))
|
||||||
|
|
||||||
DQN_API Dqn_Allocator Dqn_Arena_Allocator (Dqn_Arena *arena);
|
DQN_API Dqn_Allocator Dqn_Arena_Allocator (Dqn_Arena *arena);
|
||||||
DQN_API Dqn_MemBlock * Dqn_Arena_Grow (Dqn_Arena *arena, Dqn_usize size, Dqn_usize commit, uint8_t flags);
|
DQN_API Dqn_MemBlock * Dqn_Arena_Grow (Dqn_Arena *arena, Dqn_usize size, Dqn_usize commit, uint8_t flags);
|
||||||
|
@ -1275,7 +1275,7 @@ DQN_API Dqn_String16 Dqn_Win_EXEDirWArena(Dqn_Arena *arena)
|
|||||||
|
|
||||||
Dqn_String16 result = {};
|
Dqn_String16 result = {};
|
||||||
if (dir_size > 0) {
|
if (dir_size > 0) {
|
||||||
result.data = Dqn_Arena_NewCopyZ(arena, wchar_t, dir, dir_size);
|
result.data = Dqn_Arena_NewArrayCopyZ(arena, wchar_t, dir, dir_size);
|
||||||
if (result.data) {
|
if (result.data) {
|
||||||
result.size = dir_size;
|
result.size = dir_size;
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,12 @@ DQN_API Dqn_String8 Dqn_String8_Slice(Dqn_String8 string, Dqn_usize offset, Dqn_
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DQN_API Dqn_String8 Dqn_String8_Advance(Dqn_String8 string, Dqn_usize amount)
|
||||||
|
{
|
||||||
|
Dqn_String8 result = Dqn_String8_Slice(string, amount, UINT64_MAX);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplitArray(Dqn_String8 string, Dqn_String8 const *find, Dqn_usize find_size)
|
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplitArray(Dqn_String8 string, Dqn_String8 const *find, Dqn_usize find_size)
|
||||||
{
|
{
|
||||||
Dqn_String8BinarySplitResult result = {};
|
Dqn_String8BinarySplitResult result = {};
|
||||||
@ -176,6 +182,7 @@ DQN_API Dqn_String8FindResult Dqn_String8_FindFirstStringArray(Dqn_String8 strin
|
|||||||
if (Dqn_String8_Eq(string_slice, find_item)) {
|
if (Dqn_String8_Eq(string_slice, find_item)) {
|
||||||
result.found = true;
|
result.found = true;
|
||||||
result.index = index;
|
result.index = index;
|
||||||
|
result.start_to_before_match = Dqn_String8_Init(string.data, index);
|
||||||
result.match = Dqn_String8_Init(string.data + index, find_item.size);
|
result.match = Dqn_String8_Init(string.data + index, find_item.size);
|
||||||
result.match_to_end_of_buffer = Dqn_String8_Init(result.match.data, string.size - index);
|
result.match_to_end_of_buffer = Dqn_String8_Init(result.match.data, string.size - index);
|
||||||
break;
|
break;
|
||||||
|
@ -248,10 +248,11 @@ struct Dqn_String8BinarySplitResult
|
|||||||
|
|
||||||
struct Dqn_String8FindResult
|
struct Dqn_String8FindResult
|
||||||
{
|
{
|
||||||
bool found;
|
bool found; // True if string was found. If false, the subsequent fields below are not set.
|
||||||
Dqn_usize index;
|
Dqn_usize index; // The index in the buffer where the found string starts
|
||||||
Dqn_String8 match;
|
Dqn_String8 match; // The matching string in the buffer that was searched
|
||||||
Dqn_String8 match_to_end_of_buffer;
|
Dqn_String8 match_to_end_of_buffer; // The substring containing the found string to the end of the buffer
|
||||||
|
Dqn_String8 start_to_before_match; // The substring from the start of the buffer up until the found string, not including it
|
||||||
};
|
};
|
||||||
|
|
||||||
// NOTE: Macros ====================================================================================
|
// NOTE: Macros ====================================================================================
|
||||||
@ -317,6 +318,7 @@ DQN_API Dqn_String8 Dqn_String8_CopyCString (Dqn_Allo
|
|||||||
DQN_API Dqn_String8 Dqn_String8_Copy (Dqn_Allocator allocator, Dqn_String8 string);
|
DQN_API Dqn_String8 Dqn_String8_Copy (Dqn_Allocator allocator, Dqn_String8 string);
|
||||||
|
|
||||||
DQN_API Dqn_String8 Dqn_String8_Slice (Dqn_String8 string, Dqn_usize offset, Dqn_usize size);
|
DQN_API Dqn_String8 Dqn_String8_Slice (Dqn_String8 string, Dqn_usize offset, Dqn_usize size);
|
||||||
|
DQN_API Dqn_String8 Dqn_String8_Advance (Dqn_String8 string, Dqn_usize amount);
|
||||||
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplitArray (Dqn_String8 string, Dqn_String8 const *find, Dqn_usize find_size);
|
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplitArray (Dqn_String8 string, Dqn_String8 const *find, Dqn_usize find_size);
|
||||||
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplit (Dqn_String8 string, Dqn_String8 find);
|
DQN_API Dqn_String8BinarySplitResult Dqn_String8_BinarySplit (Dqn_String8 string, Dqn_String8 find);
|
||||||
DQN_API Dqn_usize Dqn_String8_Split (Dqn_String8 string, Dqn_String8 delimiter, Dqn_String8 *splits, Dqn_usize splits_count);
|
DQN_API Dqn_usize Dqn_String8_Split (Dqn_String8 string, Dqn_String8 delimiter, Dqn_String8 *splits, Dqn_usize splits_count);
|
||||||
|
Loading…
Reference in New Issue
Block a user