swig/Examples/test-suite/lua/cpp11_director_enums_runme.lua

38 lines
1.2 KiB
Lua

require("cpp11_director_enums")
-- Create a derived classes
local MyEnumsCB = {}
function MyEnumsCB:new()
local parent = cpp11_director_enums.Cpp11DirectorEnumsCallback
self.__index = self
-- Inherit Foo
setmetatable(self, { __index = parent })
-- Inside swig_derive() we can only call the partent methods!
local obj = parent()
local color = cpp11_director_enums.Color_Red
-- Use SWIG-provided helper to set multiple overrides at once
swig_derive(obj, {
f = function(self, c)
if c == cpp11_director_enums.Color_Red then
return cpp11_director_enums.Color_Green
end
return c
end,
g = function(self, c)
-- TODO pass a reference to Color
return cpp11_director_enums.Color_Blue
end
})
return obj
end
local m = MyEnumsCB:new()
assert(m:f(cpp11_director_enums.Color_Red) == cpp11_director_enums.Color_Green)
assert(m:f(cpp11_director_enums.Color_Blue) == cpp11_director_enums.Color_Blue)
--[[
TODO pass reference of Color
assert(m:g(cpp11_director_enums.Color_Blue) == cpp11_director_enums.Color_Red)
assert(m:g(cpp11_director_enums.Color_Green) == cpp11_director_enums.Color_Green)
]]