module Graphics.QML.DataModel.Internal.Generic.Set where
import Graphics.QML.DataModel.Internal.FFI
import Graphics.QML.DataModel.Internal.Generic.Count
import Graphics.QML.DataModel.Internal.Generic.Mock
import GHC.Generics
class SetupColumns t where
setupColumns :: HmDelegateHandle -> sing t -> IO ()
default setupColumns
:: ( Mock t
, Generic t
, GSetupColumns (Rep t)
)
=> HmDelegateHandle
-> sing t
-> IO ()
setupColumns d _ = gSetupColumns d $ from (mock :: t)
class GSetupColumns f where
gSetupColumns :: HmDelegateHandle -> f a -> IO ()
class GSetupColumnIx f where
gSetupColumnIx :: HmDelegateHandle -> Int -> f a -> IO ()
instance GSetupColumns f => GSetupColumns (M1 D t f) where
gSetupColumns h (M1 t) = gSetupColumns h t
instance GSetupColumnIx f => GSetupColumns (M1 C t f) where
gSetupColumns h (M1 t) = gSetupColumnIx h 0 t
instance ( GCountFields a
, GCountFields b
, GSetupColumnIx a
, GSetupColumnIx b
) => GSetupColumnIx (a :*: b) where
gSetupColumnIx h ix (a :*: b) = do
gSetupColumnIx h ix a
gSetupColumnIx h (ix + gCountFields a) b
instance Selector t => GSetupColumnIx (M1 S t f) where
gSetupColumnIx h ix t = addHaskellModelRole h ix $ selName t