-- | Defines the 'CodeType' data type
module Drasil.GOOL.CodeType (
    ClassName, CodeType(..)
    ) where

type ClassName = String

data CodeType = Boolean
              | Integer -- Maps to 32-bit signed integer in all languages but
                        -- Python, where integers have unlimited precision
              | Float
              | Double
              | Char
              | String
              | InFile
              | OutFile
              | List CodeType
              | Set CodeType
              | Array CodeType
              | Object ClassName
              | Func [CodeType] CodeType
              | Void deriving (CodeType -> CodeType -> Bool
(CodeType -> CodeType -> Bool)
-> (CodeType -> CodeType -> Bool) -> Eq CodeType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CodeType -> CodeType -> Bool
== :: CodeType -> CodeType -> Bool
$c/= :: CodeType -> CodeType -> Bool
/= :: CodeType -> CodeType -> Bool
Eq, Int -> CodeType -> ShowS
[CodeType] -> ShowS
CodeType -> ClassName
(Int -> CodeType -> ShowS)
-> (CodeType -> ClassName)
-> ([CodeType] -> ShowS)
-> Show CodeType
forall a.
(Int -> a -> ShowS) -> (a -> ClassName) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CodeType -> ShowS
showsPrec :: Int -> CodeType -> ShowS
$cshow :: CodeType -> ClassName
show :: CodeType -> ClassName
$cshowList :: [CodeType] -> ShowS
showList :: [CodeType] -> ShowS
Show)