Callback instantiation:
createCallback
> ^ FFICallback
> signature: #(long (long))
> block: [ :value | value ]
C functions:
long test(long(*function)(long), long value) {
> return function(value);
}
#include <limits.h>
>
> long long_min() {
> return LONG_MIN;
> }
FFI calls:
primCall: aCallback long: aNumber
> ^ self ffiCall: #(long test(FFICallback aCallback, long aNumber))
> primLongMin
> ^ self ffiCall: #(long long_min())
Test case:
test
> self
> assert: (self primCall: self createCallback long: self primLongMin)
equals: self primLongMin
self primLongMin returns -2147483648 (= LONG_MIN).
Result of callback is 0 => test fails.
P.S. works in Pharo 5
Cheers,
Alex