@ -4,24 +4,29 @@
namespace Settings
{
Index * StaticValues : : sIndex = nullptr ;
Values * StaticValues : : sValues = nullptr ;
std : : unique_ptr < Index > StaticValues : : sIndex ;
std : : unique_ptr < Values > StaticValues : : sDefaultValues ;
std : : unique_ptr < Values > StaticValues : : sValues ;
void StaticValues : : initDefaults ( )
{
if ( sValues ! = nullptr )
throw std : : logic_error ( " Default settings already initialized " ) ;
static Index index ;
static Values values ( index ) ;
sIndex = & index ;
sValues = & values ;
if ( sDefaultValues ! = nullptr )
throw std : : logic_error ( " Default settings are already initialized " ) ;
sIndex = std : : make_unique < Index > ( ) ;
sDefaultValues = std : : make_unique < Values > ( * sIndex ) ;
}
void StaticValues : : init ( )
{
if ( s Values = = nullptr )
if ( s Default Values = = nullptr )
throw std : : logic_error ( " Default settings are not initialized " ) ;
static Values values ( std : : move ( * sValues ) ) ;
sValues = & values ;
sValues = std : : make_unique < Values > ( std : : move ( * sDefaultValues ) ) ;
}
void StaticValues : : clear ( )
{
sValues = nullptr ;
sDefaultValues = nullptr ;
sIndex = nullptr ;
}
}