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_tools::DataManager Class Reference

Класс, хранящий gui объекты и связывающий их с QCustomPlot. More...

#include <data_manager.h>

Collaboration diagram for data_tools::DataManager:

Public Member Functions

 DataManager ()=default
 
void Add (const lib::Hill &data)
 
void Add (const lib::Target &data)
 
void Add (const lib::TrappyCircle &data)
 
void Add (const lib::TrappyLine &data)
 
void Add (const std::vector< lib::Hill > &)
 
void Add (const std::vector< lib::Target > &)
 
void Add (const std::vector< lib::TrappyCircle > &)
 
void Add (const std::vector< lib::TrappyLine > &)
 
void Add (gui::Hill *hill_ptr)
 
void Add (gui::Target *target_ptr)
 
void Add (gui::TrappyCircle *trappy_circle)
 
void Add (gui::TrappyLine *trappy_line)
 
void Add (lib::Hill &data)
 
void Add (lib::Target &data)
 
void Add (lib::TrappyCircle &data)
 
void Add (lib::TrappyLine &data)
 
void Add (std::vector< gui::Hill * >)
 
void Add (std::vector< gui::Target * >)
 
void Add (std::vector< gui::TrappyCircle * >)
 
void Add (std::vector< gui::TrappyLine * >)
 
void Add (std::vector< lib::Hill > &)
 
void Add (std::vector< lib::Target > &)
 
void Add (std::vector< lib::TrappyCircle > &)
 
void Add (std::vector< lib::TrappyLine > &)
 
void Clear ()
 Очищает все вектора объектов
 
std::vector< gui::HillGetHills () const
 Возвращает значение Hills.
 
std::vector< gui::Hill * > GetHillsPtrs ()
 Возвращает значение Hills.
 
std::vector< gui::TargetGetTargets () const
 Возвращает значение Targets.
 
std::vector< gui::Target * > GetTargetsPtrs ()
 Возвращает значение Targets.
 
std::vector< gui::TrappyCircleGetTrappyCircles () const
 Возвращает значение TrappyCircles.
 
std::vector< gui::TrappyCircle * > GetTrappyCirclesPtrs ()
 Возвращает значение TrappyCircles.
 
std::vector< gui::TrappyLineGetTrappyLines () const
 Возвращает значение TrappyLines.
 
std::vector< gui::TrappyLine * > GetTrappyLinesPtrs ()
 Возвращает значение TrappyLines.
 
void Remove (gui::ObjectType obj_type, size_t index)
 Удаляет объект из менеджера по индексу
 
bool RemoveAllDuplicates ()
 Удаляет все повторяющиеся объекты в векторах объектов
 
bool RemoveLastDuplicate ()
 Удаляет последний объект в векторах, если он является дупликатом другого
 
void Set (const std::vector< lib::Hill > &)
 
void Set (const std::vector< lib::Target > &)
 
void Set (const std::vector< lib::TrappyCircle > &)
 
void Set (const std::vector< lib::TrappyLine > &)
 
void Set (std::vector< gui::Hill * >)
 
void Set (std::vector< gui::Target * >)
 
void Set (std::vector< gui::TrappyCircle * >)
 
void Set (std::vector< gui::TrappyLine * >)
 
void Set (std::vector< lib::Hill > &)
 
void Set (std::vector< lib::Target > &)
 
void Set (std::vector< lib::TrappyCircle > &)
 
void Set (std::vector< lib::TrappyLine > &)
 

Private Member Functions

void CheckErrorValues_ ()
 Проверяет данные в DataManager на валидность
 
unsigned short GetMinId_ (gui::ObjectType obj_type)
 

Private Attributes

std::vector< std::unique_ptr< gui::Hill > > hills_
 
std::vector< std::unique_ptr< gui::Target > > targets_
 
std::vector< std::unique_ptr< gui::TrappyCircle > > trappy_circles_
 
std::vector< std::unique_ptr< gui::TrappyLine > > trappy_lines_
 

Detailed Description

Класс, хранящий gui объекты и связывающий их с QCustomPlot.

Constructor & Destructor Documentation

◆ DataManager()

data_tools::DataManager::DataManager ( )
default

Member Function Documentation

◆ Add() [1/24]

void data_tools::DataManager::Add ( const lib::Hill & data)

◆ Add() [2/24]

void data_tools::DataManager::Add ( const lib::Target & data)
182 {
183 if (targets_.empty())
184 targets_.emplace_back(new gui::Airport(data));
185 else
186 targets_.emplace_back(new gui::Target(data));
187
189}
std::vector< std::unique_ptr< gui::Target > > targets_
Definition data_manager.h:164
Фигура контрольной точки, откуда происходит запуск
Definition airport.h:14
Фигура контрольной точки
Definition target.h:13
#define CHECK_AND_REMOVE_LAST
Definition data_manager.cpp:8

