101# define CORPUS_BINNODE(name, height, Control_Data) \
102 template <class Key> \
103class name : public Control_Data \
107 static const size_t MaxHeight = height; \
109 static name * NullPtr; \
119 Key& get_key() { return key; } \
121 name*& getL() { return lLink; } \
123 name*& getR() { return rLink; } \
125 name(const Key& k) : key(k), lLink(NullPtr), rLink(NullPtr) \
130 name(const Control_Data & control_data, const Key& k) : \
131 Control_Data(control_data), \
132 key(k), lLink(NullPtr), rLink(NullPtr) \
137 name(const Control_Data & control_data) : \
138 Control_Data(control_data), \
139 lLink(NullPtr), rLink(NullPtr) \
144 name() : lLink(NullPtr), rLink(NullPtr) \
149 name(SentinelCtor) : Control_Data(sentinelCtor) { } \
151 void reset() { rLink = lLink = NullPtr; }
165# define DECLARE_BINNODE(name, height, Control_Data) \
166CORPUS_BINNODE(name, height, Control_Data) \
168CORPUS_BINNODE(name##Vtl, height, Control_Data) \
169virtual ~name##Vtl() { } \
178# define SET_BINNODE_nullptr_POINTER(ptr, name) \
179template <class Key> name<Key> * name<Key>::NullPtr = ptr; \
180template <class Key> name##Vtl<Key> * name##Vtl<Key>::NullPtr = ptr
Debug assertion and warning utilities.
Core definitions, constants, and utility macros for Aleph-w.
Basic binary node with no extra control data.
Empty placeholder class with no data members.
#define DECLARE_BINNODE(name, height, Control_Data)
Declare a binary node class and its virtual destructor variant.
#define SET_BINNODE_nullptr_POINTER(ptr, name)
Initialize the static NullPtr sentinel for a node type.