27std::multimap<std::string, std::pair<AttributeHandler::OwnerType, std::string> >
31 const std::string& name,
const std::string& help,
AttributeBase* def)
45 "AttributeHandler::getDefault()",
46 "Attribute \"" +
itsName +
"\" has no default value.");
57 "AttributeHandler::parseComponent()",
58 "You cannot assign to a component of \"" +
itsName +
"\" which is not a vector value.");
70 const std::set<std::string>& predefinedValues,
const std::string& defaultValue) {
71 std::ostringstream oss;
72 for (
auto it = predefinedValues.begin(); it != predefinedValues.end(); ++it) {
73 if (it != predefinedValues.begin()) oss <<
", ";
76 std::string validValues =
" Valid values are " + oss.str() +
".";
77 if (defaultValue !=
"_HAS_NO_DEFAULT_") {
78 validValues +=
" Its default is " + defaultValue +
".";
80 std::string* help =
const_cast<std::string*
>(&
itsHelp);
85 const std::string& att) {
86 std::multimap<OwnerType, std::string> possibleOwners;
91 for (
auto it = its.first; it != its.second; ++it) {
92 auto owner = it->second;
94 possibleOwners.insert(std::make_pair(owner.first, owner.second));
98 return possibleOwners;
103 const std::string& name) {
Abstract base class for attribute values of different types.
void setDeferred(bool)
Set or reset defer flag.
const std::string itsHelp
Help text.
virtual AttributeBase * getDefault() const
Return default value.
bool isDeferred() const
Return defer flag.
static void addAttributeOwner(const std::string &owner, const OwnerType &type, const std::string &name)
bool is_deferred
Defer flag.
void setReadOnly(bool)
Set or reset read-only flag.
static std::multimap< std::string, std::pair< OwnerType, std::string > > attributeOwnerDictionary_s
virtual const std::string & getName() const
Return attribute name.
const std::string itsName
Attribute name.
virtual const std::string & getHelp() const
Return help string.
virtual void parseComponent(Attribute &a, Statement &s, bool eval, int i) const
Parse component value.
virtual ~AttributeHandler()
bool isReadOnly() const
Return read-only flag.
static std::multimap< OwnerType, std::string > getOwner(const std::string &att)
bool is_readonly
Read-only flag.
void setPredefinedValues(const std::set< std::string > &, const std::string &)
Add predefined strings values to the help.
std::shared_ptr< AttributeBase > itsDefault
Default value.
A representation of an Object attribute.
Interface for statements.