From 9efb32195a905de2d66ce29164cc22970833c2d7 Mon Sep 17 00:00:00 2001 From: Estevan Castilho Date: Sun, 23 Aug 2026 17:03:40 +0000 Subject: Typed storage pointers --- lib/kernel/Storage.ml | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/kernel/Storage.ml') 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 -- cgit v1.2.3