-- Initial hgeometry.cabal generated by cabal init.  For further
-- documentation, see http://haskell.org/cabal/users-guide/

name:                hgeometry-combinatorial
version:             0.9.0.0
synopsis:            Data structures, and Data types.
description:
    The Non-geometric data types and algorithms used in HGeometry.
homepage:            https://fstaals.net/software/hgeometry
license:             BSD3
license-file:        LICENSE
author:              Frank Staals
maintainer:          frank@fstaals.net
-- copyright:

tested-with:         GHC >= 8.4

category:            Geometry
build-type:          Simple

data-files:          test/Data/PlanarGraph/myGraph.yaml
                     -- in the future (cabal >=2.4) we can use
                     -- examples/**/*.in
                     -- examples/**/*.out

extra-source-files:  README.md
                     changelog.org

Extra-doc-files:     docs/Data/PlanarGraph/testG.png
                     docs/Data/PlaneGraph/planegraph.png
                     -- docs/**/*.png

cabal-version:       2.0
source-repository head
  type:     git
  location: https://github.com/noinia/hgeometry


library
  ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults

  exposed-modules:
                    -- * Graph Algorithms
                    Algorithms.Graph.DFS
                    Algorithms.Graph.MST


                    Algorithms.StringSearch.KMP

                    -- * General Data Types
                    Data.UnBounded
                    Data.Intersection
                    Data.Range
                    Data.Ext
                    Data.LSeq
                    Data.CircularSeq
                    Data.Sequence.Util
                    Data.BinaryTree
                    Data.BinaryTree.Zipper

                    Data.CircularList.Util
                    Data.BalBST
                    Data.OrdSeq
                    Data.SlowSeq
                    Data.Tree.Util
                    Data.Util

                    Data.DynamicOrd
                    Data.Set.Util

                    -- * Planar Graphs
                    Data.Permutation
                    Data.PlanarGraph
                    Data.PlanarGraph.AdjRep
                    Data.PlanarGraph.IO
                    Data.PlanarGraph.Dart
                    Data.PlanarGraph.Core
                    Data.PlanarGraph.Dual
                    Data.PlanarGraph.EdgeOracle

                    -- * Other
                    System.Random.Shuffle
                    Control.Monad.State.Persistent
                    Data.Yaml.Util

  other-modules:

  -- other-extensions:
  build-depends:
                base                    >= 4.11      &&     < 5
              , bifunctors              >= 4.1
              , bytestring              >= 0.10
              , containers              >= 0.5.9
              , dlist                   >= 0.7
              , lens                    >= 4.2
              , contravariant           >= 1.5
              , semigroupoids           >= 5
              , semigroups              >= 0.18
              , singletons              >= 2.0
              , vinyl                   >= 0.10
              , deepseq                 >= 1.1
              , fingertree              >= 0.1
              , MonadRandom             >= 0.5
              , QuickCheck              >= 2.5
              , quickcheck-instances    >= 0.3
              , reflection              >= 2.1

              , vector                  >= 0.11
              , data-clist              >= 0.1.2.3
              , vector-builder          >= 0.3.7

              , aeson                   >= 1.0
              , yaml                    >= 0.8
              , text                    >= 1.1.1.0

              , mtl
              , template-haskell




  hs-source-dirs: src
                  -- examples/demo

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes
                    , TypeApplications
                    , ScopedTypeVariables

                    , PatternSynonyms
                    , TupleSections
                    , LambdaCase
                    , ViewPatterns

                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable
                    , DeriveGeneric
                    , AutoDeriveTypeable


                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses

test-suite doctests
  type:          exitcode-stdio-1.0
  ghc-options:   -threaded
  main-is:       doctests.hs
  build-depends: base
               , doctest             >= 0.8
--               , doctest-discover

  default-language:    Haskell2010

test-suite hspec
  type:                 exitcode-stdio-1.0
  default-language:     Haskell2010
  hs-source-dirs:       test
  main-is:              Spec.hs
  ghc-options:   -fno-warn-unticked-promoted-constructors
                 -fno-warn-partial-type-signatures
                 -fno-warn-missing-signatures

  build-tool-depends: hspec-discover:hspec-discover

  other-modules: Algorithms.StringSearch.KMPSpec
                 Data.RangeSpec
                 Data.EdgeOracleSpec
                 Data.PlanarGraphSpec
                 Data.OrdSeqSpec
                 Data.CircularSeqSpec


  build-depends:        base
                      , hspec                   >= 2.1
                      , QuickCheck              >= 2.5
                      , quickcheck-instances    >= 0.3
                      , approximate-equality    >= 1.1.0.2
                      , hgeometry-combinatorial
                      , lens
                      , data-clist
                      , linear
                      , bytestring
                      , vinyl
                      , semigroups
                      , vector
                      , containers
                      , random
                      , singletons
                      , filepath
                      , directory
                      , yaml
                      , MonadRandom

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes
                    , TypeApplications
                    , ScopedTypeVariables


                    , PatternSynonyms
                    , ViewPatterns
                    , LambdaCase
                    , TupleSections


                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , AutoDeriveTypeable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses
                    , OverloadedStrings