@@ -75,10 +75,11 @@ struct BaseSettingsHelpers
7575 * #include <Core/BaseSettings.h>
7676 * #include <Core/BaseSettingsFwdMacrosImpl.h>
7777 *
78- * #define APPLY_FOR_MYSETTINGS(DECLARE, ALIAS ) \
78+ * #define APPLY_FOR_MYSETTINGS(DECLARE, DECLARE_WITH_ALIAS ) \
7979 * DECLARE(UInt64, a, 100, "Description of a", 0) \
8080 * DECLARE(Float, f, 3.11, "Description of f", IMPORTANT) // IMPORTANT - means the setting can't be ignored by older versions) \
8181 * DECLARE(String, s, "default", "Description of s", 0)
82+ * DECLARE_WITH_ALIAS(String, experimental, "default", "Description of s", 0, stable)
8283 *
8384 * DECLARE_SETTINGS_TRAITS(MySettingsTraits, APPLY_FOR_MYSETTINGS)
8485 * IMPLEMENT_SETTINGS_TRAITS(MySettingsTraits, APPLY_FOR_MYSETTINGS)
@@ -91,7 +92,7 @@ struct BaseSettingsHelpers
9192 *
9293 * namespace MySetting
9394 * {
94- * APPLY_FOR_MYSETTINGS(INITIALIZE_SETTING_EXTERN, SKIP_ALIAS )
95+ * APPLY_FOR_MYSETTINGS(INITIALIZE_SETTING_EXTERN, SETTING_SKIP_TRAIT )
9596 * }
9697 * #undef INITIALIZE_SETTING_EXTERN
9798 *
@@ -890,7 +891,7 @@ using AliasMap = std::unordered_map<std::string_view, std::string_view>;
890891 { \
891892 struct Data \
892893 { \
893- LIST_OF_SETTINGS_MACRO (DECLARE_SETTINGS_TRAITS_, SKIP_ALIAS ) \
894+ LIST_OF_SETTINGS_MACRO (DECLARE_SETTINGS_TRAITS_, DECLARE_SETTINGS_TRAITS_ ) \
894895 }; \
895896 \
896897 class Accessor \
@@ -942,9 +943,9 @@ using AliasMap = std::unordered_map<std::string_view, std::string_view>;
942943 }; \
943944 static constexpr bool allow_custom_settings = ALLOW_CUSTOM_SETTINGS; \
944945 \
945- static inline const AliasMap aliases_to_settings = \
946- DefineAliases () LIST_OF_SETTINGS_MACRO(ALIAS_TO, ALIAS_FROM); \
947- \
946+ static inline const AliasMap aliases_to_settings = { \
947+ LIST_OF_SETTINGS_MACRO (SETTING_SKIP_TRAIT, DECLARE_SETTINGS_WITH_ALIAS_TRAITS_) \
948+ }; \
948949 using SettingsToAliasesMap = std::unordered_map<std::string_view, std::vector<std::string_view>>; \
949950 static inline const SettingsToAliasesMap & settingsToAliases () \
950951 { \
@@ -968,36 +969,14 @@ using AliasMap = std::unordered_map<std::string_view, std::string_view>;
968969
969970
970971// / NOLINTNEXTLINE
971- #define SKIP_ALIAS (ALIAS_NAME )
972- // / NOLINTNEXTLINE
973- #define ALIAS_TO (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS ) .setName(#NAME)
974- // / NOLINTNEXTLINE
975- #define ALIAS_FROM (ALIAS ) .addAlias(#ALIAS)
976-
977- struct DefineAliases
978- {
979- std::string_view name;
980- AliasMap map;
981-
982- DefineAliases & setName (std::string_view value)
983- {
984- name = value;
985- return *this ;
986- }
987-
988- DefineAliases & addAlias (std::string_view value)
989- {
990- map.emplace (value, name);
991- return *this ;
992- }
993-
994- // / NOLINTNEXTLINE(google-explicit-constructor)
995- operator AliasMap () { return std::move (map); }
996- };
972+ #define SETTING_SKIP_TRAIT (...)
997973
998974// / NOLINTNEXTLINE
999- #define DECLARE_SETTINGS_TRAITS_ (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS ) \
975+ #define DECLARE_SETTINGS_TRAITS_ (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS, ... ) \
1000976 SettingField##TYPE NAME {DEFAULT};
977+ // / NOLINTNEXTLINE
978+ #define DECLARE_SETTINGS_WITH_ALIAS_TRAITS_ (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS, ALIAS ) \
979+ { #ALIAS, #NAME },
1001980
1002981// / NOLINTNEXTLINE
1003982#define IMPLEMENT_SETTINGS_TRAITS (SETTINGS_TRAITS_NAME, LIST_OF_SETTINGS_MACRO ) \
@@ -1008,7 +987,7 @@ struct DefineAliases
1008987 Accessor res; \
1009988 constexpr int IMPORTANT = 0x01 ; \
1010989 UNUSED (IMPORTANT); \
1011- LIST_OF_SETTINGS_MACRO (IMPLEMENT_SETTINGS_TRAITS_, SKIP_ALIAS ) \
990+ LIST_OF_SETTINGS_MACRO (IMPLEMENT_SETTINGS_TRAITS_, IMPLEMENT_SETTINGS_TRAITS_ ) \
1012991 for (size_t i = 0 ; i < res.field_infos .size (); i++) \
1013992 { \
1014993 const auto & info = res.field_infos [i]; \
@@ -1032,7 +1011,7 @@ struct DefineAliases
10321011 template class BaseSettings <SETTINGS_TRAITS_NAME>;
10331012
10341013// / NOLINTNEXTLINE
1035- #define IMPLEMENT_SETTINGS_TRAITS_ (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS ) \
1014+ #define IMPLEMENT_SETTINGS_TRAITS_ (TYPE, NAME, DEFAULT, DESCRIPTION, FLAGS, ... ) \
10361015 res.field_infos.emplace_back( \
10371016 FieldInfo{#NAME, #TYPE, DESCRIPTION, \
10381017 static_cast <UInt64>(FLAGS), \
0 commit comments