1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-20 14:20:06 +02:00

Remove some naked new amd delete in: overrides of CommandType::BuildSignature

This commit is contained in:
Paul Licameli 2016-08-07 14:51:39 -04:00
parent 473e955da3
commit c3e53ea26e
18 changed files with 79 additions and 84 deletions

View File

@ -22,12 +22,12 @@ wxString BatchEvalCommandType::BuildName()
void BatchEvalCommandType::BuildSignature(CommandSignature &signature) void BatchEvalCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *commandNameValidator(new DefaultValidator()); auto commandNameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator); signature.AddParameter(wxT("CommandName"), wxT(""), std::move(commandNameValidator));
Validator *paramValidator(new DefaultValidator()); auto paramValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("ParamString"), wxT(""), paramValidator); signature.AddParameter(wxT("ParamString"), wxT(""), std::move(paramValidator));
Validator *chainValidator(new DefaultValidator()); auto chainValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("ChainName"), wxT(""), chainValidator); signature.AddParameter(wxT("ChainName"), wxT(""), std::move(chainValidator));
} }
CommandHolder BatchEvalCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder BatchEvalCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -26,7 +26,8 @@ class CommandType;
typedef std::map<wxString, wxVariant> ParamValueMap; typedef std::map<wxString, wxVariant> ParamValueMap;
// Map from parameter name to a suitable Validator // Map from parameter name to a suitable Validator
typedef std::map<wxString, Validator *> ValidatorMap; // to do: use hash
typedef std::map<wxString, movable_ptr<Validator>> ValidatorMap;
// Map from command name to type // Map from command name to type
typedef std::map<wxString, CommandType*> CommandMap; typedef std::map<wxString, CommandType*> CommandMap;

View File

