From cf0fffed43d0ca7618cd0013411151e057b7a32a Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Mon, 18 May 2026 12:35:26 -0300 Subject: RNT interface Co-authored-by: Estevan Castilho --- lib/sublanguage_context.ml | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/sublanguage_context.ml (limited to 'lib/sublanguage_context.ml') diff --git a/lib/sublanguage_context.ml b/lib/sublanguage_context.ml new file mode 100644 index 0000000..c7598f1 --- /dev/null +++ b/lib/sublanguage_context.ml @@ -0,0 +1,39 @@ +(** Execution context passed to every sublanguage. + + - [write_handle] NT branch handle; sublanguages use it for mutations + (create_relation, link_tuple, etc). Read-only + sublanguages (DRL) ignore it. + + - [branch] Structural view over the active branch — gives every + executor random-access to every multigroup bound to + the branch via [mg_of]. Schema lookups for an FQN + [{mg; name}] use [branch#mg_of mg |> Option.bind + (fun m -> m#get_relation name)]. + + - [resolve] Builds an absolute RNT path for an FQN. Pass + [~branch:b] to address a relation on a different + live branch (cross-multigroup reads). + + - [switch_branch] Closes the current branch and opens the named one, + returning the delta describing the new branch's mg + set. Provided by the listener so VCL does not need + direct access to session state. *) + +type branch_view = < + name : string; + tip : string; + mg_of : string -> Management.Multigroup.multigroup option; + multigroups : (string * Management.Multigroup.multigroup) list; + add_multigroup : name:string -> unit; + set_mg : name:string -> + Management.Multigroup.multigroup -> unit; + path : ?branch:string -> Qualified_name.t -> string; +> + +type t = { + write_handle : Nt.branch_handle; + branch : branch_view; + resolve : ?branch:string -> Qualified_name.t -> string; + switch_branch : string -> + (Sublanguage_types.transition_delta, Nt.error) result; +} -- cgit v1.2.3