SNOBOL4FFI(3) | CSNOBOL4B 2.2 | December 5, 2020

NAME

snobol4ffi – Foreign Function Interface for SNOBOL4

SYNOPSYS

-INCLUDE 'ffi.sno'
        dl = FFI_DLOPEN("/usr/lib/libm.so")
        sym = FFI_DLSYM(dl, "hypot")
        DEFINE_FFI("hypot(double,double)double", sym)
        OUTPUT = hypot(3, 4)

DESCRIPTION

FFI_DLOPEN(filename)
takes the path of a dynamicly loadable executable file and returns a value which can be passed to FFI_DLSYM().

FFI_DLSYM(library,function)
takes a library value returned by FFI_DLOPEN(), and a function name, and returns a value which can be passed to DEFINE_FFI().

DEFINE_FFI(prototype,pointer)
defines a SNOBOL4 function that calls an external function via ffi(3). prototype contains a string name for the function followed by a comma separated list of parameter types inside of parenthesis (any of: sint8, sint16, sint32, sint64, uint8, uint16, uint32, uint64, schar, sshort, sint, slong, uchar, ushort, uint, ulong, float, double, longdouble, pointer), followed by a return type, which can be any of the above parameter types, or void, string, freestring. pointer is a value returned by FFI_DLSYM().

SEE ALSO

snobol4(1), ffi(3), dlopen(3)

AUTHOR

Philip L. Budne
Inspired by an FFI interface by Fred Weigel