@ -20,17 +20,11 @@
CommandSignature::~CommandSignature() CommandSignature::~CommandSignature()
{ {
// Delete the validators
ValidatorMap::iterator iter;
for (iter = mValidators.begin(); iter != mValidators.end(); ++iter)
{
delete iter->second;
}
} }
void CommandSignature::AddParameter(const wxString &name, void CommandSignature::AddParameter(const wxString &name,
const wxVariant &dft, const wxVariant &dft,
Validator *valid) movable_ptr<Validator> &&valid)
{ {
wxASSERT_MSG(valid->Validate(dft), wxASSERT_MSG(valid->Validate(dft),
wxT("Invalid command signature: the default value of '") wxT("Invalid command signature: the default value of '")
@ -42,7 +36,7 @@ void CommandSignature::AddParameter(const wxString &name,
+ valid->GetDescription() + valid->GetDescription()
+ wxT(".")); + wxT("."));
mDefaults.insert(std::pair<wxString, wxVariant>(name, dft)); mDefaults.insert(std::pair<wxString, wxVariant>(name, dft));
mValidators.insert(std::pair<wxString, Validator*>(name, valid)); mValidators.insert(ValidatorMap::value_type(name, std::move(valid)));
} }
ParamValueMap CommandSignature::GetDefaults() const ParamValueMap CommandSignature::GetDefaults() const

View File

@ -41,7 +41,7 @@ public:
// valid: a suitable validator (caller doesn't need to DELETE it) // valid: a suitable validator (caller doesn't need to DELETE it)
void AddParameter(const wxString &name, void AddParameter(const wxString &name,
const wxVariant &dft, const wxVariant &dft,
Validator *valid); movable_ptr<Validator> &&valid);
// Methods for accessing the signature // Methods for accessing the signature
ParamValueMap GetDefaults() const; ParamValueMap GetDefaults() const;

View File

@ -29,8 +29,8 @@ wxString CompareAudioCommandType::BuildName()
void CompareAudioCommandType::BuildSignature(CommandSignature &signature) void CompareAudioCommandType::BuildSignature(CommandSignature &signature)
{ {
DoubleValidator *thresholdValidator = new DoubleValidator(); auto thresholdValidator = make_movable<DoubleValidator>();
signature.AddParameter(wxT("Threshold"), 0.0, thresholdValidator); signature.AddParameter(wxT("Threshold"), 0.0, std::move(thresholdValidator));
} }
CommandHolder CompareAudioCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder CompareAudioCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -24,8 +24,8 @@ wxString ExecMenuCommandType::BuildName()
void ExecMenuCommandType::BuildSignature(CommandSignature &signature) void ExecMenuCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *menuCommandValidator(new DefaultValidator()); auto menuCommandValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("CommandName"), wxT(""), menuCommandValidator); signature.AddParameter(wxT("CommandName"), wxT(""), std::move(menuCommandValidator));
} }
CommandHolder ExecMenuCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder ExecMenuCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -24,8 +24,8 @@ wxString GetAllMenuCommandsType::BuildName()
void GetAllMenuCommandsType::BuildSignature(CommandSignature &signature) void GetAllMenuCommandsType::BuildSignature(CommandSignature &signature)
{ {
BoolValidator *showStatusValidator = new BoolValidator(); auto showStatusValidator = make_movable<BoolValidator>();
signature.AddParameter(wxT("ShowStatus"), 0, showStatusValidator); signature.AddParameter(wxT("ShowStatus"), 0, std::move(showStatusValidator));
} }
CommandHolder GetAllMenuCommandsType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder GetAllMenuCommandsType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -28,7 +28,7 @@ wxString GetProjectInfoCommandType::BuildName()
void GetProjectInfoCommandType::BuildSignature(CommandSignature &signature) void GetProjectInfoCommandType::BuildSignature(CommandSignature &signature)
{ {
OptionValidator *infoTypeValidator = new OptionValidator(); auto infoTypeValidator = make_movable<OptionValidator>();
infoTypeValidator->AddOption(wxT("Name")); infoTypeValidator->AddOption(wxT("Name"));
infoTypeValidator->AddOption(wxT("NumberOfTracks")); infoTypeValidator->AddOption(wxT("NumberOfTracks"));
infoTypeValidator->AddOption(wxT("SelectedTracks")); infoTypeValidator->AddOption(wxT("SelectedTracks"));
@ -36,7 +36,7 @@ void GetProjectInfoCommandType::BuildSignature(CommandSignature &signature)
infoTypeValidator->AddOption(wxT("SoloTracks")); infoTypeValidator->AddOption(wxT("SoloTracks"));
infoTypeValidator->AddOption(wxT("FocusedTrackID")); // returns the Track ID number of the track in focus infoTypeValidator->AddOption(wxT("FocusedTrackID")); // returns the Track ID number of the track in focus
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator); signature.AddParameter(wxT("Type"), wxT("Name"), std::move(infoTypeValidator));
} }
CommandHolder GetProjectInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder GetProjectInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -28,10 +28,10 @@ wxString GetTrackInfoCommandType::BuildName()
void GetTrackInfoCommandType::BuildSignature(CommandSignature &signature) void GetTrackInfoCommandType::BuildSignature(CommandSignature &signature)
{ {
IntValidator *trackIndexValidator = new IntValidator(); auto trackIndexValidator = make_movable<IntValidator>();
signature.AddParameter(wxT("TrackIndex"), 0, trackIndexValidator); signature.AddParameter(wxT("TrackIndex"), 0, std::move(trackIndexValidator));
OptionValidator *infoTypeValidator = new OptionValidator(); auto infoTypeValidator = make_movable<OptionValidator>();
infoTypeValidator->AddOption(wxT("Name")); infoTypeValidator->AddOption(wxT("Name"));
infoTypeValidator->AddOption(wxT("StartTime")); infoTypeValidator->AddOption(wxT("StartTime"));
infoTypeValidator->AddOption(wxT("EndTime")); infoTypeValidator->AddOption(wxT("EndTime"));
@ -43,7 +43,7 @@ void GetTrackInfoCommandType::BuildSignature(CommandSignature &signature)
infoTypeValidator->AddOption(wxT("Mute")); infoTypeValidator->AddOption(wxT("Mute"));
infoTypeValidator->AddOption(wxT("Focused")); infoTypeValidator->AddOption(wxT("Focused"));
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator); signature.AddParameter(wxT("Type"), wxT("Name"), std::move(infoTypeValidator));
} }
CommandHolder GetTrackInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder GetTrackInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -25,8 +25,8 @@ wxString HelpCommandType::BuildName()
void HelpCommandType::BuildSignature(CommandSignature &signature) void HelpCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *commandNameValidator = new DefaultValidator(); auto commandNameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator); signature.AddParameter(wxT("CommandName"), wxT(""), std::move(commandNameValidator));
} }
CommandHolder HelpCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder HelpCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -27,8 +27,8 @@ wxString ImportCommandType::BuildName()
void ImportCommandType::BuildSignature(CommandSignature &signature) void ImportCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *filenameValidator(new DefaultValidator()); auto filenameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator); signature.AddParameter(wxT("Filename"), wxT(""), std::move(filenameValidator));
} }
CommandHolder ImportCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder ImportCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)
@ -54,16 +54,16 @@ wxString ExportCommandType::BuildName()
void ExportCommandType::BuildSignature(CommandSignature &signature) void ExportCommandType::BuildSignature(CommandSignature &signature)
{ {
OptionValidator *modeValidator(new OptionValidator()); auto modeValidator = make_movable<OptionValidator>();
modeValidator->AddOption(wxT("All")); modeValidator->AddOption(wxT("All"));
modeValidator->AddOption(wxT("Selection")); modeValidator->AddOption(wxT("Selection"));
signature.AddParameter(wxT("Mode"), wxT("All"), modeValidator); signature.AddParameter(wxT("Mode"), wxT("All"), std::move(modeValidator));
Validator *filenameValidator(new DefaultValidator()); auto filenameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("Filename"), wxT("exported.wav"), filenameValidator); signature.AddParameter(wxT("Filename"), wxT("exported.wav"), std::move(filenameValidator));
IntValidator *channelsValidator(new IntValidator()); auto channelsValidator = make_movable<IntValidator>();
signature.AddParameter(wxT("Channels"), 1, channelsValidator); signature.AddParameter(wxT("Channels"), 1, std::move(channelsValidator));
} }
CommandHolder ExportCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder ExportCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -23,8 +23,8 @@ wxString MessageCommandType::BuildName()
void MessageCommandType::BuildSignature(CommandSignature &signature) void MessageCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *stringValidator = new DefaultValidator(); auto stringValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("MessageString"), wxT(""), stringValidator); signature.AddParameter(wxT("MessageString"), wxT(""), std::move(stringValidator));
} }
CommandHolder MessageCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder MessageCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -26,10 +26,10 @@ wxString OpenProjectCommandType::BuildName()
void OpenProjectCommandType::BuildSignature(CommandSignature &signature) void OpenProjectCommandType::BuildSignature(CommandSignature &signature)
{ {
BoolValidator *addToHistoryValidator(new BoolValidator()); auto addToHistoryValidator = make_movable<BoolValidator>();
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator); signature.AddParameter(wxT("AddToHistory"), true, std::move(addToHistoryValidator));
Validator *filenameValidator(new DefaultValidator()); auto filenameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator); signature.AddParameter(wxT("Filename"), wxT(""), std::move(filenameValidator));
} }
CommandHolder OpenProjectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder OpenProjectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)
@ -70,14 +70,14 @@ wxString SaveProjectCommandType::BuildName()
void SaveProjectCommandType::BuildSignature(CommandSignature &signature) void SaveProjectCommandType::BuildSignature(CommandSignature &signature)
{ {
BoolValidator *saveCompressedValidator(new BoolValidator()); auto saveCompressedValidator = make_movable<BoolValidator>();
BoolValidator *addToHistoryValidator(new BoolValidator()); auto addToHistoryValidator = make_movable<BoolValidator>();
signature.AddParameter(wxT("Compress"), false, saveCompressedValidator); signature.AddParameter(wxT("Compress"), false, std::move(saveCompressedValidator));
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator); signature.AddParameter(wxT("AddToHistory"), true, std::move(addToHistoryValidator));
Validator *filenameValidator(new DefaultValidator()); auto filenameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator); signature.AddParameter(wxT("Filename"), wxT(""), std::move(filenameValidator));
} }
CommandHolder SaveProjectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder SaveProjectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -26,8 +26,8 @@ wxString GetPreferenceCommandType::BuildName()
void GetPreferenceCommandType::BuildSignature(CommandSignature &signature) void GetPreferenceCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *prefNameValidator(new DefaultValidator()); auto prefNameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator); signature.AddParameter(wxT("PrefName"), wxT(""), std::move(prefNameValidator));
} }
CommandHolder GetPreferenceCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder GetPreferenceCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)
@ -59,10 +59,10 @@ wxString SetPreferenceCommandType::BuildName()
void SetPreferenceCommandType::BuildSignature(CommandSignature &signature) void SetPreferenceCommandType::BuildSignature(CommandSignature &signature)
{ {
Validator *prefNameValidator(new DefaultValidator()); auto prefNameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator); signature.AddParameter(wxT("PrefName"), wxT(""), std::move(prefNameValidator));
Validator *prefValueValidator(new DefaultValidator()); auto prefValueValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("PrefValue"), wxT(""), prefValueValidator); signature.AddParameter(wxT("PrefValue"), wxT(""), std::move(prefValueValidator));
} }
CommandHolder SetPreferenceCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder SetPreferenceCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -274,7 +274,7 @@ wxString ScreenshotCommandType::BuildName()
void ScreenshotCommandType::BuildSignature(CommandSignature &signature) void ScreenshotCommandType::BuildSignature(CommandSignature &signature)
{ {
OptionValidator *captureModeValidator = new OptionValidator(); auto captureModeValidator = make_movable<OptionValidator>();
captureModeValidator->AddOption(wxT("window")); captureModeValidator->AddOption(wxT("window"));
captureModeValidator->AddOption(wxT("fullwindow")); captureModeValidator->AddOption(wxT("fullwindow"));
captureModeValidator->AddOption(wxT("windowplus")); captureModeValidator->AddOption(wxT("windowplus"));
@ -294,20 +294,20 @@ void ScreenshotCommandType::BuildSignature(CommandSignature &signature)
captureModeValidator->AddOption(wxT("firsttrack")); captureModeValidator->AddOption(wxT("firsttrack"));
captureModeValidator->AddOption(wxT("secondtrack")); captureModeValidator->AddOption(wxT("secondtrack"));
OptionValidator *backgroundValidator = new OptionValidator(); auto backgroundValidator = make_movable<OptionValidator>();
backgroundValidator->AddOption(wxT("Blue")); backgroundValidator->AddOption(wxT("Blue"));
backgroundValidator->AddOption(wxT("White")); backgroundValidator->AddOption(wxT("White"));
backgroundValidator->AddOption(wxT("None")); backgroundValidator->AddOption(wxT("None"));
Validator *filePathValidator = new DefaultValidator(); auto filePathValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("CaptureMode"), signature.AddParameter(wxT("CaptureMode"),
wxT("fullscreen"), wxT("fullscreen"),
captureModeValidator); std::move(captureModeValidator));
signature.AddParameter(wxT("Background"), signature.AddParameter(wxT("Background"),
wxT("None"), wxT("None"),
backgroundValidator); std::move(backgroundValidator));
signature.AddParameter(wxT("FilePath"), wxT(""), filePathValidator); signature.AddParameter(wxT("FilePath"), wxT(""), std::move(filePathValidator));
} }
CommandHolder ScreenshotCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder ScreenshotCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -29,25 +29,25 @@ wxString SelectCommandType::BuildName()
void SelectCommandType::BuildSignature(CommandSignature &signature) void SelectCommandType::BuildSignature(CommandSignature &signature)
{ {
OptionValidator *modeValidator = new OptionValidator(); auto modeValidator = make_movable<OptionValidator>();
modeValidator->AddOption(wxT("None")); modeValidator->AddOption(wxT("None"));
modeValidator->AddOption(wxT("All")); modeValidator->AddOption(wxT("All"));
modeValidator->AddOption(wxT("Range")); modeValidator->AddOption(wxT("Range"));
modeValidator->AddOption(wxT("Name")); modeValidator->AddOption(wxT("Name"));
signature.AddParameter(wxT("Mode"), wxT("All"), modeValidator); signature.AddParameter(wxT("Mode"), wxT("All"), std::move(modeValidator));
DoubleValidator *startTimeValidator = new DoubleValidator(); auto startTimeValidator = make_movable<DoubleValidator>();
signature.AddParameter(wxT("StartTime"), 0.0, startTimeValidator); signature.AddParameter(wxT("StartTime"), 0.0, std::move(startTimeValidator));
DoubleValidator *endTimeValidator = new DoubleValidator(); auto endTimeValidator = make_movable<DoubleValidator>();
signature.AddParameter(wxT("EndTime"), 0.0, endTimeValidator); signature.AddParameter(wxT("EndTime"), 0.0, std::move(endTimeValidator));
IntValidator *firstTrackValidator = new IntValidator();
signature.AddParameter(wxT("FirstTrack"), 0, firstTrackValidator); auto firstTrackValidator = make_movable<IntValidator>();
IntValidator *lastTrackValidator = new IntValidator(); signature.AddParameter(wxT("FirstTrack"), 0, std::move(firstTrackValidator));
signature.AddParameter(wxT("LastTrack"), 0, lastTrackValidator); auto lastTrackValidator = make_movable<IntValidator>();
signature.AddParameter(wxT("LastTrack"), 0, std::move(lastTrackValidator));
Validator *trackNameValidator = new DefaultValidator(); auto trackNameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("TrackName"), 0, trackNameValidator); signature.AddParameter(wxT("TrackName"), 0, std::move(trackNameValidator));
} }
CommandHolder SelectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder SelectCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -30,15 +30,15 @@ wxString SetProjectInfoCommandType::BuildName()
void SetProjectInfoCommandType::BuildSignature(CommandSignature &signature) void SetProjectInfoCommandType::BuildSignature(CommandSignature &signature)
{ {
OptionValidator *infoTypeValidator = new OptionValidator(); auto infoTypeValidator = make_movable<OptionValidator>();
infoTypeValidator->AddOption(wxT("SelectedTracks")); infoTypeValidator->AddOption(wxT("SelectedTracks"));
infoTypeValidator->AddOption(wxT("MuteTracks")); infoTypeValidator->AddOption(wxT("MuteTracks"));
infoTypeValidator->AddOption(wxT("SoloTracks")); infoTypeValidator->AddOption(wxT("SoloTracks"));
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator); signature.AddParameter(wxT("Type"), wxT("Name"), std::move(infoTypeValidator));
BoolArrayValidator *TracksSetValidator = new BoolArrayValidator(); auto TracksSetValidator = make_movable<BoolArrayValidator>();
signature.AddParameter(wxT(kSetOfTracksStr), wxT("x"), TracksSetValidator); signature.AddParameter(wxT(kSetOfTracksStr), wxT("x"), std::move(TracksSetValidator));
} }
CommandHolder SetProjectInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder SetProjectInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)

