summaryrefslogtreecommitdiff
path: root/src/Erebos/Storable/Internal.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Erebos/Storable/Internal.hs')
-rw-r--r--src/Erebos/Storable/Internal.hs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/Erebos/Storable/Internal.hs b/src/Erebos/Storable/Internal.hs
index 4ab48a5..70b5fdc 100644
--- a/src/Erebos/Storable/Internal.hs
+++ b/src/Erebos/Storable/Internal.hs
@@ -5,7 +5,7 @@ module Erebos.Storable.Internal (
Stored(..),
fromStored, storedRef,
storedStorage,
- wrappedStore, wrappedLoad,
+ wrappedStore, wrappedLoad, loadFromObject,
copyStored,
unsafeMapStored,
@@ -61,6 +61,9 @@ wrappedStore st x = do ref <- liftIO $ store st x
wrappedLoad :: Storable a => Ref -> Stored a
wrappedLoad ref = Stored ref (load ref)
+loadFromObject :: Storable a => Stored Object -> Stored a
+loadFromObject (Stored ref obj) = Stored ref (evalLoadWithObject load' ref obj)
+
copyStored :: forall m a. MonadIO m => Storage -> Stored a -> m (Stored a)
copyStored st (Stored ref' x) = liftIO $ returnLoadResult . fmap (\r -> Stored r x) <$> copyRef' st ref'