@@ -612,36 +612,76 @@ bool ArgsManager::IsArgNegated(const std::string& strArg) const
612
612
}
613
613
614
614
std::string ArgsManager::GetArg (const std::string& strArg, const std::string& strDefault) const
615
+ {
616
+ return GetArg (strArg).value_or (strDefault);
617
+ }
618
+
619
+ std::optional<std::string> ArgsManager::GetArg (const std::string& strArg) const
615
620
{
616
621
const util::SettingsValue value = GetSetting (strArg);
617
- return SettingToString (value, strDefault);
622
+ return SettingToString (value);
623
+ }
624
+
625
+ std::optional<std::string> SettingToString (const util::SettingsValue& value)
626
+ {
627
+ if (value.isNull ()) return std::nullopt;
628
+ if (value.isFalse ()) return " 0" ;
629
+ if (value.isTrue ()) return " 1" ;
630
+ if (value.isNum ()) return value.getValStr ();
631
+ return value.get_str ();
618
632
}
619
633
620
634
std::string SettingToString (const util::SettingsValue& value, const std::string& strDefault)
621
635
{
622
- return value. isNull () ? strDefault : value. isFalse () ? " 0 " : value. isTrue () ? " 1 " : value. isNum () ? value. getValStr () : value. get_str ( );
636
+ return SettingToString ( value). value_or (strDefault );
623
637
}
624
638
625
639
int64_t ArgsManager::GetIntArg (const std::string& strArg, int64_t nDefault) const
640
+ {
641
+ return GetIntArg (strArg).value_or (nDefault);
642
+ }
643
+
644
+ std::optional<int64_t > ArgsManager::GetIntArg (const std::string& strArg) const
626
645
{
627
646
const util::SettingsValue value = GetSetting (strArg);
628
- return SettingToInt (value, nDefault);
647
+ return SettingToInt (value);
648
+ }
649
+
650
+ std::optional<int64_t > SettingToInt (const util::SettingsValue& value)
651
+ {
652
+ if (value.isNull ()) return std::nullopt;
653
+ if (value.isFalse ()) return 0 ;
654
+ if (value.isTrue ()) return 1 ;
655
+ if (value.isNum ()) return value.getInt <int64_t >();
656
+ return LocaleIndependentAtoi<int64_t >(value.get_str ());
629
657
}
630
658
631
659
int64_t SettingToInt (const util::SettingsValue& value, int64_t nDefault)
632
660
{
633
- return value. isNull () ? nDefault : value. isFalse () ? 0 : value. isTrue () ? 1 : value. isNum () ? value. getInt < int64_t >() : LocaleIndependentAtoi< int64_t >(value. get_str () );
661
+ return SettingToInt ( value). value_or (nDefault );
634
662
}
635
663
636
664
bool ArgsManager::GetBoolArg (const std::string& strArg, bool fDefault ) const
665
+ {
666
+ return GetBoolArg (strArg).value_or (fDefault );
667
+ }
668
+
669
+ std::optional<bool > ArgsManager::GetBoolArg (const std::string& strArg) const
637
670
{
638
671
const util::SettingsValue value = GetSetting (strArg);
639
- return SettingToBool (value, fDefault );
672
+ return SettingToBool (value);
673
+ }
674
+
675
+ std::optional<bool > SettingToBool (const util::SettingsValue& value)
676
+ {
677
+ if (value.isNull ()) return std::nullopt;
678
+ if (value.isBool ()) return value.get_bool ();
679
+ return InterpretBool (value.get_str ());
640
680
}
641
681
642
682
bool SettingToBool (const util::SettingsValue& value, bool fDefault )
643
683
{
644
- return value. isNull () ? fDefault : value. isBool () ? value. get_bool () : InterpretBool (value. get_str () );
684
+ return SettingToBool ( value). value_or ( fDefault );
645
685
}
646
686
647
687
bool ArgsManager::SoftSetArg (const std::string& strArg, const std::string& strValue)
0 commit comments