0
|
1 require "ldyncall"
|
|
2 require "dynload"
|
|
3
|
|
4 --- invoke dynamic foreign function call
|
|
5 -- This is a front-end function that provides several interfaces
|
|
6 -- @param target Target signature
|
|
7 -- @param ... if target is a string, then the arguments follow.
|
|
8 -- @see dodyncall for details
|
|
9
|
|
10 function dyncall(target, ...)
|
|
11 local t = type(target)
|
|
12 if t == "string" then
|
|
13 local libnames, sym, sig = target:match("^@(.+)/(.+)%((.+)")
|
|
14 local lib = dynload(libnames) -- hold reference as long as the call
|
|
15 return ldyncall.dodyncall( dynsym( lib,sym ), sig, ...)
|
|
16 else
|
|
17 return ldyncall.dodyncall( target, ...)
|
|
18 end
|
|
19 end
|
|
20
|
|
21 -- pointer utilities
|
|
22 --
|
|
23
|
|
24 topointer = ldyncall.topointer
|
|
25 NULL = topointer(0)
|
|
26
|
|
27
|