Mercurial > pub > dyncall > bindings
diff lua/luadyncall/src/dyncall.lua @ 0:0cfcc391201f
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:26:28 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lua/luadyncall/src/dyncall.lua Thu Mar 19 22:26:28 2015 +0100 @@ -0,0 +1,27 @@ +require "ldyncall" +require "dynload" + +--- invoke dynamic foreign function call +-- This is a front-end function that provides several interfaces +-- @param target Target signature +-- @param ... if target is a string, then the arguments follow. +-- @see dodyncall for details + +function dyncall(target, ...) + local t = type(target) + if t == "string" then + local libnames, sym, sig = target:match("^@(.+)/(.+)%((.+)") + local lib = dynload(libnames) -- hold reference as long as the call + return ldyncall.dodyncall( dynsym( lib,sym ), sig, ...) + else + return ldyncall.dodyncall( target, ...) + end +end + +-- pointer utilities +-- + +topointer = ldyncall.topointer +NULL = topointer(0) + +