CTL  0.6.1
Computed Tomography Library
ctsystem.h
Go to the documentation of this file.
1 #ifndef CTL_CTSYSTEM_H
2 #define CTL_CTSYSTEM_H
3 
5 
6 #include <QJsonArray>
7 #include <vector>
8 
9 namespace CTL {
10 
11 // forward declarations
12 class AbstractDetector;
13 class AbstractGantry;
14 class AbstractSource;
15 class AbstractBeamModifier;
16 
85 {
86 public:
87  typedef std::unique_ptr<SystemComponent> ComponentPtr;
88 
89  CTSystem(QString name = defaultName());
90  CTSystem(const CTSystem& other);
91  CTSystem(CTSystem&& other) = default;
92  CTSystem& operator=(CTSystem&& other) = default;
93  CTSystem& operator=(const CTSystem& other);
94 
95  virtual ~CTSystem() override = default;
96 
97  // virtual methods
98  virtual CTSystem* clone() const &;
99  virtual CTSystem* clone() &&;
100  virtual QString info() const;
101  virtual QString overview() const;
102 
103  void fromVariant(const QVariant& variant) override; // de-serialization
104  QVariant toVariant() const override; // serialization
105 
106  // getter methods
107  std::vector<AbstractDetector*> detectors() const;
108  std::vector<AbstractGantry*> gantries() const;
109  std::vector<AbstractSource*> sources() const;
110  std::vector<AbstractBeamModifier*> modifiers() const;
111 
112  const std::vector<ComponentPtr>& components() const;
113  const QString& name() const;
114  uint nbComponents() const;
115 
116  // other methods
117  void addComponent(ComponentPtr component);
118  void addComponent(SystemComponent* component);
119  void clear();
120  bool isEmpty() const;
121  bool isValid() const;
122  bool isSimple() const;
123  void rename(QString name);
124  void removeComponent(SystemComponent* component);
125 
126  // static methods
127  static QString defaultName();
128 
129  // operators
130  CTSystem& operator<<(ComponentPtr component);
131  CTSystem& operator<<(SystemComponent* component);
132 
133 private:
134  QString _name;
136 };
137 
138 Q_DECL_DEPRECATED_X("Class has been renamed. Please consider the new spelling 'CTSystem'.")
139 typedef CTSystem CTsystem;
140 
141 } // namespace CTL
142 
145 #endif // CTL_CTSYSTEM_H
std::vector< AbstractBeamModifier * > modifiers() const
Definition: ctsystem.cpp:189
void addComponent(ComponentPtr component)
Definition: ctsystem.cpp:268
Base class for components that modify the X-ray beam.
Definition: abstractbeammodifier.h:45
void fromVariant(const QVariant &variant) override
Definition: ctsystem.cpp:203
QVariant toVariant() const override
Definition: ctsystem.cpp:220
std::vector< AbstractGantry * > gantries() const
Definition: ctsystem.cpp:161
std::vector< AbstractDetector * > detectors() const
Definition: ctsystem.cpp:147
const QString & name() const
Definition: ctsystem.cpp:256
bool isEmpty() const
Definition: ctsystem.cpp:97
virtual QString overview() const
Definition: ctsystem.cpp:78
uint nbComponents() const
Definition: ctsystem.cpp:263
bool isSimple() const
Definition: ctsystem.cpp:129
void removeComponent(SystemComponent *component)
Definition: ctsystem.cpp:302
std::vector< AbstractSource * > sources() const
Definition: ctsystem.cpp:175
Specify an interface for de-/serialization from/to QVariants.
Definition: serializationinterface.h:17
const std::vector< ComponentPtr > & components() const
Definition: ctsystem.cpp:251
Base class for gantry components.
Definition: abstractgantry.h:65
Base class for detector components.
Definition: abstractdetector.h:54
The CTSystem class manages the list of all components of a system.
Definition: ctsystem.h:84
Base class for all system components.
Definition: systemcomponent.h:53
void rename(QString name)
Definition: ctsystem.cpp:297
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
QString _name
The name of the system.
Definition: ctsystem.h:134
virtual QString info() const
Definition: ctsystem.cpp:60
virtual CTSystem * clone() const &
Definition: ctsystem.cpp:240
std::vector< ComponentPtr > _componentList
The list of components.
Definition: ctsystem.h:135
Base class for source components.
Definition: abstractsource.h:68
CTSystem(QString name=defaultName())
Definition: ctsystem.cpp:24
virtual ~CTSystem() override=default
void clear()
Definition: ctsystem.cpp:289
static QString defaultName()
Definition: ctsystem.cpp:137
CTSystem & operator=(CTSystem &&other)=default
std::unique_ptr< SystemComponent > ComponentPtr
Alias for unique pointer to SystemComponent.
Definition: ctsystem.h:87
bool isValid() const
Definition: ctsystem.cpp:111