summaryrefslogtreecommitdiff
path: root/Examples/lua/import.lua
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/lua/import.lua
downloadswig-tarball-master.tar.gz
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/lua/import.lua')
-rw-r--r--Examples/lua/import.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/Examples/lua/import.lua b/Examples/lua/import.lua
new file mode 100644
index 0000000..b2a40b0
--- /dev/null
+++ b/Examples/lua/import.lua
@@ -0,0 +1,42 @@
+-- import
+-- the lua 5.0 loading mechanism is rather poor & relies upon the loadlib() fn
+-- the lua 5.1 loading mechanism is simplicity itself
+-- for now we need a bridge which will use the correct verion
+
+function import_5_0(module)
+ -- imports the file into the program
+ -- for a module 'example'
+ -- this must load 'example.dll' or 'example.so'
+ -- and look for the fn 'Example_Init()' (note the capitalisation)
+ if rawget(_G,module)~=nil then return end -- module appears to be loaded
+
+ -- capitialising the first letter
+ local c=string.upper(string.sub(module,1,1))
+ local fnname=c..string.sub(module,2).."_Init"
+
+ local suffix,lib
+ -- note: as there seems to be no way in lua to determine the platform
+ -- we will try loading all possible names
+ -- providing one works, we can load
+ for _,suffix in pairs{".dll",".so"} do
+ lib=loadlib(module..suffix,fnname)
+ if lib then -- found
+ break
+ end
+ end
+ assert(lib,"error loading module:"..module)
+
+ lib() -- execute the function: initalising the lib
+ local m=rawget(_G,module) -- gets the module object
+ assert(m~=nil,"no module table found")
+end
+
+function import_5_1(module)
+ require(module)
+end
+
+if string.sub(_VERSION,1,7)=='Lua 5.0' then
+ import=import_5_0
+else
+ import=import_5_1
+end \ No newline at end of file