LuaInterface.ObjectTranslator.enumFromInt C# (CSharp) Method

enumFromInt() private method

private enumFromInt ( IntPtr luaState ) : int
luaState System.IntPtr
return int
        private int enumFromInt(IntPtr luaState)
        {
            Type t = typeOf(luaState,1);
            if (t == null || ! t.IsEnum) {
                return pushError(luaState,"not an enum");
            }
            object res = null;
            LuaTypes lt = LuaDLL.lua_type(luaState,2);
            if (lt == LuaTypes.LUA_TNUMBER) {
                int ival = (int)LuaDLL.lua_tonumber(luaState,2);
                res = Enum.ToObject(t,ival);
            } else
            if (lt == LuaTypes.LUA_TSTRING) {
                string sflags = LuaDLL.lua_tostring(luaState,2);
                string err = null;
                try {
                    res = Enum.Parse(t,sflags);
                } catch (ArgumentException e) {
                    err = e.Message;
                }
                if (err != null) {
                    return pushError(luaState,err);
                }
            } else {
                return pushError(luaState,"second argument must be a integer or a string");
            }
            pushObject(luaState,res,"luaNet_metatable");
            return 1;
        }