{-# OPTIONS_GHC -fplugin Foreign.Storable.Generic.Plugin #-} {-# OPTIONS_GHC -fplugin-opt=Foreign.Storable.Generic.Plugin:-crash #-} module Instances where import Types import Foreign.Storable.Generic instance GStorable Flat where gsizeOf _ = 16 galignment _ = 8 gpeekByteOff ptr offset = Flat <$> gpeekByteOff ptr offset <*> gpeekByteOff ptr (offset+8) gpokeByteOff ptr offset (Flat a b) = gpokeByteOff ptr offset a >> gpokeByteOff ptr (offset+8) b instance GStorable Nested where gsizeOf _ = 16 galignment _ = 8 gpeekByteOff ptr offset = Nested <$> (Flat <$> gpeekByteOff ptr offset <*> gpeekByteOff ptr (offset+8)) gpokeByteOff ptr offset (Nested (Flat a b)) = gpokeByteOff ptr offset a >> gpokeByteOff ptr (offset+8) b instance GStorable Nested2 where gsizeOf _ = 16 galignment _ = 8 gpeekByteOff ptr offset = Nested2 <$> (Nested <$> (Flat <$> gpeekByteOff ptr offset <*> gpeekByteOff ptr (offset+8))) gpokeByteOff ptr offset (Nested2 (Nested (Flat a b))) = gpokeByteOff ptr offset a >> gpokeByteOff ptr (offset+8) b