From d8346b1651b07c5cb50b11703ea10234a9ec6817 Mon Sep 17 00:00:00 2001 From: Skgland Date: Sat, 9 Aug 2025 17:50:30 +0200 Subject: [PATCH] don't place allocate, read_ptr and deallocate between use_foreign_module and its helper predicates --- src/lib/ffi.pl | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/lib/ffi.pl b/src/lib/ffi.pl index 22ff5595..1a1bad84 100644 --- a/src/lib/ffi.pl +++ b/src/lib/ffi.pl @@ -73,23 +73,6 @@ use_foreign_module(LibName, Predicates) :- '$load_foreign_lib'(LibName, Predicates), maplist(assert_predicate, Predicates). -allocate(Allocator, Type, Args, Ptr) :- - must_be(var, Ptr), - must_be(atom, Type), - must_be(atom, Allocator), - '$ffi_allocate'(Allocator, Type, Args, Ptr). - -read_ptr(Type, Ptr, Value) :- - must_be(var, Value), - must_be(atom, Type), - must_be(integer, Ptr), - '$ffi_read_ptr'(Type, Ptr, Value). - -deallocate(Allocator, Type, Ptr) :- - must_be(atom, Allocator), - must_be(integer, Ptr), - '$ffi_deallocate'(Allocator, Type, Ptr). - assert_predicate(PredicateDefinition) :- PredicateDefinition =.. [Name, Inputs, void], length(Inputs, NumInputs), @@ -125,3 +108,22 @@ assert_predicate(PredicateDefinition) :- ), Predicate = (Head:-Body), assertz(ffi:Predicate). + + +allocate(Allocator, Type, Args, Ptr) :- + must_be(var, Ptr), + must_be(atom, Type), + must_be(atom, Allocator), + '$ffi_allocate'(Allocator, Type, Args, Ptr). + +read_ptr(Type, Ptr, Value) :- + must_be(var, Value), + must_be(atom, Type), + must_be(integer, Ptr), + '$ffi_read_ptr'(Type, Ptr, Value). + +deallocate(Allocator, Type, Ptr) :- + must_be(atom, Allocator), + must_be(integer, Ptr), + '$ffi_deallocate'(Allocator, Type, Ptr). + -- 2.54.0