packages feed

language-bluespec-0.1: src/Language/Bluespec/Classic/AST/FString.hs

-- This corresponds to src/comp/FStringCompat.hs in bsc.
module Language.Bluespec.Classic.AST.FString
  ( FString
  , getFString
  , mkFString
  , tmpFString
  ) where

import Data.String (IsString(..))
import qualified Data.Text as T
import Text.PrettyPrint.HughesPJClass

import Language.Bluespec.Classic.AST.SString
import Language.Bluespec.Prelude

-- wrapper to make SStrings look like FStrings

newtype FString = FString SString
  deriving (Eq, Ord)

instance IsString FString where
  fromString = FString . T.pack

instance Show FString where
    show (FString s) = show s

instance Pretty FString where
    pPrintPrec _ _ x = text (show x)

getFString :: FString -> String
getFString = toString

mkFString :: String -> FString
mkFString s = fromString s

tmpFString :: Int -> String -> FString
tmpFString _ = fromString

toString :: FString -> String
toString (FString s) = T.unpack s