mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
AK: Allow specifying a minimum value for IDs returned by IDAllocator
This commit is contained in:
committed by
Linus Groh
parent
c978beb18b
commit
4d9c14ca67
@@ -12,11 +12,17 @@
|
||||
|
||||
namespace AK {
|
||||
|
||||
// This class manages a pool of random ID's in the range 1..INT32_MAX
|
||||
// This class manages a pool of random ID's in the range N (default of 1) to INT32_MAX
|
||||
class IDAllocator {
|
||||
|
||||
public:
|
||||
IDAllocator() = default;
|
||||
|
||||
explicit IDAllocator(int minimum_value)
|
||||
: m_minimum_value(minimum_value)
|
||||
{
|
||||
}
|
||||
|
||||
~IDAllocator() = default;
|
||||
|
||||
int allocate()
|
||||
@@ -25,7 +31,7 @@ public:
|
||||
int id = 0;
|
||||
for (;;) {
|
||||
id = static_cast<int>(get_random_uniform(NumericLimits<int>::max()));
|
||||
if (id == 0)
|
||||
if (id < m_minimum_value)
|
||||
continue;
|
||||
if (m_allocated_ids.set(id) == AK::HashSetResult::InsertedNewEntry)
|
||||
break;
|
||||
@@ -40,6 +46,7 @@ public:
|
||||
|
||||
private:
|
||||
HashTable<int> m_allocated_ids;
|
||||
int m_minimum_value { 1 };
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user