75 lines
1.8 KiB
C++
75 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "SourceControlInitSettings.h"
|
|
|
|
#include "Containers/StringView.h"
|
|
|
|
FSourceControlInitSettings::FSourceControlInitSettings(EBehavior InBehavior)
|
|
: OverrideBehavior(InBehavior)
|
|
{
|
|
|
|
}
|
|
|
|
FSourceControlInitSettings::FSourceControlInitSettings(EBehavior InBehavior, ECmdLineFlags InCmdLineFlags)
|
|
: OverrideBehavior(InBehavior)
|
|
, CmdLineFlags(InCmdLineFlags)
|
|
{
|
|
|
|
}
|
|
|
|
void FSourceControlInitSettings::SetConfigBehavior(EConfigBehavior InBehavior)
|
|
{
|
|
ConfigBehavior = InBehavior;
|
|
}
|
|
|
|
bool FSourceControlInitSettings::CanWriteToConfigFile() const
|
|
{
|
|
return ConfigBehavior == EConfigBehavior::ReadWrite;
|
|
}
|
|
|
|
bool FSourceControlInitSettings::CanReadFromConfigFile() const
|
|
{
|
|
return ConfigBehavior != EConfigBehavior::None;
|
|
}
|
|
|
|
void FSourceControlInitSettings::AddSetting(FStringView SettingName, FStringView SettingValue)
|
|
{
|
|
Settings.Add(FString(SettingName), FString(SettingValue));
|
|
}
|
|
|
|
void FSourceControlInitSettings::OverrideSetting(FStringView SettingName, FString& InOutSettingValue)
|
|
{
|
|
const int32 Hash = GetTypeHash(SettingName);
|
|
FString* InitialValue = Settings.FindByHash(Hash, SettingName);
|
|
|
|
if (InitialValue != nullptr)
|
|
{
|
|
InOutSettingValue = *InitialValue;
|
|
}
|
|
else if (OverrideBehavior == EBehavior::OverrideAll)
|
|
{
|
|
InOutSettingValue.Empty();
|
|
}
|
|
}
|
|
|
|
bool FSourceControlInitSettings::HasOverrides() const
|
|
{
|
|
return !Settings.IsEmpty();
|
|
}
|
|
|
|
bool FSourceControlInitSettings::IsOverridden(FStringView SettingName) const
|
|
{
|
|
const int32 Hash = GetTypeHash(SettingName);
|
|
return Settings.FindByHash(Hash, SettingName) != nullptr;
|
|
}
|
|
|
|
void FSourceControlInitSettings::SetCmdLineFlags(ECmdLineFlags Flags)
|
|
{
|
|
CmdLineFlags = Flags;
|
|
}
|
|
|
|
bool FSourceControlInitSettings::ShouldReadFromCmdLine() const
|
|
{
|
|
return CmdLineFlags == ECmdLineFlags::ReadAll;
|
|
}
|