syfco-1.1.0.0: src/Data/Enum.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.Enum
-- License : MIT (see the LICENSE file)
-- Maintainer : Felix Klein (klein@react.uni-saarland.de)
--
-- Data types to store enum definitions and applications.
--
-----------------------------------------------------------------------------
module Data.Enum
( EnumDefinition(..)
, EnumId(..)
) where
-----------------------------------------------------------------------------
import Data.Expression
( ExprPos
)
-----------------------------------------------------------------------------
-- | An enumeration definiton consists of a name, the number of
-- entries, the values associated with each entry, the position, a list
-- of entries not explicitly listed and ?.
data EnumDefinition a =
EnumDefinition
{ eName :: a
, eSize :: Int
, eValues :: [(a, ExprPos, [Int -> Either Bool ()])]
, ePos :: ExprPos
, eMissing :: [Int -> Either Bool ()]
, eDouble :: Maybe ((a,ExprPos), (a, ExprPos), (a,ExprPos), Int -> Either Bool ())
}
-----------------------------------------------------------------------------
-- | An @EnumId@ contains all information to uniqely identify an
-- enumaration.
data EnumId a =
EnumId
{ eIName :: a
, eIPos :: ExprPos
, eISize :: Int
, eIVName :: a
, eIValue :: Int -> Bool
}
-----------------------------------------------------------------------------