------------------------------------------------------------------------ -- | -- Module : What4.FunctionName -- Description : Declarations for function names. -- Copyright : (c) Galois, Inc 2014-2020 -- License : BSD3 -- Maintainer : Joe Hendrix -- 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