what4-1.1: src/What4/FunctionName.hs
------------------------------------------------------------------------
-- |
-- Module : What4.FunctionName
-- Description : Declarations for function names.
-- Copyright : (c) Galois, Inc 2014-2020
-- License : BSD3
-- Maintainer : Joe Hendrix <jhendrix@galois.com>
-- Stability : provisional
--
-- This provides a basic data type for function names.
------------------------------------------------------------------------
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module What4.FunctionName
( -- * FunctionName
FunctionName
, functionName
, functionNameFromText
, startFunctionName
) where
import Data.Hashable
import Data.String
import qualified Data.Text as Text
import qualified Prettyprinter as PP
------------------------------------------------------------------------
-- FunctionName
-- | For our purposes, a function name is just unicode text.
-- Individual languages may want to further restrict names.
newtype FunctionName = FunctionName { functionName :: Text.Text }
deriving (Eq, Ord, Hashable)
instance IsString FunctionName where
fromString s = FunctionName (fromString s)
instance Show FunctionName where
show (FunctionName nm) = Text.unpack nm
instance PP.Pretty FunctionName where
pretty (FunctionName nm) = PP.pretty nm
-- | Name of function for starting simulator.
startFunctionName :: FunctionName
startFunctionName = fromString "_start"
functionNameFromText :: Text.Text -> FunctionName
functionNameFromText = FunctionName