From 9c0c9c9284b4cea07656a5e91eaf90adb961a38e Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 18 Mar 2019 00:17:41 +0800 Subject: *luax --- Source/3rdParty/Luax/luax_class.hpp | 6 ++++-- Source/3rdParty/Luax/luax_class.inl | 4 ++++ Source/3rdParty/Luax/luax_config.h | 2 ++ Source/3rdParty/Luax/luax_state.inl | 8 ++++++-- 4 files changed, 16 insertions(+), 4 deletions(-) (limited to 'Source/3rdParty') diff --git a/Source/3rdParty/Luax/luax_class.hpp b/Source/3rdParty/Luax/luax_class.hpp index 1689e0c..3cbaf9c 100644 --- a/Source/3rdParty/Luax/luax_class.hpp +++ b/Source/3rdParty/Luax/luax_class.hpp @@ -125,15 +125,17 @@ namespace Luax // 工厂类相关 LUAX_DECL_METHOD( l___gc ); +#ifdef LUAX_ENABLE_NATIVE_EXTEND LUAX_DECL_METHOD( l_ExtendFactory ); +#endif LUAX_DECL_METHOD( l_GetRefTable ); LUAX_DECL_METHOD( l_New ); //------------------------------------------------------------------------------------------------------------ // 单例类相关 - +#ifdef LUAX_ENABLE_NATIVE_EXTEND LUAX_DECL_METHOD( l_ExtendSingleton ); - +#endif }; //-------------------------------------------------------------------------------------------------------------- diff --git a/Source/3rdParty/Luax/luax_class.inl b/Source/3rdParty/Luax/luax_class.inl index 48f1c1a..6f00a84 100644 --- a/Source/3rdParty/Luax/luax_class.inl +++ b/Source/3rdParty/Luax/luax_class.inl @@ -345,6 +345,8 @@ namespace Luax return 0; } +#ifdef LUAX_ENABLE_NATIVE_EXTEND + /// /// 派生出子类,在lua里对派生类的成员和行为进行重新设计,但是保证了userdata的统一。Native class的派生提供Ctor支持,在 /// native实体创建后可以使用Ctor进行初始化,派生类拥有和基类一样的New参数列表,且native对象是一样的类型。 @@ -447,6 +449,8 @@ namespace Luax return 1; } +#endif + template int LuaxNativeClass::l_GetClass(lua_State* L) { diff --git a/Source/3rdParty/Luax/luax_config.h b/Source/3rdParty/Luax/luax_config.h index 3401336..a161d95 100644 --- a/Source/3rdParty/Luax/luax_config.h +++ b/Source/3rdParty/Luax/luax_config.h @@ -50,6 +50,8 @@ namespace Luax #define LUAX_API LUAX_LIBRARY_EXPORT #endif +//#define LUAX_ENABLE_NATIVE_EXTEND 0 + } #endif \ No newline at end of file diff --git a/Source/3rdParty/Luax/luax_state.inl b/Source/3rdParty/Luax/luax_state.inl index 712eb1d..12fa21f 100644 --- a/Source/3rdParty/Luax/luax_state.inl +++ b/Source/3rdParty/Luax/luax_state.inl @@ -20,7 +20,7 @@ namespace Luax T::RegisterLuaxClass(state); // 检测T里面是否没有注册必须的方法 - #define _assertmethod(I, NAME) \ +#define _assertmethod(I, NAME) \ GetField(I, NAME); \ assert(IsType(-1, LUA_TFUNCTION)); \ Pop(); @@ -28,12 +28,14 @@ namespace Luax _assertmethod(-1, "New"); //_assertmethod(-1, "__gc"); - #undef _assertmethod +#undef _assertmethod +#ifdef LUAX_ENABLE_NATIVE_EXTEND // .Extend() lua_pushvalue(state, -1); // class table lua_pushcclosure(state, LuaxNativeClass::l_ExtendFactory, 1); lua_setfield(state, -2, "Extend"); +#endif // class["__index"] = class lua_pushvalue(state, -1); // class table @@ -74,10 +76,12 @@ namespace Luax lua_pushvalue(state, -1); lua_setfield(state, -2, "__index"); +#ifdef LUAX_ENABLE_NATIVE_EXTEND // .Extend() lua_pushvalue(state, -1); // class table lua_pushcclosure(state, LuaxNativeClass::l_ExtendSingleton, 1); lua_setfield(state, -2, "Extend"); +#endif cc8* type = T::GetLuaxSingletonName(); SetField(top, type); -- cgit v1.1-26-g67d0