added const qualifier to KVPair

This commit is contained in:
Timerix 2025-04-26 03:18:30 +05:00
parent ad276eae12
commit 48d449a605
4 changed files with 17 additions and 17 deletions

View File

@ -58,7 +58,7 @@ void Hashtable_expand(Hashtable* ht){
ht->rows=newrows; ht->rows=newrows;
} }
Autoarr(KVPair)* getrow(Hashtable* ht, char* key, bool can_expand){ Autoarr(KVPair)* getrow(Hashtable* ht, const char* key, bool can_expand){
u32 hash=hashs(hash_sdbm32, key); u32 hash=hashs(hash_sdbm32, key);
Autoarr(KVPair)* ar=ht->rows[hash%HT_HEIGHTS[ht->hein]]; Autoarr(KVPair)* ar=ht->rows[hash%HT_HEIGHTS[ht->hein]];
if(can_expand && Autoarr_length(ar)==Autoarr_max_length(ar)) if(can_expand && Autoarr_length(ar)==Autoarr_max_length(ar))
@ -69,7 +69,7 @@ Autoarr(KVPair)* getrow(Hashtable* ht, char* key, bool can_expand){
/// @param key must be heap allocated /// @param key must be heap allocated
/// Hashtable_free will free this pointer /// Hashtable_free will free this pointer
void Hashtable_add(Hashtable* ht, char* key, Unitype u){ void Hashtable_add(Hashtable* ht, const char* key, Unitype u){
KVPair p={ .key=key, .value=u }; KVPair p={ .key=key, .value=u };
Autoarr_add(getrow(ht,key,true),p); Autoarr_add(getrow(ht,key,true),p);
} }
@ -81,7 +81,7 @@ void Hashtable_addMany(Hashtable* ht, KVPair* pair_array, u32 count){
} }
// returns null or pointer to value in hashtable // returns null or pointer to value in hashtable
Unitype* Hashtable_getPtr(Hashtable* ht, char* key){ Unitype* Hashtable_getPtr(Hashtable* ht, const char* key){
Autoarr(KVPair)* ar=getrow(ht,key,false); Autoarr(KVPair)* ar=getrow(ht,key,false);
u32 arlen=Autoarr_length(ar); u32 arlen=Autoarr_length(ar);
for(u32 i=0;i<arlen;i++){ for(u32 i=0;i<arlen;i++){
@ -91,7 +91,7 @@ Unitype* Hashtable_getPtr(Hashtable* ht, char* key){
return NULL; return NULL;
} }
Unitype Hashtable_get(Hashtable* ht, char* key){ Unitype Hashtable_get(Hashtable* ht, const char* key){
Autoarr(KVPair)* ar=getrow(ht,key,false); Autoarr(KVPair)* ar=getrow(ht,key,false);
u32 arlen=Autoarr_length(ar); u32 arlen=Autoarr_length(ar);
for(u32 i=0;i<arlen;i++){ for(u32 i=0;i<arlen;i++){
@ -101,14 +101,14 @@ Unitype Hashtable_get(Hashtable* ht, char* key){
return UniNull; return UniNull;
} }
bool Hashtable_tryGet(Hashtable* ht, char* key, Unitype* output){ bool Hashtable_tryGet(Hashtable* ht, const char* key, Unitype* output){
Unitype u=Hashtable_get(ht,key); Unitype u=Hashtable_get(ht,key);
*output=u; *output=u;
return !Unitype_isUniNull(u); return !Unitype_isUniNull(u);
} }
bool Hashtable_trySet(Hashtable* ht, char* key, Unitype u){ bool Hashtable_trySet(Hashtable* ht, const char* key, Unitype u){
Unitype* val=Hashtable_getPtr(ht,key); Unitype* val=Hashtable_getPtr(ht,key);
if(val==NULL) if(val==NULL)
return false; return false;
@ -116,7 +116,7 @@ bool Hashtable_trySet(Hashtable* ht, char* key, Unitype u){
return true; return true;
} }
bool Hashtable_tryAdd(Hashtable* ht, char* key, Unitype u){ bool Hashtable_tryAdd(Hashtable* ht, const char* key, Unitype u){
Unitype* val=Hashtable_getPtr(ht,key); Unitype* val=Hashtable_getPtr(ht,key);
if(val==NULL){ if(val==NULL){
Hashtable_add(ht, key, u); Hashtable_add(ht, key, u);
@ -125,7 +125,7 @@ bool Hashtable_tryAdd(Hashtable* ht, char* key, Unitype u){
return false; return false;
} }
void Hashtable_addOrSet(Hashtable* ht, char* key, Unitype u){ void Hashtable_addOrSet(Hashtable* ht, const char* key, Unitype u){
Unitype* val=Hashtable_getPtr(ht, key); Unitype* val=Hashtable_getPtr(ht, key);
if(val==NULL) if(val==NULL)
Hashtable_add(ht, key, u); // add Hashtable_add(ht, key, u); // add

View File

@ -23,18 +23,18 @@ u16 Hashtable_height(Hashtable* ht);
// don't add pairs with the same keys, // don't add pairs with the same keys,
// or something weird will happen // or something weird will happen
// if not sure, use Hashtable_addOrSet() // if not sure, use Hashtable_addOrSet()
void Hashtable_add(Hashtable* ht, char* key, Unitype u); void Hashtable_add(Hashtable* ht, const char* key, Unitype u);
void Hashtable_addOrSet(Hashtable* ht, char* key, Unitype u); void Hashtable_addOrSet(Hashtable* ht, const char* key, Unitype u);
void Hashtable_addMany(Hashtable* ht, KVPair* pair_array, u32 count); void Hashtable_addMany(Hashtable* ht, KVPair* pair_array, u32 count);
bool Hashtable_tryAdd(Hashtable* ht, char* key, Unitype u); bool Hashtable_tryAdd(Hashtable* ht, const char* key, Unitype u);
bool Hashtable_trySet(Hashtable* ht, char* key, Unitype u); bool Hashtable_trySet(Hashtable* ht, const char* key, Unitype u);
// returns null or pointer to value in hashtable // returns null or pointer to value in hashtable
Unitype* Hashtable_getPtr(Hashtable* ht, char* key); Unitype* Hashtable_getPtr(Hashtable* ht, const char* key);
Unitype Hashtable_get(Hashtable* ht, char* key); Unitype Hashtable_get(Hashtable* ht, const char* key);
bool Hashtable_tryGet(Hashtable* ht, char* key, Unitype* output); bool Hashtable_tryGet(Hashtable* ht, const char* key, Unitype* output);
#define Hashtable_foreach(HT, EL, codeblock...) { \ #define Hashtable_foreach(HT, EL, codeblock...) { \
u16 hmax=Hashtable_height(HT); \ u16 hmax=Hashtable_height(HT); \

View File

@ -8,7 +8,7 @@ extern "C" {
#include "../Autoarr/Autoarr.h" #include "../Autoarr/Autoarr.h"
STRUCT(KVPair, STRUCT(KVPair,
char* key; const char* key;
Unitype value; Unitype value;
) )

View File

@ -34,7 +34,7 @@ typedef void (*freeMembers_t)(void*);
typedef char* (*toString_t)(void* obj, u32 fmt); typedef char* (*toString_t)(void* obj, u32 fmt);
STRUCT(ktDescriptor, STRUCT(ktDescriptor,
char* name; const char* name;
ktid id; ktid id;
u16 size; u16 size;
freeMembers_t freeMembers; // NULL or function which frees all struct members freeMembers_t freeMembers; // NULL or function which frees all struct members