{-# LANGUAGE DeriveGeneric, DeriveAnyClass, CPP #-}
{-# OPTIONS_GHC -fplugin Foreign.Storable.Generic.Plugin #-}
{-# OPTIONS_GHC -fplugin-opt=Foreign.Storable.Generic.Plugin:-crash #-}
{-# OPTIONS_GHC -fplugin-opt=Foreign.Storable.Generic.Plugin:-v2 #-}
module TestCasesOptimized where
import GHC.Generics (Generic)
import Foreign.Storable.Generic
import Data.Int
import Control.DeepSeq
data C1O = C1O Int32 deriving (Show, Generic, GStorable, NFData)
data C2O = C2O Int8 Int32 Int16 deriving (Show, Generic, GStorable, NFData)
data C3O = C3O C2O Int64 C1O deriving (Show, Generic, GStorable, NFData)
data C4O = C4O Double Int8 C3O deriving (Show, Generic, GStorable, NFData)
data C5O = C5O Int32 C2O C4O deriving (Show, Generic, GStorable, NFData)
c1o_def = C1O 3
c2o_def = C2O 3 10 8
c3o_def = C3O c2o_def 11000 c1o_def
c4o_def = C4O 0.312 3 c3o_def
c5o_def = C5O 100 c2o_def c4o_def
#ifdef GSTORABLE_SUMTYPES
data S1O = S1Oa Int32 | S1Ob Int16 deriving (Show, Generic, GStorable, NFData)
data S2O = S2Oa Int32 Int64 Int8 | S2Ob S1O Int8 Double
| S2Oc Int32 Int8 Int16 Int8 | S2Od S1O S1O
deriving (Show, Generic, GStorable, NFData)
s1o_def = S1Oa 54
s2o_def = S2Ob s1o_def 32 1.5
#endif