ad_rss
RelativePosition.hpp
Go to the documentation of this file.
1 /*
2  * ----------------- BEGIN LICENSE BLOCK ---------------------------------
3  *
4  * Copyright (C) 2018-2022 Intel Corporation
5  *
6  * SPDX-License-Identifier: LGPL-2.1-only
7  *
8  * ----------------- END LICENSE BLOCK -----------------------------------
9  */
10 
18 #pragma once
19 
20 #include <iostream>
21 #include <limits>
22 #include <memory>
23 #include <sstream>
24 #include "ad/physics/Distance.hpp"
30 namespace ad {
34 namespace rss {
38 namespace core {
39 
46 {
50  typedef std::shared_ptr<RelativePosition> Ptr;
51 
55  typedef std::shared_ptr<RelativePosition const> ConstPtr;
56 
60  RelativePosition() = default;
61 
65  ~RelativePosition() = default;
66 
70  RelativePosition(const RelativePosition &other) = default;
71 
75  RelativePosition(RelativePosition &&other) = default;
76 
84  RelativePosition &operator=(const RelativePosition &other) = default;
85 
94 
102  bool operator==(const RelativePosition &other) const
103  {
106  && (lateral_distance == other.lateral_distance);
107  }
108 
116  bool operator!=(const RelativePosition &other) const
117  {
118  return !operator==(other);
119  }
120 
125  ::ad::rss::core::LongitudinalRelativePosition::Overlap};
126 
130  ::ad::physics::Distance longitudinal_distance{0.0};
131 
135  ::ad::rss::core::LateralRelativePosition lateral_position{::ad::rss::core::LateralRelativePosition::Overlap};
136 
140  ::ad::physics::Distance lateral_distance{0.0};
141 };
142 
143 } // namespace core
144 } // namespace rss
145 } // namespace ad
146 
150 #ifndef GEN_GUARD_AD_RSS_CORE_RELATIVEPOSITION
151 #define GEN_GUARD_AD_RSS_CORE_RELATIVEPOSITION
155 namespace ad {
159 namespace rss {
163 namespace core {
164 
174 inline std::ostream &operator<<(std::ostream &os, RelativePosition const &_value)
175 {
176  os << "RelativePosition(";
177  os << "longitudinal_position:";
178  os << _value.longitudinal_position;
179  os << ",";
180  os << "longitudinal_distance:";
181  os << _value.longitudinal_distance;
182  os << ",";
183  os << "lateral_position:";
184  os << _value.lateral_position;
185  os << ",";
186  os << "lateral_distance:";
187  os << _value.lateral_distance;
188  os << ")";
189  return os;
190 }
191 
192 } // namespace core
193 } // namespace rss
194 } // namespace ad
195 
196 namespace std {
200 inline std::string to_string(::ad::rss::core::RelativePosition const &value)
201 {
202  stringstream sstream;
203  sstream << value;
204  return sstream.str();
205 }
206 } // namespace std
207 
211 template <> struct fmt::formatter<::ad::rss::core::RelativePosition> : formatter<string_view>
212 {
213  template <typename FormatContext> auto format(::ad::rss::core::RelativePosition const &value, FormatContext &ctx)
214  {
215  return formatter<string_view>::format(std::to_string(value), ctx);
216  }
217 };
218 
219 #endif // GEN_GUARD_AD_RSS_CORE_RELATIVEPOSITION
std::string to_string(::ad::rss::core::LateralRelativePosition const &value)
overload of the std::to_string for LateralRelativePosition
Definition: LateralRelativePosition.hpp:162
LongitudinalRelativePosition
DataType LongitudinalRelativePosition.
Definition: LongitudinalRelativePosition.hpp:45
std::ostream & operator<<(std::ostream &os, LateralRelativePosition const &value)
standard ostream operator
Definition: LateralRelativePosition.hpp:149
LateralRelativePosition
DataType LateralRelativePosition.
Definition: LateralRelativePosition.hpp:45
namespace ad
Definition: LateralRelativePosition.hpp:28
DataType RelativePosition.
Definition: RelativePosition.hpp:46
RelativePosition()=default
standard constructor
std::shared_ptr< RelativePosition const > ConstPtr
Smart pointer on constant RelativePosition.
Definition: RelativePosition.hpp:55
~RelativePosition()=default
standard destructor
::ad::physics::Distance lateral_distance
Definition: RelativePosition.hpp:140
::ad::physics::Distance longitudinal_distance
Definition: RelativePosition.hpp:130
bool operator==(const RelativePosition &other) const
standard comparison operator
Definition: RelativePosition.hpp:102
::ad::rss::core::LateralRelativePosition lateral_position
Definition: RelativePosition.hpp:135
RelativePosition & operator=(const RelativePosition &other)=default
standard assignment operator
RelativePosition(RelativePosition &&other)=default
standard move constructor
::ad::rss::core::LongitudinalRelativePosition longitudinal_position
Definition: RelativePosition.hpp:124
RelativePosition & operator=(RelativePosition &&other)=default
standard move operator
RelativePosition(const RelativePosition &other)=default
standard copy constructor
bool operator!=(const RelativePosition &other) const
standard comparison operator
Definition: RelativePosition.hpp:116
std::shared_ptr< RelativePosition > Ptr
Smart pointer on RelativePosition.
Definition: RelativePosition.hpp:50