project64/Source/AsmJitLite/core/zonehash.h

30 lines
712 B
C++

#pragma once
#include "../core/zone.h"
ASMJIT_BEGIN_NAMESPACE
//! \addtogroup asmjit_zone
//! \{
//! Node used by \ref ZoneHash template.
//!
//! You must provide function `bool eq(const Key& key)` in order to make `ZoneHash::get()` working.
class ZoneHashNode {
public:
ASMJIT_NONCOPYABLE(ZoneHashNode)
inline ZoneHashNode(uint32_t hashCode = 0) noexcept
: _hashNext(nullptr),
_hashCode(hashCode),
_customData(0) {}
//! Next node in the chain, null if it terminates the chain.
ZoneHashNode* _hashNext;
//! Precalculated hash-code of key.
uint32_t _hashCode;
//! Padding, can be reused by any Node that inherits `ZoneHashNode`.
uint32_t _customData;
};
ASMJIT_END_NAMESPACE