Files
UnrealEngineUWP/Engine/Source/Developer/SourceControl/Public/SourceControlInitSettings.h
paul chipchase 4cf57d2d1e Extend FSourceControlInitSettings to allow the caller to control if a provider uses values parsed from the commandline or not when initializing.
#rb Juan.Legaz
#jira UE-212182
#rnx

- We default to the old behavior, so that the default way of creating a source control provider (no FSourceControlInitSettings) will read all of the commandline parameters available and the newer way (creating a provider with a FSourceControlInitSettings) will ignore the commandline.

[CL 33001499 by paul chipchase in ue5-main branch]
2024-04-16 11:05:04 -04:00

66 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Map.h"
#include "Containers/StringFwd.h"
#include "Containers/UnrealString.h"
class FString;
class SOURCECONTROL_API FSourceControlInitSettings
{
public:
enum class EBehavior
{
/** All existing settings will be overridden via the contents of FSourceControlInitSettings. Settings that are not found will be reset to default states */
OverrideAll,
/** Only the settings found in FSourceControlInitSettings will be overridden. Settings not found will be left with their current values. */
OverrideExisting,
};
enum class ECmdLineFlags : uint8
{
/** Do not read any settings from the commandline */
None,
/** Read all available settings from the commandline */
ReadAll
};
enum class EConfigBehavior : uint8
{
/** Can both read from, and save to the ini file*/
ReadWrite,
/** Will only read settings from the ini file, settings determined at runtime will not be saved to the ini file */
ReadOnly,
/** The settings will not be saved to the ini file, nor will they be read from the ini file */
None
};
FSourceControlInitSettings(EBehavior Behavior);
FSourceControlInitSettings(EBehavior Behavior, ECmdLineFlags CmdLineFlags);
~FSourceControlInitSettings() = default;
void SetConfigBehavior(EConfigBehavior Behavior);
bool CanWriteToConfigFile() const;
bool CanReadFromConfigFile() const;
void AddSetting(FStringView SettingName, FStringView SettingValue);
void OverrideSetting(FStringView SettingName, FString& InOutSettingValue);
bool HasOverrides() const;
bool IsOverridden(FStringView SettingName) const;
void SetCmdLineFlags(ECmdLineFlags Flags);
bool ShouldReadFromCmdLine() const;
private:
EBehavior OverrideBehavior = EBehavior::OverrideAll;
ECmdLineFlags CmdLineFlags = ECmdLineFlags::None;
EConfigBehavior ConfigBehavior = EConfigBehavior::ReadWrite;
TMap<FString, FString> Settings;
};