42#include <TargConfig.h>
55 void operator delete(
void* d) {
if(d)
::baFree(d); }
56 void *
operator new(size_t,
void *place) {
return place; }
57 void operator delete(
void*,
void *) { }
81#define SplayTreeNode_getKey(o) (o)->key
142#define SplayTree_constructor(o, compareCB) do { \
143 (o)->compare = compareCB; \
165#define SplayTree_getRoot(o) (o)->root
const void * SplayTreeKey
Borrowed key interpreted by SplayTree_Compare.
Definition: SplayTree.h:46
int(* SplayTree_Iter)(void *o, SplayTreeNode *n)
Visit a node during SplayTree_iterate.
Definition: SplayTree.h:103
BA_API SplayTreeNode * SplayTree_find(SplayTree *o, SplayTreeKey key)
Search and adjust the tree, even when no matching key is found.
BA_API int SplayTree_iterate(SplayTree *o, void *userObj, SplayTree_Iter i)
Visit nodes in root-left-right order, not sorted key order.
BA_API void SplayTreeNode_constructor(SplayTreeNode *o, SplayTreeKey key)
Initialize a node without allocating storage.
struct SplayTreeNode SplayTreeNode
Intrusive tree node.
int(* SplayTree_Compare)(SplayTreeNode *n, SplayTreeKey k)
Compare a search key with a node's key.
Definition: SplayTree.h:96
#define SplayTree_constructor(o, compareCB)
Initialize an empty tree without allocating storage.
Definition: SplayTree.h:142
BA_API int SplayTree_remove(SplayTree *o, SplayTreeNode *n)
Unlink a node and clear its left and right links.
BA_API int SplayTree_insert(SplayTree *o, SplayTreeNode *n)
Insert a node.
struct SplayTree SplayTree
Self-adjusting tree of caller-owned nodes, with unique keys.
#define SplayTreeNode_getKey(o)
Read a node's key.
Definition: SplayTree.h:81
#define SplayTree_getRoot(o)
Read the current root without reshaping the tree.
Definition: SplayTree.h:165
void * baMalloc(size_t size)
Allocate uninitialized storage using the target's configured allocator.
void baFree(void *p)
Release storage using the target's configured allocator.
Intrusive tree node.
Definition: SplayTree.h:52
SplayTreeNode()
Leave storage uninitialized; call SplayTreeNode_constructor before use.
Definition: SplayTree.h:59
SplayTreeKey getKey()
Definition: SplayTree.h:87
Self-adjusting tree of caller-owned nodes, with unique keys.
Definition: SplayTree.h:109
SplayTreeNode * getRoot()
Definition: SplayTree.h:184
int insert(SplayTreeNode *n)
Insert a node without allocating memory.
Definition: SplayTree.h:178
SplayTree()
Leave storage uninitialized; call SplayTree_constructor before use.
Definition: SplayTree.h:112
int remove(SplayTreeNode *n)
Unlink a node without freeing it.
Definition: SplayTree.h:182
SplayTreeNode * find(SplayTreeKey key)
Find a node and adjust the tree.
Definition: SplayTree.h:180