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)
+
+