OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
LaserRep.cpp
Go to the documentation of this file.
2
4
5namespace {
6 struct Entry {
7 const char* name;
8 double (LaserRep::*get)() const;
9 void (LaserRep::*set)(double);
10 };
11
12 const Entry entries[] = {
14 {nullptr, nullptr, nullptr}};
15} // namespace
16
17LaserRep::LaserRep() : Laser(), field_m(), geometry_m(0.0) {}
18
19LaserRep::LaserRep(const LaserRep& right) : Laser(right), field_m(), geometry_m(right.geometry_m) {}
20
21LaserRep::LaserRep(const std::string& name) : Laser(name), field_m(), geometry_m(0.0) {}
22
24
25ElementBase* LaserRep::clone() const { return new LaserRep(*this); }
26
27Channel* LaserRep::getChannel(const std::string& aKey, bool create) {
28 for (const Entry* entry = entries; entry->name != nullptr; ++entry) {
29 if (aKey == entry->name) {
30 return new IndirectChannel<LaserRep>(*this, entry->get, entry->set);
31 }
32 }
33
34 return ElementBase::getChannel(aKey, create);
35}
36
38
39const NullField& LaserRep::getField() const { return field_m; }
40
42
Abstract interface for read/write access to variable.
Definition Channel.h:30
virtual Channel * getChannel(const std::string &aKey, bool create=false)
Construct a read/write channel.
virtual double getElementLength() const
Get design length.
virtual void setElementLength(double length)
Set design length.
Access to a [b]double[/b] data member.
StraightGeometry & getGeometry() override
Get geometry.
Definition LaserRep.cpp:41
NullField & getField() override
Return field.
Definition LaserRep.cpp:37
ElementBase * clone() const override
Return clone.
Definition LaserRep.cpp:25
Channel * getChannel(const std::string &aKey, bool create=false) override
Construct a read/write channel.
Definition LaserRep.cpp:27
StraightGeometry geometry_m
Definition LaserRep.h:26
~LaserRep() override
Definition LaserRep.cpp:23
NullField field_m
Definition LaserRep.h:25
Passive OPALX laser element.
Definition Laser.h:25
A zero electromagnetic field.
Definition NullField.h:29
A geometry representing a straight line.