aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Storage.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/Storage.ml')
-rw-r--r--lib/kernel/Storage.ml12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/kernel/Storage.ml b/lib/kernel/Storage.ml
index 376d839..e6a84ba 100644
--- a/lib/kernel/Storage.ml
+++ b/lib/kernel/Storage.ml
@@ -1,4 +1,16 @@
module Make (S : Abstract.Storage.STORAGE) = struct
+ module Pointer = struct
+ type 'a t = {
+ addr : S.address;
+ loader : S.transaction -> S.address -> ('a, Concepts.Condition.condition) result
+ }
+
+ let make addr loader = { addr; loader }
+ let address_of { addr; _ } = addr
+ let swap { loader; _ } addr = make addr loader
+ let deref tx { addr; loader } = loader tx addr
+ end
+
let finish tx = function
| Ok value ->
let open Utilities.Result in