cabal-version:      1.18
name:               text-short
version:            0.1.5
x-revision:         2
synopsis:           Memory-efficient representation of Unicode text strings
license:            BSD3
license-file:       LICENSE
author:             Herbert Valerio Riedel
maintainer:         [email protected]
bug-reports:        https://github.com/hvr/text-short/issues
category:           Data
build-type:         Simple
description:
 This package provides the 'ShortText' type which is suitable for keeping many short strings in memory. This is similiar to how 'ShortByteString' relates to 'ByteString'.
 .
 The main difference between 'Text' and 'ShortText' is that 'ShortText' doesn't support zero-copy slicing (thereby saving 2 words), and, compared to text-1.*, that it uses UTF-8 instead of UTF-16 internally. Consequently, the memory footprint of a (boxed) 'ShortText' value is 4 words (2 words when unboxed) plus the length of the UTF-8 encoded payload.

tested-with:
 GHC ==7.8.4
  || ==7.10.3
  || ==8.0.2
  || ==8.2.2
  || ==8.4.4
  || ==8.6.5
  || ==8.8.3
  || ==8.10.7
  || ==9.0.2
  || ==9.2.7
  || ==9.4.4
  || ==9.6.1

extra-source-files: ChangeLog.md

source-repository head
 type:     git
 location: https://github.com/hvr/text-short.git

flag asserts
 description: Enable runtime-checks via @assert@
 default:     False
 manual:      True

library
 exposed-modules:
   Data.Text.Short
   Data.Text.Short.Partial
   Data.Text.Short.Unsafe

 other-modules:    Data.Text.Short.Internal
 build-depends:
     base              >=4.7     && <4.19
   , binary            >=0.7.1   && <0.9
   , bytestring        >=0.10.4  && <0.12
   , deepseq           >=1.3     && <1.5
   , ghc-prim          >=0.3.1   && <0.11
   , hashable          >=1.2.6   && <1.5
   , template-haskell  >=2.9.0.0 && <2.21
   , text              >=1.0     && <1.3 || >=2.0 && <2.1

 if impl(ghc >=8.0)
   build-depends: bytestring >=0.10.8.0

 if !impl(ghc >=8.0)
   build-depends: semigroups >=0.18.2 && <0.21

 -- GHC version specific PrimOps
 if impl(ghc >=8.4)
   hs-source-dirs: src-ghc804

 else
   c-sources:      cbits/memcmp.c
   hs-source-dirs: src-ghc708

 other-modules:    PrimOps
 hs-source-dirs:   src
 default-language: Haskell2010
 other-extensions:
   CPP
   GeneralizedNewtypeDeriving
   MagicHash
   Trustworthy
   UnliftedFFITypes
   Unsafe

 if impl(ghc >=8)
   other-extensions: TemplateHaskellQuotes

 else
   other-extensions: TemplateHaskell

 c-sources:        cbits/cbits.c

 if flag(asserts)
   ghc-options: -fno-ignore-asserts

 else
   cc-options: -DNDEBUG=1

 ghc-options:      -Wall
 cc-options:       -Wall

test-suite tests
 type:             exitcode-stdio-1.0
 hs-source-dirs:   src-test
 main-is:          Tests.hs

 -- bytestring dependency for cabal_macros.h
 build-depends:
     base
   , binary
   , bytestring
   , template-haskell
   , text
   , text-short

 -- deps which don't inherit constraints from library stanza:
 build-depends:
     tasty             >=1.4    && <1.5
   , tasty-hunit       >=0.10.0 && <0.11
   , tasty-quickcheck  >=0.10   && <0.11

 default-language: Haskell2010