Options
All
  • Public
  • Public/Protected
  • All
Menu

A string↔integer bimap. Assigns dense ids (0, 1, 2, …) in first-seen order; lookups are O(1) both directions. Grows monotonically — there is no removal, matching machine semantics (states and actions are fixed after construction; late interning only happens for never-matching lookups such as hook registrations naming unknown states).

example

const i = new Interner(); i.intern('red'); // 0 i.intern('green'); // 1 i.intern('red'); // 0 (idempotent) i.id_of('green'); // 1 i.name_of(0); // 'red'

see

pair_key

Hierarchy

  • Interner

Index

Constructors

Accessors

Methods

Constructors

Accessors

  • get size(): number

Methods

  • id_of(name: string): number
  • Return the id for name without interning, or undefined when the name has never been interned. This is the hot-path probe for user-supplied names.

    example

    interner.id_of('mauve'); // undefined — never interned

    Parameters

    • name: string

      The string to look up.

    Returns number

  • intern(name: string): number
  • Return the id for name, assigning the next dense id if the name has not been seen before.

    example

    interner.intern('red'); // 0 on first call, 0 on every later call

    Parameters

    • name: string

      The string to intern.

    Returns number

    The (possibly newly assigned) integer id.

  • name_of(id: number): string
  • Return the name for id, or undefined for an id never assigned.

    example

    interner.name_of(0); // 'red'

    Parameters

    • id: number

      The integer id to invert.

    Returns string

Generated using TypeDoc