summaryrefslogtreecommitdiff
path: root/Runtime/Utilities/UniqueIDGenerator.cpp
blob: 56499971e5d01f1fa5a8c8904927c678592baee8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
}