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

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

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

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