What is EnumeratedStringProperty?

EnumeratedStringProperty allows the use of EnumeratedString objects within the Property structure framework.

How to use the EnumeratedStringProperty

Include the EnumeratedStringProperty.h header file. Set up the EnumeratedStringProperty as follows:

namespace {
    const std::vector<std::string> binningModeNames{"Default", "Linear", "Logarithmic", "ReverseLogarithmic", "Power"};
    enum class BinningMode { DEFAULT, LINEAR, LOGARITHMIC, REVERSELOG, POWER, enum_count };
    typedef Mantid::Kernel::EnumeratedString<BinningMode, &binningModeNames> BINMODE;
} // namespace

Declare property:

declareProperty(
    std::make_unique<EnumeratedStringProperty<BinningMode, &binningModeNames>>("PropertyName"),
    "Description"
);

Use declared property:

BINMODE binMode = someName;
if (binMode == BinningMode::LINEAR)
    do_something();
else if (binMode != "Default")
    do_something_else();

Determining and using pre-set mode, if present, or using the default setting:

BINMODE binMode;
if (existsProperty("PropertyName"))
    Mode = getPropertyValue("PropertyName");
else
    Mode = "Default";

Example Use of EnumeratedString

Please see examples of usage in Rebin.cpp, CalculateDIFC.cpp, and AddSampleLog.cpp.