lua help with classes
BlitzMax Forums/BlitzMax Programming/lua help with classes
| ||
for some reason i cant get this to work using axe.lua modSimpleClass = {} SimpleClass_mt = { __index = SimpleClass } -- This function creates a new instance of SimpleClass -- function SimpleClass:create() local new_inst = {x = 3} -- the new instance setmetatable( new_inst, SimpleClass_mt ) -- all instances share the same metatable return new_inst end -- Here are some functions (methods) for SimpleClass: function SimpleClass:className() print( "SimpleClass" ) end function SimpleClass:doSomething() print( "Doing something" ) end simple = SimpleClass:create() simple:className() in bmx using this for testing as i'm learning lua. Import axe.lua Function luaPrint( l:Byte Ptr ) For Local i:Int = 1 To lua_gettop( l ) ' The lua stack goes from 1 to lua_gettop( l ) -- it does not start at zero Select lua_type( l, i ) ' gets the type of the variable Case LUA_TBOOLEAN Print lua_toboolean( l, i ) ' true/false Case LUA_TNUMBER Print lua_tonumber( l, i ) ' double Case LUA_TSTRING Print String.FromCString( lua_tostring( l, i ) ) ' print a string - lua_tostring is an auxiliary function ' you should use lua_tolstring in your own code for safety Default ' other types exist, but for the sake of not writing too much code, they're excluded End Select Print "i "+i Next Return 0 ' zero arguments are returned -- if you pushed anything on the stack, you'd specify the ' amount of values you wanted to return End Function Local state:Byte Ptr = luaL_newstate( ) ' Create the state lua_register( state, "print", luaPrint ) ' Register the function lua_dofile( state, "luatest.lua" ) ' Execute a script lua_close( state ) ' Close the state 'Input "Done>" ' Pause however if i use the initial Table it works, but not if i try to create a new instance Working Lua script SimpleClass = {} SimpleClass_mt = { __index = SimpleClass } -- This function creates a new instance of SimpleClass -- function SimpleClass:create() local new_inst = {x = 3} -- the new instance setmetatable( new_inst, SimpleClass_mt ) -- all instances share the same metatable return new_inst end -- Here are some functions (methods) for SimpleClass: function SimpleClass:className() print( "SimpleClass" ) end function SimpleClass:doSomething() print( "Doing something" ) end SimpleClass:className() |
| ||
you know what, calling luaL_openlibs(state) would make a big difference |
| ||
thank you split personality that is what the problem was |