View File

@ -27,14 +27,14 @@ wxString SetTrackInfoCommandType::BuildName()
void SetTrackInfoCommandType::BuildSignature(CommandSignature &signature) void SetTrackInfoCommandType::BuildSignature(CommandSignature &signature)
{ {
IntValidator *trackIndexValidator = new IntValidator(); auto trackIndexValidator = make_movable<IntValidator>();
signature.AddParameter(wxT("TrackIndex"), 0, trackIndexValidator); signature.AddParameter(wxT("TrackIndex"), 0, std::move(trackIndexValidator));
OptionValidator *infoTypeValidator = new OptionValidator(); auto infoTypeValidator = make_movable<OptionValidator>();
infoTypeValidator->AddOption(wxT("Name")); infoTypeValidator->AddOption(wxT("Name"));
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator); signature.AddParameter(wxT("Type"), wxT("Name"), std::move(infoTypeValidator));
Validator *nameValidator = new DefaultValidator(); auto nameValidator = make_movable<DefaultValidator>();
signature.AddParameter(wxT("Name"), wxT("Unnamed"), nameValidator); signature.AddParameter(wxT("Name"), wxT("Unnamed"), std::move(nameValidator));
} }
CommandHolder SetTrackInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target) CommandHolder SetTrackInfoCommandType::Create(std::unique_ptr<CommandOutputTarget> &&target)