summaryrefslogtreecommitdiff
path: root/Source/Samples/LuaxTest
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Samples/LuaxTest')
-rw-r--r--Source/Samples/LuaxTest/main.cpp31
-rw-r--r--Source/Samples/LuaxTest/script.lua19
2 files changed, 30 insertions, 20 deletions
diff --git a/Source/Samples/LuaxTest/main.cpp b/Source/Samples/LuaxTest/main.cpp
index d9bd315..65cdaa1 100644
--- a/Source/Samples/LuaxTest/main.cpp
+++ b/Source/Samples/LuaxTest/main.cpp
@@ -16,7 +16,9 @@ using namespace Luax;
//----------------------------------------------------------------------------------------------------------------
-class School : Singleton<School>
+class School
+ : public Singleton<School>
+ , public LuaxClass<School>
{
public:
@@ -153,13 +155,16 @@ int Boy::l_Write(lua_State* L)
void Boy::RegisterLuaxClass(LuaxState& state)
{
- state.SetField(-1, "Class", 101); // 101
- state.SetField(-1, "Gender", "Male"); // 101
-
luaL_Reg regTable[] = {
+ // class functions
{ "New", l_New },
{ "GetGender", l_GetGender },
- {NULL, NULL}
+ // members
+ { "GetAge", l_GetAge },
+ { "GetName", l_GetName },
+ { "Write", l_Write },
+ { "Speak", l_Speak },
+ { 0, 0}
};
state.RegisterMethods(regTable);
@@ -176,19 +181,6 @@ void Boy::RegisterLuaxClass(LuaxState& state)
state.RegisterEnum("EHabits", EHabits);
}
-void Boy::RegisterLuaxInterface(LuaxState& state)
-{
- luaL_Reg regTable[] = {
- { "GetAge", l_GetAge },
- { "GetName", l_GetName },
- { "Write", l_Write },
- { "Speak", l_Speak },
- {NULL, NULL}
- };
-
- state.RegisterMethods(regTable);
-}
-
void Boy::RegisterLuaxPostprocess(LuaxState& state)
{
// boyİ
@@ -231,7 +223,8 @@ int main()
state.OpenLibs();
state.PushGlobalNamespace();
state.PushNamespace("Asura");
-
+ state.RegisterPlainClassRegistry("Class"); // Asura.Class("Foo")
+ state.RegisterPlainEnumRegistry("Enum"); // Asura.Enum("EFoo", { ... });
//עenum
LuaxEnum EGender[] = {
{ "BOY", 7 },
diff --git a/Source/Samples/LuaxTest/script.lua b/Source/Samples/LuaxTest/script.lua
index 32bd8e8..97890c0 100644
--- a/Source/Samples/LuaxTest/script.lua
+++ b/Source/Samples/LuaxTest/script.lua
@@ -63,7 +63,24 @@ function main()
return "kid:Write() 2"
end )
print(kid:Speak())
-
+
+------------------- plain class test
+ local Foo = Asura.Class("Foo")
+ Foo.Ctor = function(self, age, name, boy)
+ self.age = age
+ self.name = boy:GetName()
+ self.boy = boy
+ end
+ Foo.GetAge = function(self)
+ return self.age
+ end
+ Foo.GetName = function(self)
+ return self.name
+ end
+ local foo = Foo.New(10, "lee", kid)
+ print(foo:GetName())
+ print(Foo.GetClassName())
+ print(foo.boy:GetAge())
end
function err(msg)
print(msg)