OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
EmissionSourceList.cpp
Go to the documentation of this file.
7
8using namespace Expressions;
9
11 : Definition(
12 0, "EMISSIONSOURCELIST",
13 "The EMISSIONSOURCELIST statement defines a list of emission sources.\n"
14 "\t<name> : EMISSIONSOURCELIST = (ES1, ES2, ...)") {
16}
17
19 : Definition(name, parent) {}
20
22
24 return dynamic_cast<EmissionSourceList*>(object) != nullptr;
25}
26
28 return new EmissionSourceList(name, this);
29}
30
32
34 Object* obj = OpalData::getInstance()->find(name);
35 auto* esl = dynamic_cast<EmissionSourceList*>(obj);
36 if (esl == nullptr) {
37 throw OpalException(
38 "EmissionSourceList::find()", "EmissionSourceList \"" + name + "\" not found.");
39 }
40 return esl;
41}
42
44 parseDelimiter(stat, '=');
45 parseDelimiter(stat, '(');
46 sources_m.clear();
47 parseList(stat);
48 parseDelimiter(stat, ')');
49}
50
52 do {
53 std::string name = parseString(stat, "EmissionSource name expected.");
54 Object* obj = OpalData::getInstance()->find(name);
55 if (obj == nullptr) {
56 throw ParseError(
57 "EmissionSourceList::parseList()",
58 "EmissionSource \"" + name + "\" is undefined.");
59 }
60 auto* es = dynamic_cast<EmissionSource*>(obj);
61 if (es == nullptr) {
62 throw ParseError(
63 "EmissionSourceList::parseList()",
64 "Object \"" + name + "\" is not an EmissionSource.");
65 }
66 sources_m.push_back(es);
67 } while (stat.delimiter(','));
68}
The base class for all OPAL definitions.
Definition Definition.h:29
virtual void parse(Statement &stat)
Parse the object.
EmissionSourceList()
Exemplar constructor.
virtual EmissionSourceList * clone(const std::string &name)
Return a clone.
static EmissionSourceList * find(const std::string &name)
std::vector< EmissionSource * > sources_m
virtual bool canReplaceBy(Object *object)
Test if replacement is allowed.
virtual void execute()
Execute the command.
void parseList(Statement &stat)
The base class for all OPAL objects.
Definition Object.h:45
void registerOwnership(const AttributeHandler::OwnerType &itsClass) const
Definition Object.cpp:169
Object * find(const std::string &name)
Find entry.
Definition OpalData.cpp:477
static OpalData * getInstance()
Definition OpalData.cpp:193
Parse exception.
Definition ParseError.h:31
Interface for statements.
Definition Statement.h:37
bool delimiter(char c)
Test for delimiter.
Definition Statement.cpp:83
Representation objects and parsers for attribute expressions.
std::string parseString(Statement &, const char msg[])
Parse string value.
void parseDelimiter(Statement &stat, char delim)
Test for one-character delimiter.