diff options
author | chai <chaifix@163.com> | 2019-03-16 19:29:23 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-03-16 19:29:23 +0800 |
commit | d29f5f4aebd90b1e256967801b28a5990249b2e7 (patch) | |
tree | f4f1390b57a39e0493e0f74b40dd3996d88d04e5 /Source/Samples/LuaxTest/main.cpp | |
parent | 1ab2501db0f9e14f138292880e37120e7a6184de (diff) |
*luax
Diffstat (limited to 'Source/Samples/LuaxTest/main.cpp')
-rw-r--r-- | Source/Samples/LuaxTest/main.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/Source/Samples/LuaxTest/main.cpp b/Source/Samples/LuaxTest/main.cpp index 63daa1c..d9bd315 100644 --- a/Source/Samples/LuaxTest/main.cpp +++ b/Source/Samples/LuaxTest/main.cpp @@ -57,6 +57,10 @@ void School::RegisterLuaxClass(LuaxState& state) } +void School::RegisterLuaxPostprocess(Luax::LuaxState&) +{ +} + //---------------------------------------------------------------------------------------------------------------- class Boy : public LuaxClass<Boy> @@ -83,6 +87,13 @@ public: LUAX_DECL_METHOD(l_New); LUAX_DECL_METHOD(l_GetGender); + LUAX_DECL_METHOD(l_Write); + LUAX_DECL_METHOD(l_Speak); + +private: + + LuaxMemberRef mCallbak; + }; int Boy::l_New(lua_State* L) @@ -121,6 +132,25 @@ int Boy::l_GetGender(lua_State* L) return 1; } +int Boy::l_Speak(lua_State* L) +{ + LUAX_STATE(L); + + Boy* self = state.GetLuaUserdata<Boy>(1); + self->PushMemberRef(state, self->mCallbak); + state.Call(0, 1); + return 1; +} + +int Boy::l_Write(lua_State* L) +{ + LUAX_STATE(L); + // self, func + Boy* self = state.GetLuaUserdata<Boy>(1); + self->SetMemberRef(state, self->mCallbak, 2); + return 0; +} + void Boy::RegisterLuaxClass(LuaxState& state) { state.SetField(-1, "Class", 101); // 101 @@ -144,7 +174,6 @@ void Boy::RegisterLuaxClass(LuaxState& state) }; state.RegisterEnum("EHabits", EHabits); - } void Boy::RegisterLuaxInterface(LuaxState& state) @@ -152,6 +181,8 @@ void Boy::RegisterLuaxInterface(LuaxState& state) luaL_Reg regTable[] = { { "GetAge", l_GetAge }, { "GetName", l_GetName }, + { "Write", l_Write }, + { "Speak", l_Speak }, {NULL, NULL} }; |