fallout2-ce/src/dictionary.h

49 lines
1.5 KiB
C
Raw Normal View History

2022-05-19 01:51:26 -07:00
#ifndef DICTIONARY_H
#define DICTIONARY_H
#include "memory_defs.h"
// A tuple containing individual key-value pair of a dictionary.
typedef struct DictionaryEntry {
char* key;
void* value;
} DictionaryEntry;
// A collection of key/value pairs.
//
// The keys in dictionary are always strings. Internally dictionary entries
// are kept sorted by the key. Both keys and values are copied when new entry
// is added to dictionary. For this reason the size of the value's type is
// provided during dictionary initialization.
typedef struct Dictionary {
int marker;
// The number of key/value pairs in the dictionary.
int entriesLength;
// The capacity of key/value pairs in [entries] array.
int entriesCapacity;
// The size of the dictionary values in bytes.
size_t valueSize;
int field_10;
int field_14;
int field_18;
int field_1C;
int field_20;
// The array of key-value pairs.
DictionaryEntry* entries;
} Dictionary;
int dictionaryInit(Dictionary* dictionary, int initialCapacity, size_t valueSize, void* a4);
int dictionarySetCapacity(Dictionary* dictionary, int newCapacity);
int dictionaryFree(Dictionary* dictionary);
int dictionaryGetIndexByKey(Dictionary* dictionary, const char* key);
int dictionaryAddValue(Dictionary* dictionary, const char* key, const void* value);
int dictionaryRemoveValue(Dictionary* dictionary, const char* key);
void dictionarySetMemoryProcs(MallocProc* mallocProc, ReallocProc* reallocProc, FreeProc* freeProc);
#endif /* DICTIONARY_H */