summaryrefslogtreecommitdiff
path: root/src/Erebos/Storable/Internal.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-08-02 11:00:02 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2026-08-04 20:49:59 +0200
commitafaa0cc6790b55e2db31450d3a2951d524930585 (patch)
treeab2b284288d0d7324bc839636177b6b26a945904 /src/Erebos/Storable/Internal.hs
parentb09e4fa7a0123c51b79c238d622970d343eade87 (diff)
Function to load Storable from Stored Object
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'