blob: c7598f18b3d4c1bec3f22e2cd4616fb12c188c73 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
}
|