| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Database.Drasil.ChunkDB
Synopsis
- data ChunkDB
- empty :: ChunkDB
- fromList :: IsChunk a => [a] -> ChunkDB
- registered :: ChunkDB -> [UID]
- typesRegistered :: ChunkDB -> [TypeRep]
- size :: ChunkDB -> Int
- isRegistered :: UID -> ChunkDB -> Bool
- findUnused :: ChunkDB -> [UID]
- find :: Typeable a => UID -> ChunkDB -> Maybe a
- findOrErr :: forall a. Typeable a => UID -> ChunkDB -> a
- findAll :: forall a. IsChunk a => ChunkDB -> [a]
- findAll' :: TypeRep -> ChunkDB -> [UID]
- dependants :: UID -> ChunkDB -> Maybe [UID]
- dependantsOrErr :: UID -> ChunkDB -> [UID]
- findTypeOf :: UID -> ChunkDB -> Maybe TypeRep
- insert :: IsChunk a => a -> ChunkDB -> ChunkDB
- insertAll :: IsChunk a => [a] -> ChunkDB -> ChunkDB
- type UMap a = Map UID (a, Int)
- idMap :: HasUID a => [a] -> UMap a
- refTable :: ChunkDB -> UMap Reference
- refFind :: UID -> ChunkDB -> Reference
- labelledcontentTable :: ChunkDB -> UMap LabelledContent
- labelledcontentFind :: UID -> ChunkDB -> LabelledContent
- refbyTable :: ChunkDB -> Map UID [UID]
- refbyLookup :: UID -> Map UID [UID] -> [UID]
- traceTable :: ChunkDB -> Map UID [UID]
- traceLookup :: UID -> Map UID [UID] -> [UID]
Core database types and functions.
fromList :: IsChunk a => [a] -> ChunkDB Source #
Create a ChunkDB from a list of chunks. This will insert all chunks into
the database from the list, from left to right.
findUnused :: ChunkDB -> [UID] Source #
Filter the ChunkDB for chunks that are not needed by any other chunks.
These are the only chunks that can safely be removed from the database,
though we do not include this functionality.
findAll :: forall a. IsChunk a => ChunkDB -> [a] Source #
Find all chunks of a specific type in the ChunkDB.
dependantsOrErr :: UID -> ChunkDB -> [UID] Source #
Find all chunks that depend on a specific one, throwing a hard error if the dependency chunk is not found.
Temporary functions for working with non-chunk tables
idMap :: HasUID a => [a] -> UMap a Source #
Create a UMap from a list of chunks. Assumes that the leftmost chunk in
the list has index 0, increasing by 1 each step to the right.
labelledcontentFind :: UID -> ChunkDB -> LabelledContent Source #
Find a LabelledContent by its UID, throwing an error if it is not
found.