File tree 1 file changed +18
-3
lines changed 1 file changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -477,6 +477,17 @@ namespace kit
477
477
m_Unused = std::min (id, m_Unused);
478
478
return e;
479
479
}
480
+
481
+ unsigned add (std::shared_ptr<T> val) {
482
+ unsigned id = next ();
483
+ m_Group[id] = val;
484
+ return id;
485
+ }
486
+
487
+ bool add (unsigned id, std::shared_ptr<T> val) {
488
+ m_Group[id] = val;
489
+ return true ;
490
+ }
480
491
481
492
unsigned remove_if (std::function<bool (const std::shared_ptr<T>&)> func)
482
493
{
@@ -515,9 +526,13 @@ namespace kit
515
526
}
516
527
unsigned next () {
517
528
auto l = this ->lock ();
518
- while (m_Group.find (m_Unused) != m_Group.end () ||
519
- m_Reserved.find (m_Unused) != m_Reserved.end ())
520
- {
529
+ while (true ){
530
+ if (m_Reserved.find (m_Unused) == m_Reserved.end () &&
531
+ m_Group.find (m_Unused) == m_Group.end ()
532
+ ){
533
+ ++m_Unused;
534
+ break ;
535
+ }
521
536
++m_Unused;
522
537
}
523
538
return m_Unused-1 ;
You can’t perform that action at this time.
0 commit comments