Kohi Game Engine
kname.h File Reference

This files contains an implementation of knames. More...

#include "defines.h"

Go to the source code of this file.

Macros

#define INVALID_KNAME   0
 Represents an invalid kname, which is essentially used to represent "no name". More...
 

Typedefs

typedef u64 kname
 A kname is a string hash made for quick comparisons versus traditional string comparisons. More...
 

Functions

KAPI kname kname_create (const char *str)
 
KAPI const char * kname_string_get (kname name)
 

Detailed Description

This files contains an implementation of knames.

Author
Travis Vroman (travi.nosp@m.s@ko.nosp@m.hieng.nosp@m.ine..nosp@m.com)

knames are a lightweight system to manage strings within an application for quick comparisons. Each kname is hashed into a unique number stored as a key in a lookup table for later use. This lookup table also stores a copy of the original string. knames are immutable, and thus cannot be changed once internalized into the lookup table, even when reused.

NOTE: knames are case-insensitive. For a case-sensitive variant, see kstring_id.h. NOTE: case-insensitivity applies to regular ascii and western european high-ascii characters only.

Version
1.0
Date
2024-08-11

Macro Definition Documentation

◆ INVALID_KNAME

#define INVALID_KNAME   0

Represents an invalid kname, which is essentially used to represent "no name".

Typedef Documentation

◆ kname

typedef u64 kname

A kname is a string hash made for quick comparisons versus traditional string comparisons.

A kname's hash is generated from a lowercased version of a string. The original string (with original casing) may be looked up and retrieved at any time using kname_string_get().

Function Documentation

◆ kname_create()

KAPI kname kname_create ( const char *  str)

Creates a kname for the given string. This creates a hash of the string for quick comparisons. A copy of the original string is maintained within an internal global lookup table, where the hash provided (i.e. kname) is the lookup key. NOTE: knames are case-insensitive!

NOTE: A hash of 0 is never allowed here.

Parameters
strThe source string to use while creating the kname.
Returns
The hashed kname.

◆ kname_string_get()

KAPI const char* kname_string_get ( kname  name)

Attempts to get the original string associated with the given kname. This will only work if the name was originally registered in the internal global lookup table.

Parameters
nameThe kname to lookup.
Returns
A constant pointer to the string if found, otherwise 0/null. NOTE: Do NOT free this string!