-- | Defines the 'CodeType' data type
module GOOL.Drasil.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
              | Array CodeType
              | Object ClassName
              | Func [CodeType] CodeType
              | Void deriving (CodeType -> CodeType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CodeType -> CodeType -> Bool
$c/= :: CodeType -> CodeType -> Bool
== :: CodeType -> CodeType -> Bool
$c== :: CodeType -> CodeType -> Bool
Eq, Int -> CodeType -> ShowS
[CodeType] -> ShowS
CodeType -> ClassName
forall a.
(Int -> a -> ShowS) -> (a -> ClassName) -> ([a] -> ShowS) -> Show a
showList :: [CodeType] -> ShowS
$cshowList :: [CodeType] -> ShowS
show :: CodeType -> ClassName
$cshow :: CodeType -> ClassName
showsPrec :: Int -> CodeType -> ShowS
$cshowsPrec :: Int -> CodeType -> ShowS
Show)