File: import.lua

package info (click to toggle)
swig2.0 2.0.7-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 31,260 kB
  • sloc: cpp: 49,839; ansic: 25,403; java: 8,412; python: 6,579; cs: 5,773; yacc: 5,158; makefile: 5,098; sh: 4,806; ruby: 3,673; perl: 2,384; lisp: 1,741; php: 1,701; tcl: 971; ml: 619; xml: 85
file content (42 lines) | stat: -rw-r--r-- 1,248 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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