---- importing ----
if string.sub(_VERSION,1,7)=='Lua 5.0' then
	-- lua5.0 doesn't have a nice way to do this
	lib=loadlib('example.dll','luaopen_example') or loadlib('example.so','luaopen_example')
	assert(lib)()
else
	-- lua 5.1 does
	require('example')
end

-- First create some objects using the pointer library.
print("Testing the pointer library")
a = example.new_intp()
b = example.new_intp()
c = example.new_intp()
example.intp_assign(a,37)
example.intp_assign(b,42)

print("     a = "..tostring(a))
print("     b = "..tostring(b))
print("     c = "..tostring(c))

-- Call the add() function with some pointers
example.add(a,b,c)

-- Now get the result
r = example.intp_value(c)
print("     37 + 42 = "..r)

-- Clean up the pointers
-- since this is C-style pointers you must clean it up
example.delete_intp(a)
example.delete_intp(b)
example.delete_intp(c)

-- Now try the typemap library
-- This should be much easier. Now how it is no longer
-- necessary to manufacture pointers.

print("Trying the typemap library")
r = example.sub(37,42)
print("     37 - 42 = "..r)

-- Now try the version with multiple return values

print("Testing multiple return values")
q,r = example.divide(42,37)
print("     42/37 = "..q.." remainder "..r)
