{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
{-# 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