1
0
Fork 0

Added: Ascii string type and helpers

Browse Source
This commit is contained in:
rhuibertsjr 2024-04-13 14:15:15 +02:00
parent e882e68959
commit ccda74a701
3 changed files with 70 additions and 0 deletions

21
src/hash-store.h Normal file
View File

@ -0,0 +1,21 @@
#ifndef HASH_TABLE_H
#define HASH_TABLE_H
typedef u32 Key;
typedef struct Table Table;
struct Table
{
Arena *ptr_arena;
Arena *str8_arena;
String8 *str8_ptr;
u32 str8_count;
};
internal Table hash_store_initialize(void);
internal String8 hash_store_string8_from_key(Table *table, Key index);
internal Key hash_store_string8_to_key(Table *table, String8 value);
#endif

32
src/string.c Normal file
View File

@ -0,0 +1,32 @@
internal String8
str8_init(u8 *cstring, u64 length)
{
String8 result = { cstring, length };
return result;
}
internal u8
string8_match(String8 a, String8 b)
{
u8 result = 0;
if (a.length == b.length)
{
u64 size = MIN(a.length, b.length);
result = 1;
for (u64 i = 0; i < size; i++ )
{
u8 at = a.content[i];
i8 bt = b.content[i];
if (at != bt)
{
result = 0;
break;
}
}
}
return result;
}

17
src/string.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef STRING_H
#define STRING_H
typedef struct String8 String8;
struct String8
{
u8 *content;
u64 length;
};
internal String8 str8_init(u8 *cstring, u64 length);
#define str8_lit(cstring) \
str8_init((u8*)(cstring), sizeof(cstring) - 1)
internal u8 string8_match(String8 a, String8 b);
#endif // STRING_H