packages feed

byteslice-0.2.13.2: byteslice.cabal

cabal-version:   2.4
name:            byteslice
version:         0.2.13.2
synopsis:        Slicing managed and unmanaged memory
description:
  This library provides types that allow the user to talk about a slice of
  a ByteArray or a MutableByteArray. It also offers UnmanagedBytes, which
  is kind of like a slice into unmanaged memory. However, it is just an
  address and a length.

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

tested-with:     GHC ==9.4.8 || ==9.6.3 || ==9.8.1

common build-settings
  default-language: Haskell2010
  ghc-options:      -Wall -Wunused-packages

flag avoid-rawmemchr
  default:     True
  description: Avoid using rawmemchr which is non-portable GNU libc only

library
  import:           build-settings
  exposed-modules:
    Data.Bytes
    Data.Bytes.Chunks
    Data.Bytes.Encode.BigEndian
    Data.Bytes.Encode.LittleEndian
    Data.Bytes.Internal
    Data.Bytes.Mutable
    Data.Bytes.Text.Ascii
    Data.Bytes.Text.AsciiExt
    Data.Bytes.Text.Latin1
    Data.Bytes.Text.Utf8
    Data.Bytes.Text.Windows1252
    Data.Bytes.Types

  other-modules:
    Cstrlen
    Data.Bytes.Byte
    Data.Bytes.Internal.Show
    Data.Bytes.IO
    Data.Bytes.Pure
    Data.Bytes.Search
    Reps

  build-depends:
    , base                >=4.14   && <5
    , bytestring          >=0.10.8 && <0.13
    , natural-arithmetic  >=0.1.4
    , primitive           >=0.7.4  && <0.10
    , primitive-addr      >=0.1    && <0.2
    , primitive-unlifted  >=0.1.2  && <2.2
    , run-st              >=0.1.1  && <0.2
    , text                >=1.2.5
    , text-short          >=0.1.3  && <0.2
    , tuples              >=0.1    && <0.2
    , vector              >=0.12   && <0.14

  hs-source-dirs:   src
  ghc-options:      -O2

  if impl(ghc >=9.2)
    hs-source-dirs: src-new-reps

  else
    hs-source-dirs: src-old-reps

  if impl(ghc >=9.0)
    hs-source-dirs: src-ghc-cstrlen

  else
    hs-source-dirs: src-no-ghc-cstrlen

  include-dirs:     include
  includes:         bs_custom.h
  install-includes: bs_custom.h
  c-sources:        cbits/bs_custom.c

  if flag(avoid-rawmemchr)
    cc-options: -DAVOID_RAWMEMCHR=1

test-suite test
  import:         build-settings
  type:           exitcode-stdio-1.0
  hs-source-dirs: test
  main-is:        Main.hs
  build-depends:
    , base                >=4.11.1 && <5
    , byteslice
    , bytestring
    , primitive
    , quickcheck-classes  >=0.6.4
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , text                >=1.2
    , transformers

benchmark bench
  import:         build-settings
  type:           exitcode-stdio-1.0
  build-depends:
    , base
    , byteslice
    , gauge

  ghc-options:    -O2
  hs-source-dirs: bench
  main-is:        Main.hs

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