◆ Add() [3/24]

void data_tools::DataManager::Add ( const lib::TrappyCircle & data)

◆ Add() [4/24]

void data_tools::DataManager::Add ( const lib::TrappyLine & data)

◆ Add() [5/24]

void data_tools::DataManager::Add ( const std::vector< lib::Hill > & new_hills)

◆ Add() [6/24]

void data_tools::DataManager::Add ( const std::vector< lib::Target > & new_targets)
195 {
196 ADD_BY_VECTOR(target);
197}
#define ADD_BY_VECTOR(object_name)
Definition data_manager.cpp:27

◆ Add() [7/24]

void data_tools::DataManager::Add ( const std::vector< lib::TrappyCircle > & new_trappy_circles)

◆ Add() [8/24]

void data_tools::DataManager::Add ( const std::vector< lib::TrappyLine > & new_trappy_lines)

◆ Add() [9/24]

void data_tools::DataManager::Add ( gui::Hill * hill_ptr)

◆ Add() [10/24]

void data_tools::DataManager::Add ( gui::Target * target_ptr)
155 {
156 if (targets_.empty()) target = new gui::Airport(*target);
157
158 targets_.emplace_back(target);
159 target->GetData().SetId(GetMinId_(gui::ObjectType::Targets));
160
162}
unsigned short GetMinId_(gui::ObjectType obj_type)
Definition data_manager.cpp:305
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Add() [11/24]

void data_tools::DataManager::Add ( gui::TrappyCircle * trappy_circle)

◆ Add() [12/24]

void data_tools::DataManager::Add ( gui::TrappyLine * trappy_line)

◆ Add() [13/24]

void data_tools::DataManager::Add ( lib::Hill & data)

◆ Add() [14/24]

void data_tools::DataManager::Add ( lib::Target & data)
173 {
174 if (targets_.empty())
175 targets_.emplace_back(new gui::Airport(data));
176 else
177 targets_.emplace_back(new gui::Target(data));
178
180}

◆ Add() [15/24]

void data_tools::DataManager::Add ( lib::TrappyCircle & data)

◆ Add() [16/24]

void data_tools::DataManager::Add ( lib::TrappyLine & data)

◆ Add() [17/24]

void data_tools::DataManager::Add ( std::vector< gui::Hill * > new_hills)

◆ Add() [18/24]

void data_tools::DataManager::Add ( std::vector< gui::Target * > new_targets)
164 {
165 for (const auto& target : new_targets) {
166 Add(target);
167 target->GetData().SetId(GetMinId_(gui::ObjectType::Targets));
168 }
169
171}
void Add(gui::Target *target_ptr)
Definition data_manager.cpp:155
Here is the call graph for this function:

◆ Add() [19/24]

void data_tools::DataManager::Add ( std::vector< gui::TrappyCircle * > new_trappy_circles)

◆ Add() [20/24]

void data_tools::DataManager::Add ( std::vector< gui::TrappyLine * > new_trappy_lines)

◆ Add() [21/24]

void data_tools::DataManager::Add ( std::vector< lib::Hill > & new_hills)

◆ Add() [22/24]

void data_tools::DataManager::Add ( std::vector< lib::Target > & new_targets)
191 {
192 ADD_BY_VECTOR(target);
193}

◆ Add() [23/24]

void data_tools::DataManager::Add ( std::vector< lib::TrappyCircle > & new_trappy_circles)

◆ Add() [24/24]

void data_tools::DataManager::Add ( std::vector< lib::TrappyLine > & new_trappy_lines)

◆ CheckErrorValues_()

void data_tools::DataManager::CheckErrorValues_ ( )
private

Проверяет данные в DataManager на валидность

Exceptions
std::invalid_argumentесли объектов какого-либо вектора > 10000
227 {
228 if (targets_.size() > 10000 || hills_.size() > 10000 ||
229 trappy_circles_.size() > 10000 || trappy_lines_.size() > 10000)
230 throw std::invalid_argument("Exceeding the maximum objects number!");
231}
std::vector< std::unique_ptr< gui::TrappyCircle > > trappy_circles_
Definition data_manager.h:165
std::vector< std::unique_ptr< gui::Hill > > hills_
Definition data_manager.h:163
std::vector< std::unique_ptr< gui::TrappyLine > > trappy_lines_
Definition data_manager.h:166
Here is the caller graph for this function:

◆ Clear()

void data_tools::DataManager::Clear ( )

Очищает все вектора объектов

144 {
145 targets_.clear();
146 trappy_circles_.clear();
147 trappy_lines_.clear();
148 hills_.clear();
149
151}
void CheckErrorValues_()
Проверяет данные в DataManager на валидность
Definition data_manager.cpp:227
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHills()

