⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tclass.lua

📁 tolua++是一个对lua进行封装调用的工具
💻 LUA
字号:
if not Test then	local loadlib	if not package then		loadlib = _G['loadlib']	else		loadlib = package.loadlib	end	f, e, eo = loadlib("./libtclass.so", "luaopen_tclass")	if f then		f()	else		print(eo, e)		os.exit()	endenda = {}rawset(a, ".c_instance", "something")function hello()	print("hello world")endrawset(Test.B, "hello", hello)-- type convertion tests--print(Test.A)--print(tolua.type(Test.A.last))--assert(tolua.type(Test.A.last) == 'Test::Tst_A') -- first time the object is mapped--assert(tolua.type(Test.B.last) == 'Test::Tst_B') -- type convertion to specialized type--assert(tolua.type(Test.A.last) == 'Test::Tst_B') -- no convertion: obj already mapped as Blocal a = Test.A:new()assert(tolua.type(Test.A.last) == 'Test::Tst_A') -- no type convertion: same typelocal b = Test.B:new()assert(tolua.type(Test.A.last) == 'Test::Tst_B') -- no convertion: obj already mapped as Blocal c = Test.luaC:new(0)assert(tolua.type(Test.A.last) == 'Test::Tst_C') -- no convertion: obj already mapped as Cassert(tolua.type(Test.luaC.last) == 'Test::Tst_C')local aa = Test.A.AA:new()local bb = Test.A.BB:new()local xx = Test.create_aa()-- method calling testsassert(a:a() == 'A')assert(b:a() == 'A')assert(b:b() == 'B')assert(c:a() == 'A')assert(c:b() == 'B')assert(c:c() == 'C')assert(aa:aa() == 'AA')assert(bb:aa() == bb:Base():aa())assert(xx:aa() == 'AA')assert(Test.is_aa(bb) == true)-- test ownershipping handling-- should delete objects: 6 7 8 9 10 (it may vary!)local set = {}for i=1,10 do local c = Test.luaC:new(i)	if i>5 then		tolua.takeownership(c)	end	--set[i] = cende = Test.B:new_local()print("e is type "..tolua.type(e))print("ae is type "..tolua.type(ae))--e:delete()b:hello()----------local out = Test.Outside:new_local()out:outside()Test.Outside:outside_static(nil)print "***** cast"local acast = Test.B:create_void()print("type is "..tolua.type(acast))local bcast = tolua.cast(acast, "Test::Tst_B")print("bcast is "..tostring(bcast))print("type is "..tolua.type(bcast))print(bcast:b())-- test properieslocal n = 7a.number = nassert(a.number == n*2)-- constructorsprint(getmetatable(Test.A))print(getmetatable(Test.B))print(getmetatable(Test.E))local a = Test.A()local b = Test.B()local e = Test.E(5)--print(e+5)print(tostring(getmetatable(Test.B).__call))print(tostring(Test.B.__call))print(tostring(Test.B.__call(Test.B)))print(tolua.type(b))e:set_ptr(e)local ve = tolua.cast(e:get_ptr(), "Test::Tst_E")ve:set_ptr(ve)print"1"Test.A.pete = {}print"2"table.insert(Test.A.pete, a)print"3"for i=1,100000 do	la = {}	tolua.inherit(la, a)endprint("Class test OK")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -