77
88#define BOOL_CONFIG (name, unused_private_key, unused_public_key, default, unused_doc ) \
99 bool GCConfig::Get##name() { return s_##name; } \
10+ bool GCConfig::Get##name(bool defaultValue) \
11+ { \
12+ return s_##name##Provided ? s_##name : defaultValue; \
13+ } \
1014 void GCConfig::Set##name(bool value) { s_Updated##name = value; } \
1115 bool GCConfig::s_##name = default ; \
16+ bool GCConfig::s_##name##Provided = false ; \
1217 bool GCConfig::s_Updated##name = default ;
1318
1419#define INT_CONFIG (name, unused_private_key, unused_public_key, default, unused_doc ) \
1520 int64_t GCConfig::Get##name() { return s_##name; } \
16- void GCConfig::Set##name(int64_t value) { s_Updated##name = value; } \
21+ void GCConfig::Set##name(int64_t value) { s_Updated##name = value; } \
1722 int64_t GCConfig::s_##name = default ; \
1823 int64_t GCConfig::s_Updated##name = default ;
1924
@@ -36,7 +41,7 @@ GC_CONFIGURATION_KEYS
3641
3742void GCConfig::EnumerateConfigurationValues (void * context, ConfigurationValueFunc configurationValueFunc)
3843{
39- #define INT_CONFIG (name, unused_private_key, public_key, default , unused_doc ) \
44+ #define INT_CONFIG (name, unused_private_key, public_key, unused_default , unused_doc ) \
4045 configurationValueFunc (context, (void *)(#name), (void *)(public_key), GCConfigurationType::Int64, static_cast <int64_t >(s_Updated##name));
4146
4247#define STRING_CONFIG (name, private_key, public_key, unused_doc ) \
@@ -47,7 +52,7 @@ void GCConfig::EnumerateConfigurationValues(void* context, ConfigurationValueFun
4752 configurationValueFunc (context, (void *)(#name), (void *)(public_key), GCConfigurationType::StringUtf8, reinterpret_cast <int64_t >(resultStr)); \
4853 }
4954
50- #define BOOL_CONFIG (name, unused_private_key, public_key, default , unused_doc ) \
55+ #define BOOL_CONFIG (name, unused_private_key, public_key, unused_default , unused_doc ) \
5156 configurationValueFunc (context, (void *)(#name), (void *)(public_key), GCConfigurationType::Boolean, static_cast <int64_t >(s_Updated##name));
5257
5358GC_CONFIGURATION_KEYS
@@ -59,10 +64,10 @@ GC_CONFIGURATION_KEYS
5964
6065void GCConfig::Initialize ()
6166{
62- #define BOOL_CONFIG (name, private_key, public_key, default , unused_doc ) \
63- GCToEEInterface::GetBooleanConfigValue (private_key, public_key, &s_##name);
67+ #define BOOL_CONFIG (name, private_key, public_key, unused_default , unused_doc ) \
68+ s_##name##Provided = GCToEEInterface::GetBooleanConfigValue (private_key, public_key, &s_##name);
6469
65- #define INT_CONFIG (name, private_key, public_key, default , unused_doc ) \
70+ #define INT_CONFIG (name, private_key, public_key, unused_default , unused_doc ) \
6671 GCToEEInterface::GetIntConfigValue (private_key, public_key, &s_##name);
6772
6873#define STRING_CONFIG (unused_name, unused_private_key, unused_public_key, unused_doc )
0 commit comments