ecstasy-0.2.1.0: A GHC.Generics based entity component system.
Safe HaskellNone
LanguageHaskell2010

Data.Ecstasy.Internal.Deriving

Synopsis

Documentation

class GHoistWorld (t :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) (a :: Type -> Type) (b :: Type -> Type) where Source #

Utility class for implementing hoistStorage.

Methods

gHoistWorld :: a x -> b x Source #

Instances

Instances details
(Applicative (t m), GHoistWorld t m a c, GHoistWorld t m b d) => GHoistWorld t m (a :*: b) (c :*: d) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gHoistWorld :: (a :*: b) x -> (c :*: d) x Source #

(MonadTrans t, Functor (t m), Monad m) => GHoistWorld t m (K1 i (VTable m a) :: Type -> Type) (K1 i' (VTable (t m) a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gHoistWorld :: K1 i (VTable m a) x -> K1 i' (VTable (t m) a) x Source #

GHoistWorld t m (K1 i a :: Type -> Type) (K1 i' a :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gHoistWorld :: K1 i a x -> K1 i' a x Source #

(Functor (t m), GHoistWorld t m f f') => GHoistWorld t m (M1 i c f) (M1 i' c' f') Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gHoistWorld :: M1 i c f x -> M1 i' c' f' x Source #

class GGraft (a :: Type -> Type) (b :: Type -> Type) where Source #

Utility class for implementing graftStorage.

Methods

gGraft :: a x -> b x -> a x Source #

Instances

Instances details
(GGraft a c, GGraft b d) => GGraft (a :*: b) (c :*: d) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGraft :: (a :*: b) x -> (c :*: d) x -> (a :*: b) x Source #

GGraft (K1 i (VTable m a) :: Type -> Type) (K1 i' (VTable (t m) a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGraft :: K1 i (VTable m a) x -> K1 i' (VTable (t m) a) x -> K1 i (VTable m a) x Source #

GGraft (K1 i a :: Type -> Type) (K1 i' a :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGraft :: K1 i a x -> K1 i' a x -> K1 i a x Source #

GGraft f f' => GGraft (M1 i c f) (M1 i' c' f') Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGraft :: M1 i c f x -> M1 i' c' f' x -> M1 i c f x Source #

class GConvertSetter (a :: Type -> Type) (b :: Type -> Type) where Source #

Utility class for implementing convertSetter.

Methods

gConvertSetter :: a x -> b x Source #

Instances

Instances details
(GConvertSetter a c, GConvertSetter b d) => GConvertSetter (a :*: b) (c :*: d) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gConvertSetter :: (a :*: b) x -> (c :*: d) x Source #

GConvertSetter (K1 i (Maybe a) :: Type -> Type) (K1 i' (Update a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gConvertSetter :: K1 i (Maybe a) x -> K1 i' (Update a) x Source #

GConvertSetter (K1 i a :: Type -> Type) (K1 i' (Update a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gConvertSetter :: K1 i a x -> K1 i' (Update a) x Source #

GConvertSetter (K1 i a :: Type -> Type) (K1 i' (Maybe a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gConvertSetter :: K1 i a x -> K1 i' (Maybe a) x Source #

GConvertSetter f f' => GConvertSetter (M1 i c f) (M1 i' c' f') Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gConvertSetter :: M1 i c f x -> M1 i' c' f' x Source #

class GGetEntity (m :: Type -> Type) (a :: Type -> Type) (b :: Type -> Type) where Source #

Utility class for implementing getEntity.

Methods

gGetEntity :: a x -> Int -> Codensity m (b x) Source #

Instances

Instances details
(Applicative m, GGetEntity m a c, GGetEntity m b d) => GGetEntity m (a :*: b) (c :*: d) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGetEntity :: (a :*: b) x -> Int -> Codensity m ((c :*: d) x) Source #

Applicative m => GGetEntity m (K1 i (IntMap a) :: Type -> Type) (K1 i' (Maybe a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGetEntity :: K1 i (IntMap a) x -> Int -> Codensity m (K1 i' (Maybe a) x) Source #

Monad m => GGetEntity m (K1 i (VTable m a) :: Type -> Type) (K1 i' (Maybe a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGetEntity :: K1 i (VTable m a) x -> Int -> Codensity m (K1 i' (Maybe a) x) Source #

Applicative m => GGetEntity m (K1 i (Maybe (Int, a)) :: Type -> Type) (K1 i' (Maybe a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGetEntity :: K1 i (Maybe (Int, a)) x -> Int -> Codensity m (K1 i' (Maybe a) x) Source #

(Functor m, GGetEntity m f f') => GGetEntity m (M1 i c f) (M1 i' c' f') Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gGetEntity :: M1 i c f x -> Int -> Codensity m (M1 i' c' f' x) Source #

class GSetEntity (m :: Type -> Type) (a :: Type -> Type) (b :: Type -> Type) where Source #

Utility class for implementing setEntity.

Methods

gSetEntity :: a x -> Int -> b x -> Codensity m (b x) Source #

Instances

Instances details
(Applicative m, GSetEntity m a c, GSetEntity m b d) => GSetEntity m (a :*: b) (c :*: d) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gSetEntity :: (a :*: b) x -> Int -> (c :*: d) x -> Codensity m ((c :*: d) x) Source #

Applicative m => GSetEntity m (K1 i (Update a) :: Type -> Type) (K1 i' (IntMap a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gSetEntity :: K1 i (Update a) x -> Int -> K1 i' (IntMap a) x -> Codensity m (K1 i' (IntMap a) x) Source #

Monad m => GSetEntity m (K1 i (Update a) :: Type -> Type) (K1 i' (VTable m a) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gSetEntity :: K1 i (Update a) x -> Int -> K1 i' (VTable m a) x -> Codensity m (K1 i' (VTable m a) x) Source #

Applicative m => GSetEntity m (K1 i (Update a) :: Type -> Type) (K1 i' (Maybe (Int, a)) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gSetEntity :: K1 i (Update a) x -> Int -> K1 i' (Maybe (Int, a)) x -> Codensity m (K1 i' (Maybe (Int, a)) x) Source #

(Functor m, GSetEntity m f f') => GSetEntity m (M1 i c f) (M1 i' c' f') Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gSetEntity :: M1 i c f x -> Int -> M1 i' c' f' x -> Codensity m (M1 i' c' f' x) Source #

def :: forall (keep :: Bool) a. (Generic a, GDefault keep (Rep a)) => a Source #

class GDefault (keep :: Bool) (f :: Type -> Type) where Source #

Utility class for implementing various defaults. The keep parameter is used to statically describe whether or not to keep the previous value when dealing with Update fields.

Methods

gdef :: f a Source #

Instances

Instances details
GDefault keep (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: U1 a Source #

GDefault 'False (K1 i (Update c) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: K1 i (Update c) a Source #

GDefault 'True (K1 i (Update c) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: K1 i (Update c) a Source #

(GDefault keep a, GDefault keep b) => GDefault keep (a :*: b) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: (a :*: b) a0 Source #

GDefault keep (K1 i (IntMap c) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: K1 i (IntMap c) a Source #

GDefault keep (K1 i (Maybe c) :: Type -> Type) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: K1 i (Maybe c) a Source #

(Applicative m, KnownSymbol sym) => GDefault keep (M1 S ('MetaSel ('Just sym) x y z) (K1 i (VTable m a) :: Type -> Type)) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: M1 S ('MetaSel ('Just sym) x y z) (K1 i (VTable m a) :: Type -> Type) a0 Source #

GDefault keep f => GDefault keep (M1 i c f) Source # 
Instance details

Defined in Data.Ecstasy.Internal.Deriving

Methods

gdef :: M1 i c f a Source #