summaryrefslogtreecommitdiff
path: root/Source/3rdParty/Luax/luax_enum.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-17 11:41:14 +0800
committerchai <chaifix@163.com>2019-03-17 11:41:14 +0800
commit5a9bbd481f94119488d845f5b8272734dfda82cc (patch)
tree15a340153d6a32fcaeee840906685519aaa59a46 /Source/3rdParty/Luax/luax_enum.cpp
parentad2805aa839892589c13a615730da52f6e474709 (diff)
*enum
Diffstat (limited to 'Source/3rdParty/Luax/luax_enum.cpp')
-rw-r--r--Source/3rdParty/Luax/luax_enum.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/Source/3rdParty/Luax/luax_enum.cpp b/Source/3rdParty/Luax/luax_enum.cpp
index a58593a..af832d1 100644
--- a/Source/3rdParty/Luax/luax_enum.cpp
+++ b/Source/3rdParty/Luax/luax_enum.cpp
@@ -34,4 +34,34 @@ namespace Luax
return luaL_error(L, "Enum called \"%s\" is readonly.", name);
}
+ //--------------------------------------------------------------------------------------------------------------
+
+ int LuaxPlainEnum::registry(lua_State* L)
+ {
+ // params:
+ // 1: enum name
+ // 2: metatable
+
+ cc8* name = luaL_checkstring(L, 1);
+
+ if (!lua_istable(L, 2))
+ {
+ return luaL_error(L, "Create plain enum failed. Require table, but get %s", luaL_typename(L, 2));
+ }
+
+ lua_pushvalue(L, -1);
+ lua_setfield(L, -2, "__index");
+
+ lua_pushstring(L, name);
+ lua_pushcclosure(L, l_rmt__newindex, 1);
+ lua_setfield(L, -2, "__newindex");
+
+ lua_newtable(L); // enum table
+
+ lua_pushvalue(L, -2); // metatable
+ lua_setmetatable(L, -2);
+
+ return 1;
+ }
+
} \ No newline at end of file