perdure-0.2.0: Robust persistence for acyclic immutable data

Safe HaskellNone

Database.Perdure.Persistent

Synopsis

Documentation

data Persister a whereSource

Constructors

PartialWordPersister :: !(Len Bool Word) -> Persister Word 
PairPersister :: !(Persister a) -> !(Persister b) -> Persister (a, b) 
EitherPersister :: !(Persister a) -> !(Persister b) -> Persister (Either a b) 
ViewPersister :: !(InjectionA' a b) -> Persister b -> Persister a 
SummationPersister :: !(Persister i) -> !(forall z. (forall b. Persister b -> (b -> a) -> z) -> i -> z) -> !(forall z. (forall b. i -> Persister b -> (b -> a) -> b -> z) -> a -> z) -> Persister a 
DRefPersister' :: (Typeable a, Persistent a) => Persister (DRef a) 
CRefPersister' :: (Typeable a, Persistent a) => !(RefPersister r) -> !(Persister (r a)) -> Persister (CRef r a) 

class Persistent a whereSource

Instances

Persistent Bool 
Persistent Char 
Persistent Double 
Persistent Float 
Persistent Int8 
Persistent Int16 
Persistent Int32 
Persistent Int64 
Persistent Integer 
Persistent Ordering 
Persistent Word8 
Persistent Word16 
Persistent Word32 
Persistent Word64 
Persistent () 
Persistent Word128 
Persistent UTCTime 
Persistent Day 
Persistent DiffTime 
Persistent MD5Digest 
Persistent W64Validator 
Persistent W32Validator 
Persistent NoRev 
Persistent SpaceTree 
Persistent SpaceBook 
Persistent StateId 
Persistent a => Persistent [a] 
(Integral a, Persistent a) => Persistent (Ratio a) 
Persistent a => Persistent (Maybe a) 
(Ord k, Persistent k) => Persistent (Set k) 
Persistent h => Persistent (Skein512Digest h) 
Persistent (BasicRef w) 
Persistent a => Persistent (Ref0 a) 
(Typeable a, Persistent a) => Persistent (DRef a) 
Persistent (RootValidator w) 
(Typeable a, Persistent a) => Persistent (History a) 
(Typeable a, Persistent a) => Persistent (Queue a) 
(Typeable a, Persistent a) => Persistent (MapMultiset a) 
(Persistent a, Typeable a) => Persistent (RootValues a) 
(Persistent a, Typeable a) => Persistent (Root a) 
(Persistent (a -> c), Persistent (b -> c)) => Persistent (Either a b -> c) 
Persistent c => Persistent (() -> c) 
(Persistent a, Persistent b) => Persistent (Either a b) 
(Persistent a1, Persistent a2) => Persistent (a1, a2) 
Persistent a => Persistent (Len u a) 
RWordC Word8 n => Persistent (RWord Word8 n) 
RWordC Word16 n => Persistent (RWord Word16 n) 
RWordC Word32 n => Persistent (RWord Word32 n) 
RWordC Word64 n => Persistent (RWord Word64 n) 
(Ord k, Persistent k, Persistent v) => Persistent (Map k v) 
(RefPersistent r, Persistent1 r, Typeable a, Persistent a) => Persistent (CRef r a) 
(Persistent1 r, Typeable a, Persistent a) => Persistent (IRef r a) 
(Persistent v, LgPersistent1_ r, LgMultiple Word64 (ValidatedElem v)) => Persistent (WordNArrayRef v r) 
PersistentRev (:> b r) => Persistent (:> b r) 
Persistent a => Persistent (Leaf k a) 
(Persistent a, Persistent k, Typeable k, Typeable a) => Persistent (Map k a) 
(Persistent a1, Persistent a2, Persistent a3) => Persistent (a1, a2, a3) 
(Persistent1 ra, Persistent1 rb, Typeable a, Persistent a) => Persistent (Sum ra rb a) 
(Persistent (r32 r), Persistent (r64 r)) => Persistent (WordArrayRef r32 r64 r) 
(Persistent k, Persistent (t k a)) => Persistent (Upper t k a) 
(Persistent k, Persistent (t k a)) => Persistent (Node t k a) 
(Persistent k, Persistent (t k a), Typeable2 t, Typeable k, Typeable a) => Persistent (Tree t k a) 
(Persistent (t k a), Typeable (t k a)) => Persistent (Reference t k a) 
(Persistent a1, Persistent a2, Persistent a3, Persistent a4) => Persistent (a1, a2, a3, a4) 
(Persistent a1, Persistent a2, Persistent a3, Persistent a4, Persistent a5) => Persistent (a1, a2, a3, a4, a5) 
(Persistent a1, Persistent a2, Persistent a3, Persistent a4, Persistent a5, Persistent a6) => Persistent (a1, a2, a3, a4, a5, a6) 

class Persistent1_ r whereSource

summationPersister :: Persister i -> (forall z. (forall b. Persister b -> (b -> a) -> z) -> i -> z) -> (forall z. (forall b. i -> Persister b -> (b -> a) -> b -> z) -> a -> z) -> Persister aSource

maybePersister :: Persister a -> Persister (Maybe a)Source

Persister for 'Maybe a' built from a specified a persister. Uses a single bit to represent Nothing.

shortcutPersister :: InjectionM i => i a b -> Persister b -> Persister a -> Persister bSource

Takes persisters for 2 types, and an injection from the smaller type a to the larger type b, and gives a persister for the larger type which uses the smaller type representation when possible, plus one bit to identify which representation is used.

(>.) :: Super a b => Persister b -> Persister a -> Persister bSource

Specialization of shortcutPersister with the super injection.

listPersister :: List a => Persister (Listed a) -> Persister aSource

Persister for lists built from a specified element persister.

data ReplicatedFile Source

A list of LocalStoreFile to be used as replicates. We write to all replicates and read from the first one that reports no error.

data CRef r a Source

Constructors

Refed !(r a) 
ToRef !a 

Instances

Deref r => Functor (CRef r) 
(RefPersistent r, Persistent1 r) => Persistent1 (CRef r) 
RefPersistent r => RefPersistent (CRef r) 
Deref r => Deref (CRef r) 
Deref r => Ref (CRef r) 
(Deref r, Eq a) => Eq (CRef r a) 
(Deref r, Show a) => Show (CRef r a) 
(Typeable1 r, Typeable a) => Typeable (CRef r a) 
(RefPersistent r, Persistent1 r, Typeable a, Persistent a) => Persistent (CRef r a) 

onCRef :: (r a -> b) -> (a -> b) -> CRef r a -> bSource

data DeserializerContext Source

Constructors

forall f . (StoreFile f, StoreRef f ~ BasicRef) => DeserializerContext 

Fields

dcFile :: f
 
dcCache :: MVar Cache
 

data DRef a whereSource

Constructors

DRef :: Typeable a => !(Persister a) -> !DeserializerContext -> !(WArrayRef BasicRef) -> DRef a 

data WordArrayRef r32 r64 r Source

Constructors

Word32ArrayRef !(r32 r) 
Word64ArrayRef !(r64 r) 

Instances

(ArrayRef r32, ArrayRef r64, ~ * (ArrayRefElem r32) Word32, ~ * (ArrayRefElem r64) Word64) => ArrayRef (WordArrayRef r32 r64)

When we write Words and read them back on a platform with a different Word size, the array length changes, and each Word64 is replaced by two consecutive Words32 (least-significant first), (the reverse substitution is applied when going from Word32 to Word64, with an implicit 0 at the end when the size is odd)

Structured (WordArrayRef r320 r640 r0) 
(Persistent (r32 r), Persistent (r64 r)) => Persistent (WordArrayRef r32 r64 r) 

data WordNArrayRef v r Source

Constructors

WordNArrayRef !v !(r (ValidatedElem v)) !Endianness 

Instances

WordNValidator v => ArrayRef (WordNArrayRef v) 
Structured (WordNArrayRef v0 r0) 
(Persistent v, LgPersistent1_ r, LgMultiple Word64 (ValidatedElem v)) => Persistent (WordNArrayRef v r) 

type WArrayRef = WordArrayRef (WordNArrayRef W32Validator) (WordNArrayRef W64Validator)Source

newtype IRef r t Source

Constructors

IRef 

Fields

getIRef :: r t
 

Instances

Functor r => Functor (IRef r) 
Applicative r => Applicative (IRef r) 
Persistent1 r => Persistent1 (IRef r) 
RefPersistent r => RefPersistent (IRef r) 
Deref r => Deref (IRef r) 
Ref r => Ref (IRef r) 
(Deref r, Eq t) => Eq (IRef r t) 
(Deref r, Show t) => Show (IRef r t) 
Structured (IRef r0 t0) 
(Persistent1 r, Typeable a, Persistent a) => Persistent (IRef r a) 

newtype Ref0 a Source

Constructors

Ref0 a