vacuum-2.2.0.0: src/GHC/Vacuum/ClosureType.hs
{-# LANGUAGE CPP #-}
-- |
-- Module : GHC.Vacuum.ClosureType
-- Copyright : (c) Matt Morrow 2009, Austin Seipp 2011-2012
-- License : LGPLv3
--
-- Maintainer : mad.one@gmail.com
-- Stability : experimental
-- Portability : non-portable (GHC only)
--
-- This module exports the different kind of closure types there
-- are per GHC version.
--
-- NOTE: the 'ClosureType' datatype is automatically generated, based
-- on the version of GHC, and the proper one is included for you.
--
module GHC.Vacuum.ClosureType
( ClosureType(..)
, isFun -- :: ClosureType -> Bool
, isThunk -- :: ClosureType -> Bool
, isCon -- :: ClosureType -> Bool
) where
-- Import the correct ClosureType datatype based on
-- the version
#if __GLASGOW_HASKELL__ == 700
import GHC.Vacuum.ClosureType.V700 (ClosureType(..))
#elif __GLASGOW_HASKELL__ == 702
import GHC.Vacuum.ClosureType.V702 (ClosureType(..))
#elif __GLASGOW_HASKELL__ == 704
import GHC.Vacuum.ClosureType.V704 (ClosureType(..))
#elif __GLASGOW_HASKELL__ == 706
import GHC.Vacuum.ClosureType.V706 (ClosureType(..))
#elif __GLASGOW_HASKELL__ == 708
import GHC.Vacuum.ClosureType.V708 (ClosureType(..))
#else
#error Unsupported GHC version in ClosureTypes.hs!
#endif
------------------------------------------------
isFun :: ClosureType -> Bool
isFun FUN = True
isFun FUN_1_0 = True
isFun FUN_0_1 = True
isFun FUN_2_0 = True
isFun FUN_1_1 = True
isFun FUN_0_2 = True
isFun FUN_STATIC = True
isFun _ = False
isThunk :: ClosureType -> Bool
isThunk AP = True
isThunk THUNK = True
isThunk THUNK_1_0 = True
isThunk THUNK_0_1 = True
isThunk THUNK_2_0 = True
isThunk THUNK_1_1 = True
isThunk THUNK_0_2 = True
isThunk THUNK_STATIC = True
isThunk THUNK_SELECTOR = True
isThunk _ = False
isCon :: ClosureType -> Bool
isCon CONSTR = True
isCon CONSTR_1_0 = True
isCon CONSTR_0_1 = True
isCon CONSTR_2_0 = True
isCon CONSTR_1_1 = True
isCon CONSTR_0_2 = True
isCon CONSTR_STATIC = True
isCon CONSTR_NOCAF_STATIC = True
isCon _ = False