Name:                bitwise
Version:             1.0.0.1
x-revision: 10
Synopsis:            fast multi-dimensional unboxed bit packed Bool arrays
Description:
  Unboxed multidimensional bit packed Bool arrays with fast aggregate
  operations based on lifting Bool operations to bitwise operations.
  .
  There are many other bit packed structures out there, but none met
  all of these requirements:
  .
    (1) unboxed bit packed Bool array,
  .
    (2) multi-dimensional indexing,
  .
    (3) fast (de)serialization, or interoperable with foreign code,
  .
    (4) fast aggregate operations (fold, map, zip).
  .
  Quick tour of the bitwise library:
  .
  [Data.Bits.Bitwise] Lift boolean operations on 'Bool' to bitwise
  operations on 'Data.Bits.Bits'.
  .
  [Data.Array.BitArray] Immutable bit arrays.
  .
  [Data.Array.BitArray.ST] Mutable bit arrays in 'Control.Monad.ST.ST'.
  .
  [Data.Array.BitArray.IO] Mutable bit arrays in 'IO'.
  .
  [Data.Array.BitArray.ByteString] (De)serialization.
  .
  [Codec.Image.PBM] Portable bitmap monochrome 2D image format.
  .
  Very rough performance benchmarks:
  .
    * immutable random access single bit reads:
      @BitArray ix@ is about 40% slower than @UArray ix Bool@,
  .
    * 'Control.Monad.ST.ST' mutable random access single bit reads:
      @STBitArray s ix@ is about the same as @STUArray s ix Bool@,
  .
    * immutable map @Bool -> Bool@:
      @BitArray ix@ is about 85x faster than @UArray ix Bool@,
  .
    * immutable zipWith @Bool -> Bool -> Bool@:
      @BitArray ix@ is about 1300x faster than @UArray ix Bool@.

Homepage:            https://code.mathr.co.uk/bitwise
License:             BSD3
License-file:        LICENSE
Author:              Claude Heiland-Allen
Maintainer:          claude@mathr.co.uk
Copyright:           (c) 2012,2016,2018 Claude Heiland-Allen
Category:            Data, Data Structures, Bit Vectors
Build-type:          Simple

Cabal-version:       >= 1.10

Library
  Exposed-modules:
    Data.Bits.Bitwise
    Data.Array.BitArray
    Data.Array.BitArray.IO
    Data.Array.BitArray.ST
    Data.Array.BitArray.ByteString
    Codec.Image.PBM

  Other-modules:
    Data.Array.BitArray.Internal

  Build-depends:
    base >= 4.7 && < 4.21,
    bytestring < 0.13,
    array < 0.6

  HS-source-dirs: src

  Default-Language: Haskell2010
  Other-Extensions: PatternGuards

  GHC-Options:        -Wall

Test-Suite bitwise-testsuite
  type:    exitcode-stdio-1.0
  main-is: extra/testsuite.hs
  build-depends:
    bitwise,
    base,
    QuickCheck >= 2.4 && < 2.16
  Default-Language: Haskell2010

Benchmark bitwise-benchmark
  type:    exitcode-stdio-1.0
  main-is: extra/benchmark.hs
  build-depends:
    bitwise,
    base,
    array,
    bytestring,
    criterion >= 0.6 && < 1.7
  Default-Language: Haskell2010

source-repository head
  type:     git
  location: https://code.mathr.co.uk/bitwise.git

source-repository this
  type:     git
  location: https://code.mathr.co.uk/bitwise.git
  tag:      v1.0.0.1