apecs-0.4.0.1: A fast ECS for game engine programming

Safe HaskellNone
LanguageHaskell2010

Apecs.Stores

Synopsis

Documentation

data Map c Source #

A map based on Data.Intmap.Strict. O(log(n)) for most operations.

Instances
ExplMembers (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: Map c -> IO (Vector Int) Source #

ExplDestroy (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Map c -> Int -> IO () Source #

ExplSet (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Map c -> Int -> Elem (Map c) -> IO () Source #

ExplGet (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Map c -> Int -> IO (Elem (Map c)) Source #

explExists :: Map c -> Int -> IO Bool Source #

ExplInit (Map c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: IO (Map c) Source #

Cachable (Map s) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Map c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Map c) = c

data Cache (n :: Nat) s Source #

A cache around another store. Note that iterating over a cache is linear in cache size, so sparsely populated caches might actually decrease performance.

Instances
ExplMembers s => ExplMembers (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explMembers :: Cache n s -> IO (Vector Int) Source #

ExplDestroy s => ExplDestroy (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Cache n s -> Int -> IO () Source #

ExplSet s => ExplSet (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Cache n s -> Int -> Elem (Cache n s) -> IO () Source #

ExplGet s => ExplGet (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Cache n s -> Int -> IO (Elem (Cache n s)) Source #

explExists :: Cache n s -> Int -> IO Bool Source #

(ExplInit s, KnownNat n, Cachable s) => ExplInit (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: IO (Cache n s) Source #

(KnownNat n, Cachable s) => Cachable (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Cache n s) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Cache n s) = Elem s

data Unique c Source #

A Unique contains zero or one component. Writing to it overwrites both the previous component and its owner. Its main purpose is to be a Map optimized for when only ever one component inhabits it.

Instances
ExplMembers (Unique c) Source # 
Instance details

Defined in Apecs.Stores

ExplDestroy (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explDestroy :: Unique c -> Int -> IO () Source #

ExplSet (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Unique c -> Int -> Elem (Unique c) -> IO () Source #

ExplGet (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Unique c -> Int -> IO (Elem (Unique c)) Source #

explExists :: Unique c -> Int -> IO Bool Source #

ExplInit (Unique c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: IO (Unique c) Source #

type Elem (Unique c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Unique c) = c

data Global c Source #

A Global contains exactly one component. Initialized with mempty The store will return true for every existence check, but only ever gives (-1) as its inhabitant. The entity argument is ignored when setting/getting a global.

Instances
ExplSet (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explSet :: Global c -> Int -> Elem (Global c) -> IO () Source #

ExplGet (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explGet :: Global c -> Int -> IO (Elem (Global c)) Source #

explExists :: Global c -> Int -> IO Bool Source #

Monoid c => ExplInit (Global c) Source # 
Instance details

Defined in Apecs.Stores

Methods

explInit :: IO (Global c) Source #

type Elem (Global c) Source # 
Instance details

Defined in Apecs.Stores

type Elem (Global c) = c

class Cachable s Source #

An empty type class indicating that the store behaves like a regular map, and can therefore safely be cached.

Instances
Cachable (Map s) Source # 
Instance details

Defined in Apecs.Stores

(KnownNat n, Cachable s) => Cachable (Cache n s) Source # 
Instance details

Defined in Apecs.Stores