mirror of https://github.com/swig/swig.git
38 lines
1.2 KiB
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)
|
|
]]
|