aztecs-0.14.0: A modular game engine and Entity-Component-System (ECS) for Haskell.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Aztecs.ECS.Access.Internal

Documentation

type family ValidAccessInput (accesses :: [Type]) where ... Source #

Equations

ValidAccessInput accesses = (ValidAccess accesses, HasDuplicateWrites (WriteComponents accesses) ~ 'False) 

type family HasDuplicateWrites (components :: [Type]) :: Bool where ... Source #

Equations

HasDuplicateWrites ('[] :: [Type]) = 'False 
HasDuplicateWrites (c ': rest) = Or (Contains c rest) (HasDuplicateWrites rest) 

class Functor m => Access (m :: Type -> Type) a where Source #

Minimal complete definition

Nothing

Associated Types

type AccessType a :: [Type] Source #

Instances

Instances details
Applicative m => Access m () Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType () 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType () = '[] :: [Type]

Methods

access :: m () Source #

(Applicative m, ECS m) => Access m (HSet ('[] :: [Type])) Source # 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

Associated Types

type AccessType (HSet ('[] :: [Type])) 
Instance details

Defined in Aztecs.ECS.Scheduler.Internal

type AccessType (HSet ('[] :: [Type])) = '[] :: [Type]

Methods

access :: m (HSet ('[] :: [Type])) Source #

(ECS m, Applicative m, Queryable m a) => Access m (Query a) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (Query a) 
Instance details

Defined in Aztecs.ECS.Access.Internal

Methods

access :: m (Query a) Source #

(Applicative m, Access m a, Access m b, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType a ++ AccessType b)) => Access m (a, b) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b) 
Instance details

Defined in Aztecs.ECS.Access.Internal

Methods

access :: m (a, b) Source #

(Applicative m, Access m a, Access m b, Access m c, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType b ++ AccessType c), ValidAccessInput (AccessType a ++ (AccessType b ++ AccessType c))) => Access m (a, b, c) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c) = AccessType a ++ (AccessType b ++ AccessType c)

Methods

access :: m (a, b, c) Source #

(Applicative m, Access m a, Access m b, Access m c, Access m d, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType d), ValidAccessInput (AccessType a ++ AccessType b), ValidAccessInput (AccessType c ++ AccessType d), ValidAccessInput ((AccessType a ++ AccessType b) ++ (AccessType c ++ AccessType d))) => Access m (a, b, c, d) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c, d) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c, d) = (AccessType a ++ AccessType b) ++ (AccessType c ++ AccessType d)

Methods

access :: m (a, b, c, d) Source #

(Applicative m, Access m a, Access m b, Access m c, Access m d, Access m e, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType d), ValidAccessInput (AccessType e), ValidAccessInput (AccessType a ++ AccessType b), ValidAccessInput (AccessType c ++ (AccessType d ++ AccessType e)), ValidAccessInput (AccessType d ++ AccessType e), ValidAccessInput ((AccessType a ++ AccessType b) ++ (AccessType c ++ (AccessType d ++ AccessType e)))) => Access m (a, b, c, d, e) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c, d, e) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c, d, e) = (AccessType a ++ AccessType b) ++ (AccessType c ++ (AccessType d ++ AccessType e))

Methods

access :: m (a, b, c, d, e) Source #

(Applicative m, Access m a, Access m b, Access m c, Access m d, Access m e, Access m f, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType d), ValidAccessInput (AccessType e), ValidAccessInput (AccessType f), ValidAccessInput (AccessType e ++ AccessType f), ValidAccessInput (AccessType d ++ (AccessType e ++ AccessType f)), ValidAccessInput (AccessType a ++ (AccessType b ++ AccessType c)), ValidAccessInput (AccessType b ++ AccessType c), ValidAccessInput ((AccessType a ++ (AccessType b ++ AccessType c)) ++ (AccessType d ++ (AccessType e ++ AccessType f)))) => Access m (a, b, c, d, e, f) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c, d, e, f) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c, d, e, f) = (AccessType a ++ (AccessType b ++ AccessType c)) ++ (AccessType d ++ (AccessType e ++ AccessType f))

Methods

access :: m (a, b, c, d, e, f) Source #

