28 #ifndef ELEMENTTABLE_H
29 #define ELEMENTTABLE_H
42 template <
class CC>
class Element;
49 typedef typename CC::ATOM_TYPE T;
50 typedef typename CC::PARAM_CONFIG P;
51 enum { B = P::ELEMENT_TABLE_BITS};
52 enum { R = P::EVENT_WINDOW_RADIUS};
53 enum { ELEMENT_DATA_SLOTS = P::ELEMENT_DATA_SLOTS};
57 static const u32 SIZE = (1u<<B) - 3;
98 s32
GetIndex(u32 elementType)
const ;
170 bool AllocateElementDataSlotsFromType(
const u32 elementType, u32 slots) ;
189 u64 * GetElementDataSlotsFromType(
const u32 elementType,
const u32 slots) ;
191 u64 * GetDataAndRegister(
const u32 elementType, u32 slots) ;
193 u64 * GetDataIfRegistered(
const u32 elementType, u32 slots) ;
207 u32 SlotFor(u32 elementType)
const ;
209 struct ElementEntry {
212 m_elementDataStart = 0;
213 m_elementDataLength = 0;
215 const Element<CC>* m_element;
216 u16 m_elementDataStart;
217 u16 m_elementDataLength;
219 u32 m_hashSlotsInUse;
221 u64 m_elementData[ELEMENT_DATA_SLOTS];
222 u32 m_nextFreeElementDataIndex;
228 #include "ElementTable.tcc"
ElementTable()
Definition: ElementTable.tcc:92
void Execute(EventWindow< CC > &window)
Definition: ElementTable.tcc:61
const Element< CC > * Lookup(u32 elementType) const
Definition: ElementTable.tcc:55
void Reinit()
Definition: ElementTable.tcc:178
bool RegisterElement(const Element< CC > &e)
Definition: ElementTable.tcc:85
u32 GetSize() const
Definition: ElementTable.h:76
void Insert(const Element< CC > &theElement)
Definition: ElementTable.tcc:35
s32 GetIndex(u32 elementType) const
Definition: ElementTable.tcc:11
Definition: ElementTable.h:46
u64 * GetElementDataSlots(const Element< CC > &e, const u32 slots)
Definition: ElementTable.tcc:126
Definition: ElementTable.h:43
bool AllocateElementDataSlots(const Element< CC > &e, u32 slots)
Definition: ElementTable.tcc:98
~ElementTable()
Definition: ElementTable.h:108