OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
ManagedIDs.h
Go to the documentation of this file.
1 #include <cstddef>
2 #include <queue>
3 
9 class ManagedIDs {
10 
11 public:
12 
14  {}
15 
17  size_t nextID() {
18 
19  size_t id = 0;
20 
21  if(freeids_.empty()) {
22  id = next_free_;
23  next_free_++;
24  } else {
25  id = freeids_.front();
26  freeids_.pop();
27  }
28 
29  return id;
30  }
31 
32 
34  void freeID(size_t id) {
35 
36  if(id == next_free_ - 1)
37  next_free_--;
38  else
39  freeids_.push(id);
40  }
41 
42 
43 private:
44 
46  std::queue<size_t> freeids_;
47 
49  size_t next_free_;
50 
51 };
size_t nextID()
return next free ID
Definition: ManagedIDs.h:17
Simple class to manage an ID pool.
Definition: ManagedIDs.h:9
void freeID(size_t id)
free previously allocated ID
Definition: ManagedIDs.h:34
size_t next_free_
next free ID
Definition: ManagedIDs.h:49
std::queue< size_t > freeids_
queue to handle freed ID&#39;s
Definition: ManagedIDs.h:46