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

Aztecs.ECS.Query.Internal

Documentation

type family (xs :: [Type]) ++ (ys :: [Type]) :: [Type] where ... Source #

Equations

('[] :: [Type]) ++ ys = ys 
(x ': xs) ++ ys = x ': (xs ++ ys) 

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

Equations

AccessToComponents ('[] :: [Type]) = '[] :: [Type] 
AccessToComponents (Read a ': rest) = a ': AccessToComponents rest 
AccessToComponents (Write a ': rest) = a ': AccessToComponents rest 
AccessToComponents (With a ': rest) = a ': AccessToComponents rest 
AccessToComponents (Without a ': rest) = AccessToComponents rest 

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

Equations

ReadComponents ('[] :: [Type]) = '[] :: [Type] 
ReadComponents (Read a ': rest) = a ': ReadComponents rest 
ReadComponents (Write a ': rest) = ReadComponents rest 
ReadComponents (With a ': rest) = ReadComponents rest 
ReadComponents (Without a ': rest) = ReadComponents rest 

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

Equations

WriteComponents ('[] :: [Type]) = '[] :: [Type] 
WriteComponents (Read a ': rest) = WriteComponents rest 
WriteComponents (Write a ': rest) = a ': WriteComponents rest 
WriteComponents (With a ': rest) = WriteComponents rest 
WriteComponents (Without a ': rest) = WriteComponents rest 

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

Equations

WithComponents ('[] :: [Type]) = '[] :: [Type] 
WithComponents (Read a ': rest) = WithComponents rest 
WithComponents (Write a ': rest) = WithComponents rest 
WithComponents (With a ': rest) = a ': WithComponents rest 
WithComponents (Without a ': rest) = WithComponents rest 

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

Equations

WithoutComponents ('[] :: [Type]) = '[] :: [Type] 
WithoutComponents (Read a ': rest) = WithoutComponents rest 
WithoutComponents (Write a ': rest) = WithoutComponents rest 
WithoutComponents (With a ': rest) = WithoutComponents rest 
WithoutComponents (Without a ': rest) = a ': WithoutComponents rest 

type family Contains a (list :: [Type]) :: Bool where ... Source #

Equations

Contains a ('[] :: [Type]) = 'False 
Contains a (a ': rest) = 'True 
Contains a (b ': rest) = Contains a rest 

type family HasOverlap (list1 :: [Type]) (list2 :: [Type]) :: Bool where ... Source #

Equations

HasOverlap ('[] :: [Type]) list2 = 'False 
HasOverlap (a ': rest) list2 = Or (Contains a list2) (HasOverlap rest list2) 

type family HasDuplicates (list :: [Type]) :: Bool where ... Source #

Equations

HasDuplicates ('[] :: [Type]) = 'False 
HasDuplicates (a ': rest) = Or (Contains a rest) (HasDuplicates rest) 

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

Equations

ValidateAccess accesses = And (Not (HasOverlap (WriteComponents accesses) (ReadComponents accesses))) (Not (HasDuplicates (WriteComponents accesses))) 

type family And (a :: Bool) (b :: Bool) :: Bool where ... Source #

Equations

And 'True 'True = 'True 
And 'True 'False = 'False 
And 'False 'True = 'False 
And 'False 'False = 'False 

type family Or (a :: Bool) (b :: Bool) :: Bool where ... Source #

Equations

Or 'True _1 = 'True 
Or 'False 'True = 'True 
Or 'False 'False = 'False 

type family Not (b :: Bool) :: Bool where ... Source #

Equations

Not 'True = 'False 
Not 'False = 'True 

type ValidAccess (accesses :: [Type]) = ValidateAccess accesses ~ 'True Source #

data Read a Source #

data Write a Source #

data With a Source #

Constructors

With 

Instances

Instances details
(PrimMonad m, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (With a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (With a) 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (With a) = '[With a]

Methods

queryable :: AztecsT cs m (Query (With a)) Source #

type QueryableAccess (With a) Source # 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (With a) = '[With a]

data Without a Source #

Constructors

Without 

Instances

Instances details
(PrimMonad m, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (Without a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (Without a) 
Instance details

Defined in Aztecs.Internal

Methods

queryable :: AztecsT cs m (Query (Without a)) Source #

type QueryableAccess (Without a) Source # 
Instance details

Defined in Aztecs.Internal

type family AccessComponent access where ... Source #

class GenericQueryable (m :: Type -> Type) (f :: Type -> Type) where Source #

Methods

genericQueryableRep :: m [Maybe (f p)] Source #

Instances

Instances details
Monad m => GenericQueryable m (U1 :: Type -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Methods

genericQueryableRep :: m [Maybe (U1 p)] Source #

(Monad m, GenericQueryable m f, GenericQueryable m g) => GenericQueryable m (f :*: g) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Methods

genericQueryableRep :: m [Maybe ((f :*: g) p)] Source #

(Functor m, Queryable m a) => GenericQueryable m (K1 i a :: Type -> Type) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Methods

genericQueryableRep :: m [Maybe (K1 i a p)] Source #

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

Defined in Aztecs.ECS.Query.Internal

Methods

genericQueryableRep :: m [Maybe (M1 i c f p)] Source #

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

Minimal complete definition

Nothing

Associated Types

type QueryableAccess a :: [Type] Source #

Instances

Instances details
(Monad m, Queryable m a, Queryable m b, ValidAccess (QueryableAccess a ++ QueryableAccess b)) => Queryable m (a, b) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

type QueryableAccess (a, b) 
Instance details

Defined in Aztecs.ECS.Query.Internal

Methods

queryable :: m (Query (a, b)) Source #

(Monad m, Queryable m a, Queryable m b, Queryable m c, ValidAccess (QueryableAccess a ++ (QueryableAccess b ++ QueryableAccess c))) => Queryable m (a, b, c) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

type QueryableAccess (a, b, c) 
Instance details

Defined in Aztecs.ECS.Query.Internal

Methods

queryable :: m (Query (a, b, c)) Source #

(Monad m, Queryable m a, Queryable m b, Queryable m c, Queryable m d, ValidAccess ((QueryableAccess a ++ QueryableAccess b) ++ (QueryableAccess c ++ QueryableAccess d))) => Queryable m (a, b, c, d) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

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

Defined in Aztecs.ECS.Query.Internal

Methods

queryable :: m (Query (a, b, c, d)) Source #

(Monad m, Queryable m a, Queryable m b, Queryable m c, Queryable m d, Queryable m e, ValidAccess ((QueryableAccess a ++ QueryableAccess b) ++ (QueryableAccess c ++ (QueryableAccess d ++ QueryableAccess e)))) => Queryable m (a, b, c, d, e) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

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

Defined in Aztecs.ECS.Query.Internal

Methods

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

(Monad m, Queryable m a, Queryable m b, Queryable m c, Queryable m d, Queryable m e, Queryable m f, ValidAccess ((QueryableAccess a ++ (QueryableAccess b ++ QueryableAccess c)) ++ (QueryableAccess d ++ (QueryableAccess e ++ QueryableAccess f)))) => Queryable m (a, b, c, d, e, f) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

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

Defined in Aztecs.ECS.Query.Internal

Methods

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

(Monad m, Queryable m a, Queryable m b, Queryable m c, Queryable m d, Queryable m e, Queryable m f, Queryable m g, ValidAccess ((QueryableAccess a ++ (QueryableAccess b ++ QueryableAccess c)) ++ ((QueryableAccess d ++ QueryableAccess e) ++ (QueryableAccess f ++ QueryableAccess g)))) => Queryable m (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

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

Defined in Aztecs.ECS.Query.Internal

Methods

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

(Monad m, Queryable m a, Queryable m b, Queryable m c, Queryable m d, Queryable m e, Queryable m f, Queryable m g, Queryable m h, ValidAccess (((QueryableAccess a ++ QueryableAccess b) ++ (QueryableAccess c ++ QueryableAccess d)) ++ ((QueryableAccess e ++ QueryableAccess f) ++ (QueryableAccess g ++ QueryableAccess h)))) => Queryable m (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Aztecs.ECS.Query.Internal

Associated Types

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

Defined in Aztecs.ECS.Query.Internal

Methods

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

PrimMonad m => Queryable (AztecsT cs m) Entity Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess Entity 
Instance details

Defined in Aztecs.Internal

type QueryableAccess Entity = '[] :: [Type]
(PrimMonad m, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (With a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (With a) 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (With a) = '[With a]

Methods

queryable :: AztecsT cs m (Query (With a)) Source #

(PrimMonad m, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (Without a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (Without a) 
Instance details

Defined in Aztecs.Internal

Methods

queryable :: AztecsT cs m (Query (Without a)) Source #

(PrimMonad m, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage (AztecsT cs m) (ComponentStorage m a)) => Queryable (AztecsT cs m) (R a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (R a) 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (R a) = '[Read a]

Methods

queryable :: AztecsT cs m (Query (R a)) Source #

(PrimMonad m, PrimState m ~ s, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (W (Commands (AztecsT cs) m) a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (W (Commands (AztecsT cs) m) a) 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (W (Commands (AztecsT cs) m) a) = '[Write a]

Methods

queryable :: AztecsT cs m (Query (W (Commands (AztecsT cs) m) a)) Source #

(PrimMonad m, PrimState m ~ s, Lookup (ComponentStorage m a a) (WorldComponents m cs), Storage m (ComponentStorage m a)) => Queryable (AztecsT cs m) (W (AztecsT cs m) a) Source # 
Instance details

Defined in Aztecs.Internal

Associated Types

type QueryableAccess (W (AztecsT cs m) a) 
Instance details

Defined in Aztecs.Internal

type QueryableAccess (W (AztecsT cs m) a) = '[Write a]

Methods

queryable :: AztecsT cs m (Query (W (AztecsT cs m) a)) Source #