From 00f47a3b9fa11fc4f4b2d847167316938fbe1c0a Mon Sep 17 00:00:00 2001 From: Artur Twardy Date: Tue, 22 Oct 2024 17:36:24 +0200 Subject: [PATCH] Lua: Add sol::table to QFlags utils Change-Id: I1f2f0530efa7062946e8165a43aee0f9b9ac0e1f Reviewed-by: Marcus Tillmanns --- src/plugins/lua/bindings/utils.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/lua/bindings/utils.h b/src/plugins/lua/bindings/utils.h index b42c5f85e72..3a1233b482b 100644 --- a/src/plugins/lua/bindings/utils.h +++ b/src/plugins/lua/bindings/utils.h @@ -49,4 +49,16 @@ inline void mirrorEnum(sol::table &target, QMetaEnum metaEnum, const QString &na for (int i = 0; i < metaEnum.keyCount(); ++i) widgetAttributes.set(metaEnum.key(i), metaEnum.value(i)); }; + +template +inline QFlags tableToFlags(const sol::table &table) noexcept { + static_assert(std::is_enum::value, "Enum type required"); + + QFlags flags; + for (const auto& kv : table) + flags.setFlag(static_cast(kv.second.as())); + + return flags; +} + } // namespace Lua::Internal