From 370abf7ab3673d243ba57b744c7e7275e7940ef7 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 25 May 2024 17:46:29 +0200 Subject: [PATCH] Enum to variant binding: needs to use enum class, not EnumWrapper The effect of this fix is that tl::Variant gets enabled for enums declared with gsi::Enum. --- src/gsi/gsi/gsiClass.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gsi/gsi/gsiClass.h b/src/gsi/gsi/gsiClass.h index a1cf18587..ec29c7ecf 100644 --- a/src/gsi/gsi/gsiClass.h +++ b/src/gsi/gsi/gsiClass.h @@ -445,7 +445,9 @@ struct NoAdaptorTag { }; template struct adaptor_type_info { - static const std::type_info *type_info () + typedef Adapted final_type; + + static const std::type_info *type_info () { return &typeid (Adapted); } @@ -476,6 +478,8 @@ struct adaptor_type_info template struct adaptor_type_info { + typedef X final_type; + static const std::type_info *type_info () { return 0; @@ -517,6 +521,8 @@ class GSI_PUBLIC_TEMPLATE Class : public ClassBase { public: + typedef typename adaptor_type_info::final_type final_type; + Class (const std::string &module, const std::string &name, const Methods &mm, const std::string &doc = std::string (), bool do_register = true) : ClassBase (doc, mm, do_register) { @@ -681,9 +687,9 @@ public: } private: - gsi::VariantUserClass m_var_cls; - gsi::VariantUserClass m_var_cls_c; - gsi::VariantUserClass m_var_cls_cls; + gsi::VariantUserClass m_var_cls; + gsi::VariantUserClass m_var_cls_c; + gsi::VariantUserClass m_var_cls_cls; std::unique_ptr m_subclass_tester; };