summaryrefslogtreecommitdiff
path: root/Source/Samples/LuaxTest/main.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-16 19:29:23 +0800
committerchai <chaifix@163.com>2019-03-16 19:29:23 +0800
commitd29f5f4aebd90b1e256967801b28a5990249b2e7 (patch)
treef4f1390b57a39e0493e0f74b40dd3996d88d04e5 /Source/Samples/LuaxTest/main.cpp
parent1ab2501db0f9e14f138292880e37120e7a6184de (diff)
*luax
Diffstat (limited to 'Source/Samples/LuaxTest/main.cpp')
-rw-r--r--Source/Samples/LuaxTest/main.cpp33
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}
};