From 00365c4a39826bf20d289af7daaa8a41c0aa6ca7 Mon Sep 17 00:00:00 2001 From: Estevan Castilho Date: Sat, 30 May 2026 02:52:21 +0000 Subject: `Project` plan node --- lib/nt_ffi.ml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/nt_ffi.ml') diff --git a/lib/nt_ffi.ml b/lib/nt_ffi.ml index 8b70150..250ad4a 100644 --- a/lib/nt_ffi.ml +++ b/lib/nt_ffi.ml @@ -92,6 +92,9 @@ let rnt_plan_join = let rnt_plan_take = fn "rnt_plan_take" (ptr void @-> size_t @-> returning (ptr void)) +let rnt_plan_project = + fn "rnt_plan_project" (ptr void @-> ptr (ptr char) @-> returning (ptr void)) + let rnt_plan_free = fn "rnt_plan_free" (ptr void @-> returning void) @@ -133,6 +136,23 @@ let with_out_string (f : char ptr ptr -> int) : int * string option = if is_null p then (rc, None) else (rc, Some (consume_cstring p)) +let with_strings_as_char_array + (strings : string list) + (body : char ptr ptr -> 'a) + : 'a = + let arr = + CArray.make + ~initial:(from_voidp char null) + (ptr char) + (1 + List.length strings) + in + List.iteri + (fun i s -> CArray.set arr i (Ctypes_std_views.char_ptr_of_string s)) + strings; + body (CArray.start arr) + (* let pp = allocate (ptr (ptr char)) (from_voidp (ptr char) null) in *) + + (* Converts a void* (returned from open_handle / cursor_open) to nativeint. Returns None when the pointer is NULL (failure). *) let ptr_to_opt (p : unit ptr) : nativeint option = -- cgit v1.2.3