(Applicative m, Access m a, Access m b, Access m c, Access m d, Access m e, Access m f, Access m g, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType d), ValidAccessInput (AccessType e), ValidAccessInput (AccessType f), ValidAccessInput (AccessType g), ValidAccessInput (AccessType b ++ AccessType c), ValidAccessInput (AccessType d ++ AccessType e), ValidAccessInput (AccessType f ++ AccessType g), ValidAccessInput (AccessType a ++ (AccessType b ++ AccessType c)), ValidAccessInput ((AccessType d ++ AccessType e) ++ (AccessType f ++ AccessType g)), ValidAccessInput ((AccessType a ++ (AccessType b ++ AccessType c)) ++ ((AccessType d ++ AccessType e) ++ (AccessType f ++ AccessType g)))) => Access m (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c, d, e, f, g) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c, d, e, f, g) = (AccessType a ++ (AccessType b ++ AccessType c)) ++ ((AccessType d ++ AccessType e) ++ (AccessType f ++ AccessType g))

Methods

access :: m (a, b, c, d, e, f, g) Source #

(Applicative m, Access m a, Access m b, Access m c, Access m d, Access m e, Access m f, Access m g, Access m h, ValidAccessInput (AccessType a), ValidAccessInput (AccessType b), ValidAccessInput (AccessType c), ValidAccessInput (AccessType d), ValidAccessInput (AccessType e), ValidAccessInput (AccessType f), ValidAccessInput (AccessType g), ValidAccessInput (AccessType h), ValidAccessInput (AccessType a ++ AccessType b), ValidAccessInput (AccessType c ++ AccessType d), ValidAccessInput (AccessType e ++ AccessType f), ValidAccessInput (AccessType g ++ AccessType h), ValidAccessInput ((AccessType a ++ AccessType b) ++ (AccessType c ++ AccessType d)), ValidAccessInput ((AccessType e ++ AccessType f) ++ (AccessType g ++ AccessType h)), ValidAccessInput (((AccessType a ++ AccessType b) ++ (AccessType c ++ AccessType d)) ++ ((AccessType e ++ AccessType f) ++ (AccessType g ++ AccessType h)))) => Access m (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type AccessType (a, b, c, d, e, f, g, h) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type AccessType (a, b, c, d, e, f, g, h) = ((AccessType a ++ AccessType b) ++ (AccessType c ++ AccessType d)) ++ ((AccessType e ++ AccessType f) ++ (AccessType g ++ AccessType h))

Methods

access :: m (a, b, c, d, e, f, g, h) Source #

class GenericAccess (m :: k -> Type) (f :: k1 -> k) where Source #

Associated Types

type GenericAccessType (f :: k1 -> k) :: [Type] Source #

Methods

genericAccess :: forall (p :: k1). ValidAccessInput (GenericAccessType f) => m (f p) Source #

Instances

Instances details
Applicative m => GenericAccess (m :: Type -> Type) (U1 :: k -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type GenericAccessType (U1 :: k -> Type) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type GenericAccessType (U1 :: k -> Type) = '[] :: [Type]

Methods

genericAccess :: forall (p :: k). ValidAccessInput (GenericAccessType (U1 :: k -> Type)) => m (U1 p) Source #

(Applicative m, GenericAccess m f, GenericAccess m g, ValidAccessInput (GenericAccessType f), ValidAccessInput (GenericAccessType g)) => GenericAccess (m :: Type -> Type) (f :*: g :: k -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type GenericAccessType (f :*: g :: k -> Type) 
Instance details

Defined in Aztecs.ECS.Access.Internal

Methods

genericAccess :: forall (p :: k). ValidAccessInput (GenericAccessType (f :*: g)) => m ((f :*: g) p) Source #

Access m c => GenericAccess (m :: Type -> Type) (K1 i c :: k -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type GenericAccessType (K1 i c :: k -> Type) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type GenericAccessType (K1 i c :: k -> Type) = AccessType c

Methods

genericAccess :: forall (p :: k). ValidAccessInput (GenericAccessType (K1 i c :: k -> Type)) => m (K1 i c p) Source #

(Functor m, GenericAccess m f) => GenericAccess (m :: Type -> Type) (M1 i c f :: k -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Access.Internal

Associated Types

type GenericAccessType (M1 i c f :: k -> Type) 
Instance details

Defined in Aztecs.ECS.Access.Internal

type GenericAccessType (M1 i c f :: k -> Type) = GenericAccessType f

Methods

genericAccess :: forall (p :: k). ValidAccessInput (GenericAccessType (M1 i c f)) => m (M1 i c f p) Source #

deriveAccess :: forall {k} a m (cs :: k). (Functor m, Generic a, GenericAccess m (Rep a), ValidAccessInput (GenericAccessType (Rep a))) => m a Source #

type family DeriveAccessType (rep :: Type -> Type) :: [Type] where ... Source #

Equations

DeriveAccessType rep = GenericAccessType rep