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
lib::Target Class Reference

Контрольная точка More...

#include <target.h>

Inheritance diagram for lib::Target:
Collaboration diagram for lib::Target:

Public Member Functions

 Target ()
 
 Target (const Point &p)
 
 Target (const Target &)=default
 
 Target (double x, double y)
 
 Target (Target &&)=default
 
virtual unsigned short GetId () const
 Возвращает значение ид. объекта внутри файла
 
QJsonObject GetJsonInfo () const override
 
Point GetPoint () const
 
bool IsChanged (const QJsonObject &target_obj) const override
 
Targetoperator= (const Target &)=default
 
Targetoperator= (Target &&)=default
 
bool operator== (const Target &) const
 
virtual void SetId (unsigned short id)
 Устанавливает значение ид. объекта внутри файла
 
void SetJsonInfo (const QJsonObject &target_obj) override
 
void SetPoint (const Point &p)
 
void SetPoint (double x, double y)
 

Private Member Functions

void CheckErrorValues () const override
 Проверяет данные в классе на валидность
 

Private Attributes

unsigned short id_ {USHRT_MAX}
 Идентификатор объекта внутри файла
 
Point p_
 

Detailed Description

Контрольная точка

Самый лучший класс в мире: только с ним у нас не было проблем :)

Constructor & Destructor Documentation

◆ Target() [1/5]

lib::Target::Target ( double x,
double y )
inline
14: p_(x, y) { CheckErrorValues(); }
void CheckErrorValues() const override
Проверяет данные в классе на валидность
Definition target.cpp:46
Point p_
Definition target.h:51
Here is the call graph for this function:

◆ Target() [2/5]

lib::Target::Target ( const Point & p)
inline
15: p_{p} { CheckErrorValues(); }
Here is the call graph for this function:

◆ Target() [3/5]

lib::Target::Target ( )
inline
16: p_(0, 0) {}

◆ Target() [4/5]

lib::Target::Target ( const Target & )
default

◆ Target() [5/5]

lib::Target::Target ( Target && )
default

Member Function Documentation

◆ CheckErrorValues()

void lib::Target::CheckErrorValues ( ) const
overrideprivatevirtual

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

Exceptions
std::invalid_argumentесли одна из коорд. точки превышает максимально допустимое значение

Implements lib::JSONable.

46 {
47 if (p_.x > max_coord || p_.y > max_coord)
48 throw std::invalid_argument("Exceeding the maximum permissible values!");
49}
constexpr double max_coord
Definition base.h:12
double y
Definition point.h:18
double x
Definition point.h:17
Here is the caller graph for this function:

◆ GetId()

virtual unsigned short lib::JSONable::GetId ( ) const
inlinevirtualinherited

Возвращает значение ид. объекта внутри файла

Returns
unsigned short: идентификатор объекта внутри файла
26{ return id_; }
unsigned short id_
Идентификатор объекта внутри файла
Definition base.h:40
Here is the caller graph for this function:

◆ GetJsonInfo()

QJsonObject lib::Target::GetJsonInfo ( ) const
overridevirtual

Implements lib::JSONable.

6 {
7 QVariantMap target_map;
8
9 target_map.insert("Id", GetId());
10 target_map.insert("X", p_.x);
11 target_map.insert("Y", p_.y);
12
13 return QJsonObject::fromVariantMap(target_map);
14}
virtual unsigned short GetId() const
Возвращает значение ид. объекта внутри файла
Definition base.h:26
Here is the call graph for this function:

◆ GetPoint()

Point lib::Target::GetPoint ( ) const
inline
29{ return p_; }
Here is the caller graph for this function:

◆ IsChanged()

bool lib::Target::IsChanged ( const QJsonObject & target_obj) const
overridevirtual

Implements lib::JSONable.

36 {
37 Point p = {target_obj.value("X").toDouble(),
38 target_obj.value("Y").toDouble()};
39 return p != p_;
40}
Here is the caller graph for this function:

◆ operator=() [1/2]

Target & lib::Target::operator= ( const Target & )
default

◆ operator=() [2/2]

Target & lib::Target::operator= ( Target && )
default

◆ operator==()

bool lib::Target::operator== ( const Target & target) const
42 {
43 return p_ == target.GetPoint();
44}
Here is the call graph for this function:

◆ SetId()

virtual void lib::JSONable::SetId ( unsigned short id)
inlinevirtualinherited

Устанавливает значение ид. объекта внутри файла

Parameters
idновый идентификатор объекта
32{ id_ = id; }
Here is the caller graph for this function:

◆ SetJsonInfo()

void lib::Target::SetJsonInfo ( const QJsonObject & target_obj)
overridevirtual

Implements lib::JSONable.

16 {
17 if (!(target_obj.contains("X") && target_obj.contains("Y") &&
18 target_obj.contains("Id")))
19 throw std::invalid_argument(
20 "Invalid file format: missing X, Y or Id field in Targets!");
21
22 double x = target_obj.value("X").toDouble();
23 double y = target_obj.value("Y").toDouble();
24 SetPoint(x, y);
25
26 unsigned short id =
27 static_cast<unsigned short>(target_obj.value("Id").toInt());
28 if (id < 10000 || id > 19999)
29 throw std::invalid_argument(
30 "Invalid file format: incorrect id in 'Target'!");
31 SetId(id);
32
34}
virtual void SetId(unsigned short id)
Устанавливает значение ид. объекта внутри файла
Definition base.h:32
void SetPoint(const Point &p)
Definition target.h:31
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPoint() [1/2]

void lib::Target::SetPoint ( const Point & p)
inline
31 {
32 p_ = p;
34 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPoint() [2/2]

void lib::Target::SetPoint ( double x,
double y )
inline
36 {
37 p_ = Point(x, y);
39 }
Here is the call graph for this function:

Member Data Documentation

◆ id_

unsigned short lib::JSONable::id_ {USHRT_MAX}
privateinherited

Идентификатор объекта внутри файла

40{USHRT_MAX};

◆ p_

Point lib::Target::p_
private

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