std::vector< gui::Hill > data_tools::DataManager::GetHills ( ) const

Возвращает значение Hills.

Returns
std::vector<gui::Hill>: объекты рельефа
Here is the caller graph for this function:

◆ GetHillsPtrs()

std::vector< gui::Hill * > data_tools::DataManager::GetHillsPtrs ( )

Возвращает значение Hills.

Returns
std::vector<gui::Hill*>: указатели на объекты рельефа
Here is the caller graph for this function:

◆ GetMinId_()

unsigned short data_tools::DataManager::GetMinId_ ( gui::ObjectType obj_type)
private
305 {
306 std::vector<unsigned short> ids;
307
308 switch (obj_type) {
310 for (auto& target : targets_) ids.push_back(target->GetData().GetId());
311 unsigned short id = 10000;
312 while (!(ids.empty() || find(ids.begin(), ids.end(), id) == ids.end()))
313 id++;
314
315 return id;
316 }
317
319 for (auto& trappy_circle : trappy_circles_)
320 ids.push_back(trappy_circle->GetData().GetId());
321 unsigned short id = 20000;
322 while (!(ids.empty() || find(ids.begin(), ids.end(), id) == ids.end()))
323 id++;
324
325 return id;
326 }
327
329 for (auto& trappy_line : trappy_lines_)
330 ids.push_back(trappy_line->GetData().GetId());
331 unsigned short id = 30000;
332 while (!(ids.empty() || find(ids.begin(), ids.end(), id) == ids.end()))
333 id++;
334
335 return id;
336 }
337
339 for (auto& h : hills_) ids.push_back(h->GetData().GetId());
340 unsigned short id = 40000;
341 while (!(ids.empty() || find(ids.begin(), ids.end(), id) == ids.end()))
342 id++;
343
344 return id;
345 }
346 }
347
348 // this case is impossible
349 return SHRT_MAX;
350}
Here is the caller graph for this function:

◆ GetTargets()

std::vector< gui::Target > data_tools::DataManager::GetTargets ( ) const

Возвращает значение Targets.

Returns
std::vector<gui::Target>: объекты к.т.
Here is the caller graph for this function:

◆ GetTargetsPtrs()

std::vector< gui::Target * > data_tools::DataManager::GetTargetsPtrs ( )

Возвращает значение Targets.

Returns
std::vector<gui::Target*>: указатели на объекты к.т.
Here is the caller graph for this function:

◆ GetTrappyCircles()

std::vector< gui::TrappyCircle > data_tools::DataManager::GetTrappyCircles ( ) const

Возвращает значение TrappyCircles.

Returns
std::vector<gui::TrappyCircle>: объекты опасной зоны
Here is the caller graph for this function:

◆ GetTrappyCirclesPtrs()

std::vector< gui::TrappyCircle * > data_tools::DataManager::GetTrappyCirclesPtrs ( )

Возвращает значение TrappyCircles.

Returns
std::vector<gui::TrappyCircle*>: указатели на объекты опасной зоны
Here is the caller graph for this function:

◆ GetTrappyLines()

std::vector< gui::TrappyLine > data_tools::DataManager::GetTrappyLines ( ) const

Возвращает значение TrappyLines.

Returns
std::vector<gui::TrappyLine>: объекты оп. перелета
Here is the caller graph for this function:

◆ GetTrappyLinesPtrs()

std::vector< gui::TrappyLine * > data_tools::DataManager::GetTrappyLinesPtrs ( )

Возвращает значение TrappyLines.

Returns
std::vector<gui::TrappyLine*>: указатели на объекты оп. перелета
Here is the caller graph for this function:

◆ Remove()

void data_tools::DataManager::Remove ( gui::ObjectType obj_type,
size_t index )

Удаляет объект из менеджера по индексу

Parameters
obj_typeтип объекта
indexиндекс объекта в его векторе
112 {
113 switch (obj_type) {
115 targets_.erase(targets_.begin() + index);
116
117 // если был удалён первый, не явл. последним, меняем следующий на аэропорт
118 if (index == 0 && !targets_.empty()) {
119 targets_[0].reset(new gui::Airport(targets_[0]->GetData()));
120 }
121
122 break;
123 }
124
126 hills_.erase(hills_.begin() + index);
127 break;
128 }
129
131 trappy_circles_.erase(trappy_circles_.begin() + index);
132 break;
133 }
134
136 trappy_lines_.erase(trappy_lines_.begin() + index);
137 break;
138 }
139 }
140
142}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveAllDuplicates()

bool data_tools::DataManager::RemoveAllDuplicates ( )

Удаляет все повторяющиеся объекты в векторах объектов

