packages feed

rangeset-0.0.1.0: rangeset.cabal

cabal-version:       2.2
name:                rangeset
-- https://wiki.haskell.org/Package_versioning_policy
-- PVP summary:      +--------- breaking changes
--                   | +------- breaking changes
--                   | | +----- non-breaking additions
--                   | | | +--- code changes with no API change
version:             0.0.1.0
synopsis:            Efficient sets for semi-contiguous data
description:         Exposes the range-set datastructure, which can encode
                     enumerable data efficiently by compressing contiguous
                     ranges of members within the set.


homepage:            https://github.com/j-mie6/rangeset/tree/master
bug-reports:         https://github.com/j-mie6/rangeset/issues
license:             BSD-3-Clause
license-file:        LICENSE
author:              Jamie Willis, range-set Contributors
maintainer:          Jamie Willis <j.willis19@imperial.ac.uk>
category:            Data
build-type:          Simple
extra-doc-files:     ChangeLog.md
                     README.md
tested-with:         GHC == 8.6.5,
                     GHC == 8.8.4,
                     GHC == 8.10.7,
                     GHC == 9.0.2,
                     GHC == 9.2.3

flag safe-haskell-rangeset
  description: Make the RangeSet implementation use only safe-haskell things
  default:     False
  manual:      True

library
  exposed-modules:     Data.RangeSet
                       Data.RangeSet.Builders
                       Data.RangeSet.Primitives
                       Data.RangeSet.SetCrossSet

                       Data.RangeSet.Internal
                       Data.RangeSet.Internal.Types
                       Data.RangeSet.Internal.TestingUtils
                       Data.RangeSet.Internal.Enum
                       Data.RangeSet.Internal.SmartConstructors
                       Data.RangeSet.Internal.Extractors
                       Data.RangeSet.Internal.Inserters
                       Data.RangeSet.Internal.Lumpers
                       Data.RangeSet.Internal.Splitters
                       Data.RangeSet.Internal.Heuristics

  build-depends:       base                 >= 4.10    && < 5
  build-tool-depends:  cpphs:cpphs          >= 1.18.8  && < 1.21
  hs-source-dirs:      src/ghc
  default-language:    Haskell2010
  ghc-options:         -Wall -Weverything -Wcompat
                       -Wno-name-shadowing
                       -Wno-missing-import-lists
                       -Wno-unsafe
                       -Wno-all-missed-specialisations
                       -Wno-incomplete-uni-patterns
                       -pgmP cpphs -optP --cpp
                       -freverse-errors

  if impl(ghc >= 8.10)
    ghc-options:       -Wno-missing-safe-haskell-mode
  if impl(ghc >= 9.2)
    ghc-options:       -Wno-missing-kind-signatures
  if flag(safe-haskell-rangeset)
    cpp-options:       -DSAFE

common test-common
  build-depends:       base >=4.10 && <5,
                       rangeset,
                       tasty
  hs-source-dirs:      test
  default-language:    Haskell2010

-- TODO: break this into two groups, one for hunit and the other for quickcheck
test-suite rangeset
  import:              test-common
  type:                exitcode-stdio-1.0
  build-depends:       tasty-hunit, tasty-quickcheck
  main-is:             RangeSet.hs

common benchmark-common
  build-depends:       base >=4.10 && <5,
                       rangeset,
                       gauge,
                       deepseq
  hs-source-dirs:      benchmarks
  other-modules:       BenchmarkUtils
  default-language:    Haskell2010

benchmark rangeset-bench
  import:              benchmark-common
  type:                exitcode-stdio-1.0
  build-depends:       containers,
                       QuickCheck,
                       array,
                       selective
  main-is:             RangeSetBench.hs
  --other-modules:       Data.EnumSet

source-repository head
  type:                git
  location:            https://github.com/j-mie6/rangeset