{-# language GADTSyntax #-}
{-# language KindSignatures #-}
{-# language MagicHash #-}
{-# language UnliftedNewtypes #-}

module Data.Text.Short.Unlifted
  ( ShortText#(..)
  , lift
  , unlift
  ) where


import Data.Unlifted (ShortText#(ShortText#))
import Data.Text.Short (ShortText)
import Data.ByteString.Short.Internal as TS

import qualified Data.Text.Short as TS
import qualified Data.Text.Short.Unsafe as TS

lift :: ShortText# -> ShortText
lift :: ShortText# -> ShortText
lift (ShortText# ByteArray#
x) = ShortByteString -> ShortText
TS.fromShortByteStringUnsafe (ByteArray# -> ShortByteString
SBS ByteArray#
x)

unlift :: ShortText -> ShortText#
unlift :: ShortText -> ShortText#
unlift ShortText
t = case ShortText -> ShortByteString
TS.toShortByteString ShortText
t of
  SBS ByteArray#
x -> ByteArray# -> ShortText#
ShortText# ByteArray#
x