#ifndef __EnumParameter_h__ #define __EnumParameter_h__ #include #include #include "Parameter.h" #include namespace GenParam { /** Class of an enum parameter. */ class EnumParameter : public Parameter { public: using Ptr = std::unique_ptr; struct EnumValue { int id; std::string name; }; protected: std::vector m_enumValues; public: EnumParameter(const std::string& name, const std::string& label, int* valuePtr) : Parameter(name, label, ParameterBase::ENUM, valuePtr) { } EnumParameter(const std::string& name, const std::string& label, GetFunc getValue, SetFunc setValue) : Parameter(name, label, ParameterBase::ENUM, getValue, setValue) { } virtual ~EnumParameter() {} /** Add an enum value to this parameter type. */ void addEnumValue(const std::string &name, int &id) { EnumValue val; val.name = name; id = static_cast(m_enumValues.size()); val.id = id; m_enumValues.push_back(val); } /** Clear all enum values. */ void clearEnumValues() { m_enumValues.clear(); } const std::vector& getEnumValues() { return m_enumValues; } }; } #endif