OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
PredefinedString.cpp
Go to the documentation of this file.
1//
2// Class PredefinedString
3// This class is used to parse attributes of type string that should
4// be contained in set of predefined strings.
5//
6// Copyright (c) 2021, Christof Metzger-Kraus, Open Sourcerer
7// All rights reserved
8//
9// This file is part of OPAL.
10//
11// OPAL is free software: you can redistribute it and/or modify
12// it under the terms of the GNU General Public License as published by
13// the Free Software Foundation, either version 3 of the License, or
14// (at your option) any later version.
15//
16// You should have received a copy of the GNU General Public License
17// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
18//
23#include "Utilities/Util.h"
24
25using namespace Expressions;
26
27namespace Attributes {
28
30 const std::string& name, const std::string& help,
31 const std::initializer_list<std::string>& predefinedStrings,
32 const std::string& defaultValue)
33 : AttributeHandler(name, help, 0) {
34 for (const std::string& value : predefinedStrings) {
36 }
38 }
39
41
42 const std::string& PredefinedString::getType() const {
43 static const std::string type("string");
44 return type;
45 }
46
47 void PredefinedString::parse(Attribute& attr, Statement& stat, bool) const {
48 std::string value = Util::toUpper(parseStringValue(stat, "String value expected"));
49 if (predefinedStrings_m.count(value) == 0) {
50 throw ParseError("PredefinedString::parse", "Unsupported value '" + value + "'");
51 }
53 }
54
55}; // namespace Attributes
Abstract base class for attribute parsers.
void setPredefinedValues(const std::set< std::string > &, const std::string &)
Add predefined strings values to the help.
A representation of an Object attribute.
Definition Attribute.h:52
virtual void parse(Attribute &, Statement &, bool) const
Parse the attribute.
virtual const std::string & getType() const
Return attribute type string `‘string’'.
std::set< std::string > predefinedStrings_m
Parse exception.
Definition ParseError.h:31
Interface for statements.
Definition Statement.h:37
A collection of routines to construct object Attributes and retrieve.
void setPredefinedString(Attribute &attr, const std::string &val)
Set predefined string value.
Representation objects and parsers for attribute expressions.
std::string parseStringValue(Statement &, const char msg[])
std::string toUpper(const std::string &str)
Definition Util.cpp:141