diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/lua/import.lua | |
download | swig-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.lua | 42 |
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 |