Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
data_manager.h
Go to the documentation of this file.
1#pragma once
2
3// our code libs:
4#include "gui/_objects.h"
5
6namespace data_tools {
7
8/// @brief Класс, хранящий gui объекты и связывающий их с QCustomPlot
10 public:
11 DataManager() = default;
12
13 /**
14 * @brief Удаляет объект из менеджера по индексу
15 * @param obj_type: тип объекта
16 * @param index: индекс объекта в его векторе
17 */
18 void Remove(gui::ObjectType obj_type, size_t index);
19
20 /// @brief Очищает все вектора объектов
21 void Clear();
22
23 // ---------------------- Target methods ----------------------
24
25 // for gui::Target
26 void Add(gui::Target* t);
27 void Add(std::vector<gui::Target*>);
28 void Set(std::vector<gui::Target*>);
29
30 // for lib::Target
31 void Add(lib::Target& data);
32 void Add(const lib::Target& data);
33
34 void Add(std::vector<lib::Target>&);
35 void Add(const std::vector<lib::Target>&);
36
37 void Set(std::vector<lib::Target>&);
38 void Set(const std::vector<lib::Target>&);
39
40 /**
41 * @brief Возвращает значение Targets
42 * @return std::vector<gui::Target*>: указатели на объекты к.т.
43 */
44 std::vector<gui::Target*> GetTargetsPtrs();
45
46 /**
47 * @brief Возвращает значение Targets
48 * @return std::vector<gui::Target>: объекты к.т.
49 */
50 std::vector<gui::Target> GetTargets() const;
51
52 // ---------------------- Hill methods ----------------------
53
54 // for gui::Hill
55 void Add(gui::Hill* h);
56 void Add(std::vector<gui::Hill*>);
57 void Set(std::vector<gui::Hill*>);
58
59 // for lib::Hill
60 void Add(lib::Hill& data);
61 void Add(const lib::Hill& data);
62
63 void Add(std::vector<lib::Hill>&);
64 void Add(const std::vector<lib::Hill>&);
65
66 void Set(std::vector<lib::Hill>&);
67 void Set(const std::vector<lib::Hill>&);
68
69 /**
70 * @brief Возвращает значение Hills
71 * @return std::vector<gui::Hill*>: указатели на объекты рельефа
72 */
73 std::vector<gui::Hill*> GetHillsPtrs();
74
75 /**
76 * @brief Возвращает значение Hills
77 * @return std::vector<gui::Hill>: объекты рельефа
78 */
79 std::vector<gui::Hill> GetHills() const;
80
81 // ---------------------- TrappyCircle methods ----------------------
82
83 // for gui::TrappyCircle
84 void Add(gui::TrappyCircle* tr_c);
85 void Add(std::vector<gui::TrappyCircle*>);
86 void Set(std::vector<gui::TrappyCircle*>);
87
88 // for lib::TrappyCircle
89 void Add(lib::TrappyCircle& data);
90 void Add(const lib::TrappyCircle& data);
91
92 void Add(std::vector<lib::TrappyCircle>&);
93 void Add(const std::vector<lib::TrappyCircle>&);
94
95 void Set(std::vector<lib::TrappyCircle>&);
96 void Set(const std::vector<lib::TrappyCircle>&);
97
98 /**
99 * @brief Возвращает значение TrappyCircles
100 * @return std::vector<gui::TrappyCircle*>: указатели на объекты опасной зоны
101 */
102 std::vector<gui::TrappyCircle*> GetTrappyCirclesPtrs();
103
104 /**
105 * @brief Возвращает значение TrappyCircles
106 * @return std::vector<gui::TrappyCircle>: объекты опасной зоны
107 */
108 std::vector<gui::TrappyCircle> GetTrappyCircles() const;
109
110 // ---------------------- TrappyLine methods ----------------------
111
112 // for gui::TrappyLine
113 void Add(gui::TrappyLine* tr_l);
114 void Add(std::vector<gui::TrappyLine*>);
115 void Set(std::vector<gui::TrappyLine*>);
116
117 // for lib::TrappyLine
118 void Add(lib::TrappyLine& data);
119 void Add(const lib::TrappyLine& data);
120
121 void Add(std::vector<lib::TrappyLine>&);
122 void Add(const std::vector<lib::TrappyLine>&);
123
124 void Set(std::vector<lib::TrappyLine>&);
125 void Set(const std::vector<lib::TrappyLine>&);
126
127 /**
128 * @brief Возвращает значение TrappyLines
129 * @return std::vector<gui::TrappyLine*>: указатели на объекты оп. перелета
130 */
131 std::vector<gui::TrappyLine*> GetTrappyLinesPtrs();
132
133 /**
134 * @brief Возвращает значение TrappyLines
135 * @return std::vector<gui::TrappyLine>: объекты оп. перелета
136 */
137 std::vector<gui::TrappyLine> GetTrappyLines() const;
138
139 /**
140 * @brief Удаляет последний объект в векторах, если он является дупликатом
141 * другого
142 * @return true: если был удалён хоть один объект
143 * @return false: если не был
144 */
145 bool RemoveLastDuplicate();
146
147 /**
148 * @brief Удаляет все повторяющиеся объекты в векторах объектов
149 * @return true: если был удалён хоть один объект
150 * @return false: если не был
151 */
152 bool RemoveAllDuplicates();
153
154 unsigned short GetMinId(gui::ObjectType obj_type);
155
156 private:
157 /**
158 * @brief Проверяет данные в DataManager на валидность
159 * @throw std::invalid_argument: если объектов какого-либо вектора > 10000
160 */
161 void CheckErrorValues();
162
163 std::vector<std::unique_ptr<gui::Hill>> hills_;
164 std::vector<std::unique_ptr<gui::Target>> targets_;
165 std::vector<std::unique_ptr<gui::TrappyCircle>> tr_circles_;
166 std::vector<std::unique_ptr<gui::TrappyLine>> tr_lines_;
167};
168
169} // namespace data_tools
Класс, хранящий gui объекты и связывающий их с QCustomPlot.
Definition data_manager.h:9
void Add(gui::Target *t)
Definition data_manager.cpp:49
void CheckErrorValues()
Проверяет данные в DataManager на валидность
Definition data_manager.cpp:415
std::vector< gui::Hill * > GetHillsPtrs()
Возвращает значение Hills.
Definition data_manager.cpp:217
bool RemoveLastDuplicate()
Удаляет последний объект в векторах, если он является дупликатом другого
Definition data_manager.cpp:421
std::vector< std::unique_ptr< gui::TrappyLine > > tr_lines_
Definition data_manager.h:166
std::vector< gui::TrappyCircle * > GetTrappyCirclesPtrs()
Возвращает значение TrappyCircles.
Definition data_manager.cpp:307
std::vector< gui::TrappyLine * > GetTrappyLinesPtrs()
Возвращает значение TrappyLines.
Definition data_manager.cpp:397
void Set(std::vector< gui::Target * >)
Definition data_manager.cpp:103
std::vector< gui::Target > GetTargets() const
Возвращает значение Targets.
Definition data_manager.cpp:136
std::vector< std::unique_ptr< gui::Hill > > hills_
Definition data_manager.h:163
std::vector< std::unique_ptr< gui::Target > > targets_
Definition data_manager.h:164
std::vector< std::unique_ptr< gui::TrappyCircle > > tr_circles_
Definition data_manager.h:165
void Clear()
Очищает все вектора объектов
Definition data_manager.cpp:38
std::vector< gui::Hill > GetHills() const
Возвращает значение Hills.
Definition data_manager.cpp:226
std::vector< gui::Target * > GetTargetsPtrs()
Возвращает значение Targets.
Definition data_manager.cpp:127
std::vector< gui::TrappyLine > GetTrappyLines() const
Возвращает значение TrappyLines.
Definition data_manager.cpp:406
void Remove(gui::ObjectType obj_type, size_t index)
Удаляет объект из менеджера по индексу
Definition data_manager.cpp:6
std::vector< gui::TrappyCircle > GetTrappyCircles() const
Возвращает значение TrappyCircles.
Definition data_manager.cpp:316
unsigned short GetMinId(gui::ObjectType obj_type)
Definition data_manager.cpp:493
bool RemoveAllDuplicates()
Удаляет все повторяющиеся объекты в векторах объектов
Definition data_manager.cpp:455
Фигура рельефа с высотой
Definition hill.h:15
Фигура контрольной точки
Definition target.h:13
Фигура опасной зоны
Definition trappy_circle.h:14
Фигура линии опасного перелета
Definition trappy_line.h:14
Рельеф с высотой
Definition hill.h:13
Контрольная точка
Definition target.h:12
Опасная зона
Definition trappy_circle.h:9
Линия опасного перелета
Definition trappy_line.h:13
Этот файл включает в себя все gui objects.
Definition data_manager.cpp:4
ObjectType
Типы объектов по категориям
Definition base.h:21