cabal-version:   2.2
name:            byte-containers
version:         0.1.0.1
synopsis:        Sets and maps with 8-bit words for keys
description:
  This library provides variant of @Data.Map@ and @Data.Set@ from
  the @containers@ library where the key is specialized to @Word8@.
  Internally, this uses a 256-bit bitmask for the presence of keys
  and a @SmallArray@ of values of keys that were present. For example,
  the map @{2 => Z, 3 => B, 5 => X, 9 => A}@ would be repsented in
  memory as:
  .
  > Bitmask: 0011010001000000... (240 more zero bits)
  > Value Array: Z,B,X,A
  .
  This is optimized for reads. Lookup is @O(1)@. Union is technically
  @O(1)@ but only because the universe of keys is finite. The current
  implementation always scans through all 256 bits of key space.

homepage:        https://github.com/byteverse/byte-containers
bug-reports:     https://github.com/byteverse/byte-containers/issues
license:         BSD-3-Clause
license-file:    LICENSE
author:          Andrew Martin
maintainer:      amartin@layer3com.com
copyright:       2020 Andrew Martin
category:        Data
build-type:      Simple
extra-doc-files: CHANGELOG.md

library
  build-depends:
    , base       >=4.12  && <5
    , primitive  >=0.7   && <0.10
    , run-st     >=0.1   && <0.2
    , wide-word  >=0.1.1 && <0.2

  hs-source-dirs:   src
  default-language: Haskell2010
  exposed-modules:
    Data.Map.Word8
    Data.Set.Word8

  ghc-options:      -Wall -O2

test-suite test
  default-language: Haskell2010
  type:             exitcode-stdio-1.0
  hs-source-dirs:   test
  main-is:          Main.hs
  ghc-options:      -Wall -O2
  build-depends:
    , base                >=4.12  && <5
    , byte-containers
    , byteslice           >=0.2.9 && <0.3
    , primitive           >=0.7   && <0.10
    , quickcheck-classes  >=0.6.4
    , tasty
    , tasty-quickcheck

source-repository head
  type:     git
  location: git://github.com/byteverse/byte-containers.git