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.