summaryrefslogtreecommitdiff
path: root/Source/3rdParty/Luax/luax_enum.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-14 23:12:54 +0800
committerchai <chaifix@163.com>2019-03-14 23:12:54 +0800
commit8644e03586ac9c39741f62cbcbce87b18805538c (patch)
tree72021765f5262b7f2f7eebe299fd4e1aaa7c89b7 /Source/3rdParty/Luax/luax_enum.cpp
parent8d8c4ff1664625e7428d0d31cd798d9321680cb2 (diff)
*大小写
Diffstat (limited to 'Source/3rdParty/Luax/luax_enum.cpp')
-rw-r--r--Source/3rdParty/Luax/luax_enum.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/Source/3rdParty/Luax/luax_enum.cpp b/Source/3rdParty/Luax/luax_enum.cpp
new file mode 100644
index 0000000..1ccc900
--- /dev/null
+++ b/Source/3rdParty/Luax/luax_enum.cpp
@@ -0,0 +1,37 @@
+#include "luax_enum.h"
+#include "luax_state.h"
+#include "luax_runtime.h"
+
+namespace Luax
+{
+
+ ///
+ /// ֻmetatable__index
+ ///
+ int l_rmt__index(lua_State* L)
+ {
+ // params:
+ // 1. enum table
+ // 2. key
+
+ // upvalues:
+ // 1. metatable
+
+ int mt = lua_upvalueindex(1);
+ lua_pushvalue(L, 2);
+ lua_rawget(L, mt);
+
+ return 1;
+ }
+
+ int l_rmt__newindex(lua_State* L)
+ {
+ // upvalue:
+ // 1. enum table name
+
+ cc8* name = lua_tostring(L, lua_upvalueindex(1));
+
+ return luaL_error(L, "Enum called \"%s\" is readonly.", name);
+ }
+
+} \ No newline at end of file