From 70b82d1981c0de3c7b77670ff8abcfeb26815142 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 12 Mar 2019 00:39:26 +0800 Subject: *misc --- Source/3rdParty/Luax/luax_class.inl | 76 +++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Source/3rdParty/Luax/luax_class.inl (limited to 'Source/3rdParty/Luax/luax_class.inl') diff --git a/Source/3rdParty/Luax/luax_class.inl b/Source/3rdParty/Luax/luax_class.inl new file mode 100644 index 0000000..23d4c28 --- /dev/null +++ b/Source/3rdParty/Luax/luax_class.inl @@ -0,0 +1,76 @@ + +//---------------------------------------------------------------------------------------------------------------- +// 接口 + +/// +/// 对不同类型,通过调用GetLuaClassName获得类型名 +/// +template +int LuaxClass::l_GetClassName(lua_State* L) +{ + LUAX_SETUP(L, "*"); + + cc8* type = T::GetLuaxClassName(); + state.Push(type); + return 1; +} + +//---------------------------------------------------------------------------------------------------------------- + +/// +/// 注册工厂和单例共有的类成员 +/// +template +void LuaxClass::RegisterLuaxClass(LuaxState& state) +{ + luaL_Reg regTable[] = { + { "GetClassName", l_GetClassName }, + { NULL, NULL } + }; + + state.Register(regTable); +} + + +/// +/// 工厂类的成员,注册在class table +/// +template +void LuaxClass::RegisterLuaxFactoryClass(LuaxState& state) +{ + luaL_Reg regTable[] = { + { "Extend", l_ExtendFactory }, + { NULL, NULL } + }; + + state.Register(regTable); +} + + +/// +/// 工厂实例的成员,注册在interface table +/// +template +void LuaxClass::RegisterLuaxInterface(LuaxState& state) +{ + luaL_Reg regTable[] = { + { "__gc", l_GC }, + { NULL, NULL } + }; + + state.Register(regTable); +} + + +/// +/// 单例类的成员,注册在class table +/// +template +void LuaxClass::RegisterLuaxSingletonClass(LuaxState& state) +{ + luaL_Reg regTable[] = { + {NULL, NULL} + }; + + state.Register(regTable); +} \ No newline at end of file -- cgit v1.1-26-g67d0