Skip to content
FutureBlitz

    Install

    Import std.collections.pool

    Pool

    std.collections.pool

    class

    @DebugElements Public Class Pool<T> Implements Iterable<T>, Cloneable, Defaultable

    Values kept by Handles that stay valid until their value is removed, reusing removed values' slots.

    Examples

    Local names = Pool<String>()
    Local ada = names.Add("Ada")
    names.Add("Alan")
    Expect(names.Get(ada) == "Ada")
    Expect(names.Remove(ada))
    Expect(names.Get(ada) == Null)
    // Grace takes Ada's slot, but Ada's Handle still finds nothing.
    Local grace = names.Add("Grace")
    Expect(grace.Index == ada.Index && names.Get(ada) == Null)
    Expect(names.Count == 2)

    std/collections/pool.fb, line 43

    • Public Property Count: Int property #

      How many values it holds.

    • Public Property Capacity: Int property #

      How many values it has slots for before it needs more memory.

    • @PanicsAtCaller Public Method Reserve(count: Int) method #

      Makes room for count slots in all, so adding up to that many values doesn't move them again.

    • Public Method Add(value: T): Handle<T> method #

      Adds the value, and gives its Handle.

    • Public Method Get(handle: Handle<T>): T? method #

      The handle's value, or Null once it's removed.

    • Public Method Set(handle: Handle<T>, value: T): Bool method #

      Gives the handle's value a new value, and tells whether it's still there.

    • Public Method Contains(handle: Handle<T>): Bool method #

      Whether the handle's value is still there: its slot hasn't been emptied since.

    • Public Method Remove(handle: Handle<T>): Bool method #

      Removes the handle's value, and tells whether it was there.

    • Public Method Clear() method #

      Removes every value. Their Handles find nothing after.

    • Public Static Method DefaultValue(): Pool<T> static method #

      A new, empty Pool.

    • Public Method Clone(): Pool<T> method #

      A new Pool with the same values, which the same Handles find.

    • Public Method Iterate(): PoolIterator<T> method #

      The values, in the order of their slots. Removing values while going over them is fine.

    • Public Method IterateHandles(): PoolHandles<T> method #

      Each value with its Handle, in the order of their slots, for 'For handle, value In pool.IterateHandles()'. Removing values while going over them is fine.

    Report an issue with this page or with FutureBlitz on GitHub.