cabal-version:       2.2
name:                xor
version:             0.0.1.3
x-revision:          1

category:            Data, Codec
author:              Herbert Valerio Riedel
maintainer:          Andreas Abel
bug-reports:         https://github.com/haskell-hvr/xor/issues

copyright:           © 2020  Herbert Valerio Riedel
license:             GPL-2.0-or-later
license-file:        LICENSE.GPLv2

synopsis: Efficient XOR masking
description:
  This package provides efficient implementations of routines for applying <https://en.wikipedia.org/wiki/Bitwise_operation#XOR bitwise XOR> masks to binary data.
  .
  The currently supported operations (see "Data.XOR" API documentation for more details) are applying
  .
  * 8-bit  wide XOR masks or
  * 32-bit wide XOR masks
  .
  to binary data represented by
  .
  * Strict @ByteString@s,
  * Lazy @ByteString@s,
  * @ShortByteString@s (i.e. @ByteArray#@s), or
  * @CStringLen@ (i.e. @Ptr@s).
  .
  The performance is comparable to portable ISO C99 implementations but this library is implemented as pure Haskell and is thereby compatible with compile targets such as <https://github.com/ghcjs/ghcjs GHCJS>.

tested-with:
  GHC == 9.12.2
  GHC == 9.10.2
  GHC == 9.8.4
  GHC == 9.6.7
  GHC == 9.4.8
  GHC == 9.2.8
  GHC == 9.0.2
  GHC == 8.10.7
  GHC == 8.8.4
  GHC == 8.6.5
  GHC == 8.4.4
  GHC == 8.2.2
  GHC == 8.0.2

extra-doc-files:
  CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/haskell-hvr/xor.git

common defaults
  default-language:    Haskell2010
  other-extensions:    CPP
                       BangPatterns
                       UnboxedTuples
                       MagicHash

  build-depends:
    , base            >= 4.9      && < 5
    , bytestring      >= 0.10.4   && < 0.13
    , ghc-byteorder  ^>= 4.11.0.0

  ghc-options:
    -Wall
    -Wcompat

library
  import: defaults

  hs-source-dirs: src
  exposed-modules:
    Data.XOR

  other-modules:
    Endianness

benchmark bench
  import: defaults

  type: exitcode-stdio-1.0

  hs-source-dirs:      src-bench
  main-is:             Main.hs

  build-depends:
    , xor
      -- dependencies specific to this component
    , criterion ^>= 1.5.6 || ^>= 1.6.0.0

test-suite test
  import: defaults

  type: exitcode-stdio-1.0

  hs-source-dirs:      src-test
  main-is:             Main.hs

  build-depends:

  build-depends:
    , xor
      -- dependencies specific to this component
    , tasty             >= 1.2.3 && < 1.6
    , tasty-hunit      ^>= 0.10
    , tasty-quickcheck  >= 0.10  && < 1
    , QuickCheck        >= 2.14  && < 3