don't place allocate, read_ptr and deallocate between use_foreign_module and its helper predicates
This commit is contained in:
@@ -73,23 +73,6 @@ use_foreign_module(LibName, Predicates) :-
|
|||||||
'$load_foreign_lib'(LibName, Predicates),
|
'$load_foreign_lib'(LibName, Predicates),
|
||||||
maplist(assert_predicate, 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) :-
|
assert_predicate(PredicateDefinition) :-
|
||||||
PredicateDefinition =.. [Name, Inputs, void],
|
PredicateDefinition =.. [Name, Inputs, void],
|
||||||
length(Inputs, NumInputs),
|
length(Inputs, NumInputs),
|
||||||
@@ -125,3 +108,22 @@ assert_predicate(PredicateDefinition) :-
|
|||||||
),
|
),
|
||||||
Predicate = (Head:-Body),
|
Predicate = (Head:-Body),
|
||||||
assertz(ffi:Predicate).
|
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).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user