dsekai
World engine for retrocomputers.
All Data Structures Files Functions Variables Typedefs Friends Macros Modules Pages
Files | Functions
String Pool

Flexible storage for strings in small spaces. More...

Files

file  strpool.h
 Flexible storage for strings in small spaces.
 

Functions

int16_t strpool_get_sz (const char *str_in)
 Get the size of a string pool or contained string.
 
void strpool_init (char *strpool, int16_t strpool_sz)
 Prepare a string pool for use.
 
int16_t strpool_add_string (char *strpool, char *string, int16_t string_sz)
 
const char * strpool_get (const char *strpool, int16_t idx, int16_t *sz_out)
 

Detailed Description

Flexible storage for strings in small spaces.

String pools are used so that all of the strings that may be used by the UI are kept in a spot that can be easily referenced even when the OS moves memory around. Their flexible nature conserves precious memory.

0x0 0x2 0x4 ...
strpool size first string size first string contents ...

All size values are stored LSB first, so that non-zero values are more immediately apparent.

There is an initial 16-bit value denoting the size of the entire pool. This can be considered the pool header and does not repeat.

This is followed by a 16-bit value denoting the size of the first string, followed by the string, itself (NULL-terminated; the sizes do not include this termination). This size-contents-terminator pattern repeats for the rest of the pool.

Function Documentation

◆ strpool_get_sz()

int16_t strpool_get_sz ( const char *  str_in)

Get the size of a string pool or contained string.

Parameters
str_inString pool or character offset of string size to read.
Returns
Size of pool or string.

◆ strpool_init()

void strpool_init ( char *  strpool,
int16_t  strpool_sz 
)

Prepare a string pool for use.

Parameters
strpoolString pool to initialize (zero out and imprint size).
strpool_szSize allocated to the string pool (including all headers).