# Module sets

The `sets` module implements an efficient hash set and ordered hash set.

Note: The data types declared here have value semantics: This means that `=` performs a copy of the set.

# Imports

os, hashes, math

# Types

    TSet* {.final, myShallow.}[A] = object
      data: TKeyValuePairSeq[A]
      counter: int

  a generic hash set

    TOrderedSet* {.final, myShallow.}[A] = object
      data: TOrderedKeyValuePairSeq[A]
      counter, first, last: int

  set that remembers insertion order

# Procs

    proc len*[A](s: TSet[A]): int

  returns the number of keys in s.

    proc card*[A](s: TSet[A]): int

  alias for len.

    proc contains*[A](s: TSet[A]; key: A): bool

  returns true iff key is in s.

    proc incl*[A](s: var TSet[A]; key: A)

  includes an element key in s.

    proc excl*[A](s: var TSet[A]; key: A)

  excludes key from the set s.

    proc containsOrIncl*[A](s: var TSet[A]; key: A): bool

  returns true if s contains key, otherwise key is included in s and false is returned.

    proc initSet*[A](initialSize = 64): TSet[A]

  creates a new hash set that is empty. initialSize needs to be a power of two.

    proc toSet*[A](keys: openarray[A]): TSet[A]

  creates a new hash set that contains the given keys.

    proc `$`*[A](s: TSet[A]): string

  The $ operator for hash sets.

    proc len*[A](s: TOrderedSet[A]): int {.inline.}

  returns the number of keys in s.

    proc card*[A](s: TOrderedSet[A]): int {.inline.}

  alias for len.

    proc contains*[A](s: TOrderedSet[A]; key: A): bool

  returns true iff key is in s.

    proc incl*[A](s: var TOrderedSet[A]; key: A)

  includes an element key in s.

    proc containsOrIncl*[A](s: var TOrderedSet[A]; key: A): bool

  returns true if s contains key, otherwise key is included in s and false is returned.

    proc initOrderedSet*[A](initialSize = 64): TOrderedSet[A]

  creates a new ordered hash set that is empty. initialSize needs to be a power of two.

    proc toOrderedSet*[A](keys: openarray[A]): TOrderedSet[A]

  creates a new ordered hash set that contains the given keys.

    proc `$`*[A](s: TOrderedSet[A]): string

  The $ operator for ordered hash sets.

# Iterators

    iterator items*[A](s: TSet[A]): A

  iterates over any key in the table t.

    iterator items*[A](s: TOrderedSet[A]): A

  iterates over any key in the set s in insertion order.

Generated: 2012-09-23 21:47:54 UTC