From 649001b696dc49487cc057556f670fcc29fe8846 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 27 Nov 2016 14:07:18 +0100 Subject: [PATCH] Lua/LuaInstance: Fix LuaImplQueryArg for flags enums --- include/Nazara/Lua/LuaInstance.inl | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Lua/LuaInstance.inl b/include/Nazara/Lua/LuaInstance.inl index db5c1e225..d91532965 100644 --- a/include/Nazara/Lua/LuaInstance.inl +++ b/include/Nazara/Lua/LuaInstance.inl @@ -116,15 +116,25 @@ namespace Nz template std::enable_if_t::value && EnableFlagsOperators::value, unsigned int> LuaImplQueryArg(const LuaInstance& instance, int index, T* arg, TypeTag) { - Flags flags; - return LuaImplQueryArg(instance, index, &flags, TypeTag()); + using UnderlyingT = std::underlying_type_t; + + UnderlyingT pot2Val; + unsigned int ret = LuaImplQueryArg(instance, index, &pot2Val, TypeTag()); + + *arg = static_cast(IntegralLog2Pot(pot2Val)); + return 1; } template std::enable_if_t::value && EnableFlagsOperators::value, unsigned int> LuaImplQueryArg(const LuaInstance& instance, int index, T* arg, T defValue, TypeTag) { - Flags flags; - return LuaImplQueryArg(instance, index, &flags, Flags(defValue), TypeTag()); + using UnderlyingT = std::underlying_type_t; + + UnderlyingT pot2Val; + unsigned int ret = LuaImplQueryArg(instance, index, &pot2Val, 1U << static_cast(defValue), TypeTag()); + + *arg = static_cast(IntegralLog2Pot(pot2Val)); + return 1; } template