From: Skgland Date: Sat, 9 Aug 2025 15:50:30 +0000 (+0200) Subject: don't place allocate, read_ptr and deallocate between use_foreign_module and its... X-Git-Tag: v0.10.0~11^2~21 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=d8346b1651b07c5cb50b11703ea10234a9ec6817;p=scryer-prolog.git don't place allocate, read_ptr and deallocate between use_foreign_module and its helper predicates --- 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). +