Returns
true: если был удалён хоть один объект
false: если не был
267 {
268 bool res = false;
269
270 if (!targets_.empty())
271 for (size_t i = 0; i < targets_.size() - 1; i++)
272 for (size_t j = i + 1; j < targets_.size(); j++)
273 if (*targets_[i] == *targets_[j]) {
275 res = true;
276 }
277
278 if (!hills_.empty())
279 for (size_t i = 0; i < hills_.size() - 1; i++)
280 for (size_t j = i + 1; j < hills_.size(); j++)
281 if (*hills_[i] == *hills_[j]) {
283 res = true;
284 }
285
286 if (!trappy_circles_.empty())
287 for (size_t i = 0; i < trappy_circles_.size() - 1; i++)
288 for (size_t j = i + 1; j < trappy_circles_.size(); j++)
289 if (*trappy_circles_[i] == *trappy_circles_[j]) {
291 res = true;
292 }
293
294 if (!trappy_lines_.empty())
295 for (size_t i = 0; i < trappy_lines_.size() - 1; i++)
296 for (size_t j = i + 1; j < trappy_lines_.size(); j++)
297 if (*trappy_lines_[i] == *trappy_lines_[j]) {
299 res = true;
300 }
301
302 return res;
303}
void Remove(gui::ObjectType obj_type, size_t index)
Удаляет объект из менеджера по индексу
Definition data_manager.cpp:112
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveLastDuplicate()

bool data_tools::DataManager::RemoveLastDuplicate ( )

Удаляет последний объект в векторах, если он является дупликатом другого

Returns
true: если был удалён хоть один объект
false: если не был
233 {
234 bool res = false;
235
236 if (!targets_.empty())
237 for (size_t i = 0; i < targets_.size() - 1; i++)
238 if (*targets_[i] == *targets_[targets_.size() - 1]) {
240 res = true;
241 }
242
243 if (!hills_.empty())
244 for (size_t i = 0; i < hills_.size() - 1; i++)
245 if (*hills_[i] == *hills_[hills_.size() - 1]) {
247 res = true;
248 }
249
250 if (!trappy_circles_.empty())
251 for (size_t i = 0; i < trappy_circles_.size() - 1; i++)
252 if (*trappy_circles_[i] == *trappy_circles_[trappy_circles_.size() - 1]) {
254 res = true;
255 }
256
257 if (!trappy_lines_.empty())
258 for (size_t i = 0; i < trappy_lines_.size() - 1; i++)
259 if (*trappy_lines_[i] == *trappy_lines_[trappy_lines_.size() - 1]) {
261 res = true;
262 }
263
264 return res;
265}
Here is the call graph for this function:

◆ Set() [1/12]

void data_tools::DataManager::Set ( const std::vector< lib::Hill > & hills)

◆ Set() [2/12]

void data_tools::DataManager::Set ( const std::vector< lib::Target > & targets)
207 {
208 SET_BY_VECTOR(target);
209}
#define SET_BY_VECTOR(object_name)
Definition data_manager.cpp:34

◆ Set() [3/12]

void data_tools::DataManager::Set ( const std::vector< lib::TrappyCircle > & trappy_circles)

◆ Set() [4/12]

void data_tools::DataManager::Set ( const std::vector< lib::TrappyLine > & trappy_lines)

◆ Set() [5/12]

void data_tools::DataManager::Set ( std::vector< gui::Hill * > hills)

◆ Set() [6/12]

void data_tools::DataManager::Set ( std::vector< gui::Target * > targets)
199 {
200 SET_BY_VECTOR(target);
201}
Here is the caller graph for this function:

◆ Set() [7/12]

void data_tools::DataManager::Set ( std::vector< gui::TrappyCircle * > trappy_circles)

◆ Set() [8/12]

void data_tools::DataManager::Set ( std::vector< gui::TrappyLine * > trappy_lines)

◆ Set() [9/12]

void data_tools::DataManager::Set ( std::vector< lib::Hill > & hills)

◆ Set() [10/12]

void data_tools::DataManager::Set ( std::vector< lib::Target > & targets)
203 {
204 SET_BY_VECTOR(target);
205}

◆ Set() [11/12]

void data_tools::DataManager::Set ( std::vector< lib::TrappyCircle > & trappy_circles)

◆ Set() [12/12]

void data_tools::DataManager::Set ( std::vector< lib::TrappyLine > & trappy_lines)

Member Data Documentation

◆ hills_

std::vector<std::unique_ptr<gui::Hill> > data_tools::DataManager::hills_
private

◆ targets_

std::vector<std::unique_ptr<gui::Target> > data_tools::DataManager::targets_
private

◆ trappy_circles_

std::vector<std::unique_ptr<gui::TrappyCircle> > data_tools::DataManager::trappy_circles_
private

◆ trappy_lines_

std::vector<std::unique_ptr<gui::TrappyLine> > data_tools::DataManager::trappy_lines_
private

The documentation for this class was generated from the following files: