mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-22 14:32:58 +02:00
Command validator cloners return smart pointers, and...
... defined DefaultValidator so Validator can be abstract, as the comment for Clone() stongly implies it should be. But this is virtual is unused except in comments.
This commit is contained in:
@@ -22,11 +22,11 @@ wxString BatchEvalCommandType::BuildName()
|
|||||||
|
|
||||||
void BatchEvalCommandType::BuildSignature(CommandSignature &signature)
|
void BatchEvalCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *commandNameValidator(new Validator());
|
Validator *commandNameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator);
|
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator);
|
||||||
Validator *paramValidator(new Validator());
|
Validator *paramValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("ParamString"), wxT(""), paramValidator);
|
signature.AddParameter(wxT("ParamString"), wxT(""), paramValidator);
|
||||||
Validator *chainValidator(new Validator());
|
Validator *chainValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("ChainName"), wxT(""), chainValidator);
|
signature.AddParameter(wxT("ChainName"), wxT(""), chainValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ wxString ExecMenuCommandType::BuildName()
|
|||||||
|
|
||||||
void ExecMenuCommandType::BuildSignature(CommandSignature &signature)
|
void ExecMenuCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *menuCommandValidator(new Validator());
|
Validator *menuCommandValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("CommandName"), wxT(""), menuCommandValidator);
|
signature.AddParameter(wxT("CommandName"), wxT(""), menuCommandValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ wxString HelpCommandType::BuildName()
|
|||||||
|
|
||||||
void HelpCommandType::BuildSignature(CommandSignature &signature)
|
void HelpCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *commandNameValidator = new Validator();
|
Validator *commandNameValidator = new DefaultValidator();
|
||||||
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator);
|
signature.AddParameter(wxT("CommandName"), wxT(""), commandNameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,7 +27,7 @@ wxString ImportCommandType::BuildName()
|
|||||||
|
|
||||||
void ImportCommandType::BuildSignature(CommandSignature &signature)
|
void ImportCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *filenameValidator(new Validator());
|
Validator *filenameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ void ExportCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
modeValidator->AddOption(wxT("Selection"));
|
modeValidator->AddOption(wxT("Selection"));
|
||||||
signature.AddParameter(wxT("Mode"), wxT("All"), modeValidator);
|
signature.AddParameter(wxT("Mode"), wxT("All"), modeValidator);
|
||||||
|
|
||||||
Validator *filenameValidator(new Validator());
|
Validator *filenameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("Filename"), wxT("exported.wav"), filenameValidator);
|
signature.AddParameter(wxT("Filename"), wxT("exported.wav"), filenameValidator);
|
||||||
|
|
||||||
IntValidator *channelsValidator(new IntValidator());
|
IntValidator *channelsValidator(new IntValidator());
|
||||||
|
@@ -23,7 +23,7 @@ wxString MessageCommandType::BuildName()
|
|||||||
|
|
||||||
void MessageCommandType::BuildSignature(CommandSignature &signature)
|
void MessageCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *stringValidator = new Validator();
|
Validator *stringValidator = new DefaultValidator();
|
||||||
signature.AddParameter(wxT("MessageString"), wxT(""), stringValidator);
|
signature.AddParameter(wxT("MessageString"), wxT(""), stringValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,7 +28,7 @@ void OpenProjectCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
{
|
{
|
||||||
BoolValidator *addToHistoryValidator(new BoolValidator());
|
BoolValidator *addToHistoryValidator(new BoolValidator());
|
||||||
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator);
|
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator);
|
||||||
Validator *filenameValidator(new Validator());
|
Validator *filenameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ void SaveProjectCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
signature.AddParameter(wxT("Compress"), false, saveCompressedValidator);
|
signature.AddParameter(wxT("Compress"), false, saveCompressedValidator);
|
||||||
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator);
|
signature.AddParameter(wxT("AddToHistory"), true, addToHistoryValidator);
|
||||||
|
|
||||||
Validator *filenameValidator(new Validator());
|
Validator *filenameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
signature.AddParameter(wxT("Filename"), wxT(""), filenameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ wxString GetPreferenceCommandType::BuildName()
|
|||||||
|
|
||||||
void GetPreferenceCommandType::BuildSignature(CommandSignature &signature)
|
void GetPreferenceCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *prefNameValidator(new Validator());
|
Validator *prefNameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator);
|
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,9 +59,9 @@ wxString SetPreferenceCommandType::BuildName()
|
|||||||
|
|
||||||
void SetPreferenceCommandType::BuildSignature(CommandSignature &signature)
|
void SetPreferenceCommandType::BuildSignature(CommandSignature &signature)
|
||||||
{
|
{
|
||||||
Validator *prefNameValidator(new Validator());
|
Validator *prefNameValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator);
|
signature.AddParameter(wxT("PrefName"), wxT(""), prefNameValidator);
|
||||||
Validator *prefValueValidator(new Validator());
|
Validator *prefValueValidator(new DefaultValidator());
|
||||||
signature.AddParameter(wxT("PrefValue"), wxT(""), prefValueValidator);
|
signature.AddParameter(wxT("PrefValue"), wxT(""), prefValueValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -295,7 +295,7 @@ void ScreenshotCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
backgroundValidator->AddOption(wxT("White"));
|
backgroundValidator->AddOption(wxT("White"));
|
||||||
backgroundValidator->AddOption(wxT("None"));
|
backgroundValidator->AddOption(wxT("None"));
|
||||||
|
|
||||||
Validator *filePathValidator = new Validator();
|
Validator *filePathValidator = new DefaultValidator();
|
||||||
|
|
||||||
signature.AddParameter(wxT("CaptureMode"),
|
signature.AddParameter(wxT("CaptureMode"),
|
||||||
wxT("fullscreen"),
|
wxT("fullscreen"),
|
||||||
|
@@ -45,7 +45,7 @@ void SelectCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
IntValidator *lastTrackValidator = new IntValidator();
|
IntValidator *lastTrackValidator = new IntValidator();
|
||||||
signature.AddParameter(wxT("LastTrack"), 0, lastTrackValidator);
|
signature.AddParameter(wxT("LastTrack"), 0, lastTrackValidator);
|
||||||
|
|
||||||
Validator *trackNameValidator = new Validator();
|
Validator *trackNameValidator = new DefaultValidator();
|
||||||
signature.AddParameter(wxT("TrackName"), 0, trackNameValidator);
|
signature.AddParameter(wxT("TrackName"), 0, trackNameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ void SetTrackInfoCommandType::BuildSignature(CommandSignature &signature)
|
|||||||
OptionValidator *infoTypeValidator = new OptionValidator();
|
OptionValidator *infoTypeValidator = new OptionValidator();
|
||||||
infoTypeValidator->AddOption(wxT("Name"));
|
infoTypeValidator->AddOption(wxT("Name"));
|
||||||
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator);
|
signature.AddParameter(wxT("Type"), wxT("Name"), infoTypeValidator);
|
||||||
Validator *nameValidator = new Validator();
|
Validator *nameValidator = new DefaultValidator();
|
||||||
signature.AddParameter(wxT("Name"), wxT("Unnamed"), nameValidator);
|
signature.AddParameter(wxT("Name"), wxT("Unnamed"), nameValidator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,6 +43,8 @@ a certain criterion. This is a base validator which allows anything.
|
|||||||
#ifndef __VALIDATORS__
|
#ifndef __VALIDATORS__
|
||||||
#define __VALIDATORS__
|
#define __VALIDATORS__
|
||||||
|
|
||||||
|
#include "../MemoryX.h"
|
||||||
|
|
||||||
class Validator /* not final */
|
class Validator /* not final */
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -75,9 +77,16 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// This MUST be overridden, to avoid slicing!
|
/// This MUST be overridden, to avoid slicing!
|
||||||
virtual Validator *GetClone() const
|
using Holder = std::unique_ptr<Validator>;
|
||||||
|
virtual Holder GetClone() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DefaultValidator final : public Validator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual Holder GetClone() const
|
||||||
{
|
{
|
||||||
return new Validator();
|
return std::make_unique<DefaultValidator>(*this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -112,11 +121,11 @@ public:
|
|||||||
desc += mOptions[optionCount-1];
|
desc += mOptions[optionCount-1];
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
OptionValidator *v = new OptionValidator();
|
auto v = std::make_unique<OptionValidator>();
|
||||||
v->mOptions = mOptions;
|
v->mOptions = mOptions;
|
||||||
return v;
|
return std::move(v);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -134,9 +143,9 @@ public:
|
|||||||
{
|
{
|
||||||
return wxT("true/false or 1/0 or yes/no");
|
return wxT("true/false or 1/0 or yes/no");
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
return new BoolValidator();
|
return std::make_unique<BoolValidator>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -158,9 +167,9 @@ public:
|
|||||||
{
|
{
|
||||||
return wxT("0X101XX101...etc. where 0=false, 1=true, and X=don't care. Numbering starts at leftmost = track 0");
|
return wxT("0X101XX101...etc. where 0=false, 1=true, and X=don't care. Numbering starts at leftmost = track 0");
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
return new BoolArrayValidator();
|
return std::make_unique<BoolArrayValidator>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -178,9 +187,9 @@ public:
|
|||||||
{
|
{
|
||||||
return wxT("a floating-point number");
|
return wxT("a floating-point number");
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
return new DoubleValidator();
|
return std::make_unique<DoubleValidator>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -203,9 +212,9 @@ public:
|
|||||||
{
|
{
|
||||||
return wxString::Format(wxT("between %f and %f"), mLower, mUpper);
|
return wxString::Format(wxT("between %f and %f"), mLower, mUpper);
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
return new RangeValidator(mLower, mUpper);
|
return std::make_unique<RangeValidator>(mLower, mUpper);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -224,9 +233,9 @@ public:
|
|||||||
{
|
{
|
||||||
return wxT("an integer");
|
return wxT("an integer");
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Holder GetClone() const override
|
||||||
{
|
{
|
||||||
return new IntValidator();
|
return std::make_unique<IntValidator>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -234,23 +243,22 @@ public:
|
|||||||
class AndValidator final : public Validator
|
class AndValidator final : public Validator
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Validator &v1, &v2;
|
Validator::Holder v1, v2;
|
||||||
public:
|
public:
|
||||||
AndValidator(Validator *u1, Validator *u2)
|
AndValidator(Validator::Holder &&u1, Validator::Holder &&u2)
|
||||||
: v1(*u1), v2(*u2)
|
: v1(std::move(u1)), v2(std::move(u2))
|
||||||
{ }
|
{ }
|
||||||
bool Validate(const wxVariant &v) override
|
bool Validate(const wxVariant &v) override
|
||||||
{
|
{
|
||||||
if (!v1.Validate(v)) return false;
|
return v1->Validate(v) && v2->Validate(v);
|
||||||
return v2.Validate(v);
|
|
||||||
}
|
}
|
||||||
wxString GetDescription() const override
|
wxString GetDescription() const override
|
||||||
{
|
{
|
||||||
return v1.GetDescription() + wxT(" and ") + v2.GetDescription();
|
return v1->GetDescription() + wxT(" and ") + v2->GetDescription();
|
||||||
}
|
}
|
||||||
Validator *GetClone() const override
|
Validator *GetClone() const override
|
||||||
{
|
{
|
||||||
return new AndValidator(v1.GetClone(), v2.GetClone());
|
return std::make_unique<AndValidator>(v1->GetClone(), v2->GetClone());
|
||||||
}
|
}
|
||||||
};*/
|
};*/
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user