From c284fcd570342c31bc21169960579a20a763e32e Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Tue, 23 Jun 2026 23:53:26 -0300 Subject: Format --- lib/prl/runtime.ml | 55 ++++++++++++++++++++++++------------------------------ 1 file changed, 24 insertions(+), 31 deletions(-) (limited to 'lib/prl/runtime.ml') diff --git a/lib/prl/runtime.ml b/lib/prl/runtime.ml index 9ebef84..103b5c1 100644 --- a/lib/prl/runtime.ml +++ b/lib/prl/runtime.ml @@ -1,7 +1,6 @@ -type t = { loaded_libraries : (string, unit) Hashtbl.t; mutex : Mutex.t } +type t = {loaded_libraries: (string, unit) Hashtbl.t; mutex: Mutex.t} -let state : t = - { loaded_libraries = Hashtbl.create 16; mutex = Mutex.create () } +let state : t = {loaded_libraries= Hashtbl.create 16; mutex= Mutex.create ()} let load_library path : (unit, string) result = Mutex.protect state.mutex (fun () -> @@ -11,44 +10,40 @@ let load_library path : (unit, string) result = Dynlink.loadfile path; Hashtbl.replace state.loaded_libraries path (); Ok () - with Dynlink.Error e -> Error (Dynlink.error_message e)) + with Dynlink.Error e -> Error (Dynlink.error_message e) ) (* Convert an engine materialized tuple to the plugin's (string * Obj.t) list format. *) -let to_plugin_row (schema : Schema.t) (tuple : Tuple.materialized) : - Sakura_prl_api.tuple option = +let to_plugin_row (schema : Schema.t) (tuple : Tuple.materialized) : Sakura_prl_api.tuple option = let rec go acc = function | [] -> Some (List.rev acc) | (attr_name, _) :: rest -> ( - match Tuple.AttributeMap.find_opt attr_name tuple.attributes with - | None -> None - | Some attr -> go ((attr_name, attr.Attribute.value) :: acc) rest) + match Tuple.AttributeMap.find_opt attr_name tuple.attributes with + | None -> None + | Some attr -> go ((attr_name, attr.Attribute.value) :: acc) rest ) in go [] schema (* Convert a plugin row back to an engine materialized tuple. *) -let of_plugin_row relation_name (schema : Schema.t) (row : Sakura_prl_api.tuple) - : Tuple.materialized option = +let of_plugin_row relation_name (schema : Schema.t) (row : Sakura_prl_api.tuple) : + Tuple.materialized option = let rec go acc = function - | [] -> Some { Tuple.relation = relation_name; attributes = acc } + | [] -> Some {Tuple.relation= relation_name; attributes= acc} | (attr_name, _) :: rest -> ( - match List.assoc_opt attr_name row with - | None -> None - | Some value -> - go (Tuple.AttributeMap.add attr_name { Attribute.value } acc) rest) + match List.assoc_opt attr_name row with + | None -> None + | Some value -> go (Tuple.AttributeMap.add attr_name {Attribute.value} acc) rest ) in go Tuple.AttributeMap.empty schema (* Wrap a list of plugin rows as a generator. Uses an array for O(1) indexing. *) -let rows_to_generator relation_name schema (rows : Sakura_prl_api.tuple list) : - Generator.t = +let rows_to_generator relation_name schema (rows : Sakura_prl_api.tuple list) : Generator.t = let arr = Array.of_list rows in let n = Array.length arr in let rec gen i _pos = if i >= n then Generator.Done else match of_plugin_row relation_name schema arr.(i) with - | None -> - Generator.Error "Plugin row does not conform to predicate schema." + | None -> Generator.Error "Plugin row does not conform to predicate schema." | Some tuple -> Generator.Value (Tuple.Materialized tuple, gen (i + 1)) in gen 0 @@ -62,21 +57,19 @@ let make_generator relation_name schema (impl : Sakura_prl_api.implementation) fun _pos -> match Lazy.force rows_result with | Error e -> Generator.Error e - | Ok rows -> rows_to_generator relation_name schema rows _pos) + | Ok rows -> rows_to_generator relation_name schema rows _pos ) -let make_producer relation_name schema (impl : Sakura_prl_api.implementation) : - Relation.producer = +let make_producer relation_name schema (impl : Sakura_prl_api.implementation) : Relation.producer = fun bindings -> make_generator relation_name schema impl bindings -let make_membership_criteria schema (impl : Sakura_prl_api.implementation) : - Tuple.t -> bool = +let make_membership_criteria schema (impl : Sakura_prl_api.implementation) : Tuple.t -> bool = match impl.membership_criteria with | None -> fun _ -> false | Some check -> ( (* fun _tree_of -> *) - function - | Tuple.NonMaterialized _ -> false - | Tuple.Materialized m -> ( - match to_plugin_row schema m with - | None -> false - | Some row -> ( match check row with Ok b -> b | Error _ -> false))) + function + | Tuple.NonMaterialized _ -> false + | Tuple.Materialized m -> ( + match to_plugin_row schema m with + | None -> false + | Some row -> ( match check row with Ok b -> b | Error _ -> false ) ) ) -- cgit v1.2.3