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

Safe HaskellNone
LanguageHaskell2010

Data.Ecstasy.Internal.Deriving

Synopsis

Documentation

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

Utility class for implementing hoistStorage.

Minimal complete definition

gHoistWorld

Methods

gHoistWorld :: a x -> b x Source #

Instances

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

Methods

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

GHoistWorld t m (K1 * i a) (K1 * i' a) Source # 

Methods

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

(MonadTrans t, Functor (t m), Monad m) => GHoistWorld t m (K1 * i (VTable m a)) (K1 * i' (VTable (t m) a)) Source # 

Methods

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

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

Methods

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

class GGraft a b where Source #

Utility class for implementing graftStorage.

Minimal complete definition

gGraft

Methods

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

Instances

GGraft (K1 * i a) (K1 * i' a) Source # 

Methods

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

GGraft (K1 * i (VTable m a)) (K1 * i' (VTable (t m) a)) Source # 

Methods

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

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

Methods

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

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

Methods

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

class GConvertSetter a b where Source #

Utility class for implementing convertSetter.

Minimal complete definition

gConvertSetter

Methods

gConvertSetter :: a x -> b x Source #

Instances

GConvertSetter (K1 * i (Maybe a)) (K1 * i' (Update a)) Source # 

Methods

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

GConvertSetter (K1 * i a) (K1 * i' (Update a)) Source # 

Methods

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

GConvertSetter (K1 * i a) (K1 * i' (Maybe a)) Source # 

Methods

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

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

Methods

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

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

Methods

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

class GGetEntity m a b where Source #

Utility class for implementing getEntity.

Minimal complete definition

gGetEntity

Methods

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

Instances

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

Methods

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

Applicative m => GGetEntity m (K1 * i (Maybe (Int, a))) (K1 * i' (Maybe a)) Source # 

Methods

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

Applicative m => GGetEntity m (K1 * i (IntMap a)) (K1 * i' (Maybe a)) Source # 

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)) (K1 * i' (Maybe a)) Source # 

Methods

gGetEntity :: K1 * i (VTable m 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 # 

Methods

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

class GSetEntity m a b where Source #

Utility class for implementing setEntity.

Minimal complete definition

gSetEntity

Methods

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

Instances

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

Methods

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

Applicative m => GSetEntity m (K1 * i (Update a)) (K1 * i' (IntMap a)) Source # 

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)) (K1 * i' (VTable m a)) Source # 

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)) (K1 * i' (Maybe (Int, a))) Source # 

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 # 

Methods

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

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

class GDefault (keep :: Bool) f 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.

Minimal complete definition

gdef

Methods

gdef :: f a Source #

Instances

GDefault keep (U1 *) Source # 

Methods

gdef :: U1 * a Source #

GDefault False (K1 * i (Update c)) Source # 

Methods

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

GDefault True (K1 * i (Update c)) Source # 

Methods

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

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

Methods

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

GDefault keep (K1 * i (IntMap c)) Source # 

Methods

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

GDefault keep (K1 * i (Maybe c)) Source # 

Methods

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

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

Methods

gdef :: M1 * i c f a Source #

(Applicative m, KnownSymbol sym) => GDefault keep (M1 * S (MetaSel (Just Symbol sym) x y z) (K1 * i (VTable m a))) Source # 

Methods

gdef :: M1 * S (MetaSel (Just Symbol sym) x y z) (K1 * i (VTable m a)) a Source #