From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Utilities/UniqueIDGenerator.cpp | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Runtime/Utilities/UniqueIDGenerator.cpp (limited to 'Runtime/Utilities/UniqueIDGenerator.cpp') diff --git a/Runtime/Utilities/UniqueIDGenerator.cpp b/Runtime/Utilities/UniqueIDGenerator.cpp new file mode 100644 index 0000000..5649997 --- /dev/null +++ b/Runtime/Utilities/UniqueIDGenerator.cpp @@ -0,0 +1,34 @@ +#include "UnityPrefix.h" +#include "UniqueIDGenerator.h" + +UniqueIDGenerator::UniqueIDGenerator() +{ + m_IDs.clear(); + m_IDs.push_back(2); // Generated ID sequence should not contain 0 + m_free = 1; +} + +unsigned int UniqueIDGenerator::AllocateID () +{ + DebugAssert( m_free <= m_IDs.size() ); + + if (m_free == m_IDs.size()) + { + m_IDs.push_back(m_free+1); + } + + unsigned int result = m_free; + m_free = m_IDs[m_free]; + + DebugAssert(result != 0); + + return result; +} + +void UniqueIDGenerator::RemoveID (unsigned int _ID) +{ + DebugAssert( (_ID > 0) && (_ID < m_IDs.size()) ); + + m_IDs[_ID] = m_free; + m_free = _ID; +} -- cgit v1.1-26-g67d0