CARLA
 
载入中...
搜索中...
未找到
CarlaCollisionEvent.cpp
浏览该文件的文档.
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/*!
16 * @file CarlaCarlaCollisionEvent.cpp
17 * This source file contains the definition of the described types in the IDL file.
18 *
19 * This file was generated by the tool gen.
20 */
21
22#ifdef _WIN32
23// Remove linker warning LNK4221 on Visual Studio
24namespace {
25char dummy;
26} // namespace
27#endif // _WIN32
28// 包含 CarlaCollisionEvent 类的头文件
29#include "CarlaCollisionEvent.h"
30// 包含 FastCDR 库中用于序列化和反序列化操作的 Cdr 类的头文件
31#include <fastcdr/Cdr.h>
32// 包含 FastCDR 库中异常相关的头文件,用于处理参数异常等情况
33#include <fastcdr/exceptions/BadParamException.h>
34using namespace eprosima::fastcdr::exception;
35
36#include <utility>
37
38#define carla_msgs_msg_geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;
39#define carla_msgs_msg_std_msgs_msg_Header_max_cdr_typesize 268ULL;
40#define carla_msgs_msg_CarlaCollisionEvent_max_cdr_typesize 296ULL;
41#define carla_msgs_msg_std_msgs_msg_Time_max_cdr_typesize 8ULL;
42#define carla_msgs_msg_geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;
43#define carla_msgs_msg_std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
44#define carla_msgs_msg_CarlaCollisionEvent_max_key_cdr_typesize 0ULL;
45#define carla_msgs_msg_std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
46// CarlaCollisionEvent 类的默认构造函数,用于初始化对象
47carla_msgs::msg::CarlaCollisionEvent::CarlaCollisionEvent()
48{
49 // std_msgs::msg::Header m_header
50 // unsigned long m_other_actor_id
51 m_other_actor_id = 0;
52 // geometry_msgs::msg::Vector3 m_normal_impulse
53}
54// CarlaCollisionEvent 类的析构函数,用于释放对象占用的资源等清理操作
55carla_msgs::msg::CarlaCollisionEvent::~CarlaCollisionEvent()
56{
57}
58// 拷贝构造函数,用于通过已有对象来创建一个新的相同类型的对象,并进行深拷贝
59carla_msgs::msg::CarlaCollisionEvent::CarlaCollisionEvent(
60 const CarlaCollisionEvent& x)
61{
62 m_header = x.m_header;
63 m_other_actor_id = x.m_other_actor_id;
64 m_normal_impulse = x.m_normal_impulse;
65}
66// 移动构造函数,利用移动语义高效地“窃取”传入对象 x 的资源,避免不必要的拷贝操作
67carla_msgs::msg::CarlaCollisionEvent::CarlaCollisionEvent(
68 CarlaCollisionEvent&& x) noexcept
69{
70 m_header = std::move(x.m_header);
71 m_other_actor_id = x.m_other_actor_id;
72 m_normal_impulse = std::move(x.m_normal_impulse);
73}
74// 重载赋值运算符(拷贝赋值),用于将一个已有对象的值赋给另一个同类型的对象,实现深拷贝赋值操作
75carla_msgs::msg::CarlaCollisionEvent& carla_msgs::msg::CarlaCollisionEvent::operator =(
76 const CarlaCollisionEvent& x)
77{
78 m_header = x.m_header;
79 m_other_actor_id = x.m_other_actor_id;
80 m_normal_impulse = x.m_normal_impulse;
81
82 return *this;
83}
84// 重载赋值运算符(移动赋值),利用移动语义高效地将传入对象 x 的资源转移给当前对象,避免深拷贝开销
85carla_msgs::msg::CarlaCollisionEvent& carla_msgs::msg::CarlaCollisionEvent::operator =(
86 CarlaCollisionEvent&& x) noexcept
87{
88 m_header = std::move(x.m_header);
89 m_other_actor_id = x.m_other_actor_id;
90 m_normal_impulse = std::move(x.m_normal_impulse);
91
92 return *this;
93}
94// 重载相等运算符,用于比较两个 CarlaCollisionEvent 对象是否相等
95bool carla_msgs::msg::CarlaCollisionEvent::operator ==(
96 const CarlaCollisionEvent& x) const
97{
98 return (m_header == x.m_header && m_other_actor_id == x.m_other_actor_id && m_normal_impulse == x.m_normal_impulse);
99}
100// 重载不等运算符,通过对相等运算符结果取反来判断两个对象是否不相等
101bool carla_msgs::msg::CarlaCollisionEvent::operator !=(
102 const CarlaCollisionEvent& x) const
103{
104 return !(*this == x);
105}
106// 获取该消息类型在 CDR 序列化时的最大尺寸
107size_t carla_msgs::msg::CarlaCollisionEvent::getMaxCdrSerializedSize(
108 size_t current_alignment)
109{
110 static_cast<void>(current_alignment);
112}
113// 获取给定的 CarlaCollisionEvent 对象在当前对齐要求下的 CDR 序列化后的实际尺寸
114size_t carla_msgs::msg::CarlaCollisionEvent::getCdrSerializedSize(
115 const carla_msgs::msg::CarlaCollisionEvent& data,
116 size_t current_alignment)
117{
118 (void)data;
120 current_alignment += std_msgs::msg::Header::getCdrSerializedSize(data.header(), current_alignment);
121 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
124}
125// 将当前 CarlaCollisionEvent 对象进行 CDR 序列化,即将对象的各个成员变量按照 CDR 格式依次写入到传入的 Cdr 对象 scdr 中
126void carla_msgs::msg::CarlaCollisionEvent::serialize(
127 eprosima::fastcdr::Cdr& scdr) const
128{
129 scdr << m_header;
130 scdr << m_other_actor_id;
131 scdr << m_normal_impulse;
132}
133// 对传入的 Cdr 对象 dcdr 中的数据进行反序列化,将数据读取出来并赋值给当前对象的各个成员变量,按照 CDR 格式解析出对象的原始状态
134void carla_msgs::msg::CarlaCollisionEvent::deserialize(
135 eprosima::fastcdr::Cdr& dcdr)
136{
137 dcdr >> m_header;
138 dcdr >> m_other_actor_id;
139 dcdr >> m_normal_impulse;
140}
141
142/*!
143 * @brief This function copies the value in member header
144 * @param _header New value to be copied in member header
145 */// 设置成员变量 m_header 的值,通过拷贝传入的 _header 对象的值来更新当前对象的 m_header 成员变量
146void carla_msgs::msg::CarlaCollisionEvent::header(
147 const std_msgs::msg::Header& _header)
148{
149 m_header = _header;
150}
151
152/*!
153 * @brief This function moves the value in member header
154 * @param _header New value to be moved in member header
155 */// 通过移动语义来设置成员变量 m_header 的值,将传入的 _header 对象的资源转移给当前对象的 m_header 成员变量
156void carla_msgs::msg::CarlaCollisionEvent::header(
157 std_msgs::msg::Header&& _header)
158{
159 m_header = std::move(_header);
160}
161
162/*!
163 * @brief This function returns a constant reference to member header
164 * @return Constant reference to member header
165 */// 返回成员变量 m_header 的常量引用,用于在不允许修改该成员变量的场景下获取其值进行访问操作
166const std_msgs::msg::Header& carla_msgs::msg::CarlaCollisionEvent::header() const
167{
168 return m_header;
169}
170
171/*!
172 * @brief This function returns a reference to member header
173 * @return Reference to member header
174 */// 返回成员变量 m_header 的普通引用,可用于在允许修改该成员变量的场景下获取其值进行访问和修改操作
175std_msgs::msg::Header& carla_msgs::msg::CarlaCollisionEvent::header()
176{
177 return m_header;
178}
179
180/*!
181 * @brief This function sets a value in member other_actor_id
182 * @param _other_actor_id New value for member other_actor_id
183 */// 设置成员变量 m_other_actor_id 的值,将传入的 _other_actor_id 参数值赋给当前对象的该成员变量
184void carla_msgs::msg::CarlaCollisionEvent::other_actor_id(
185 uint32_t _other_actor_id)
186{
187 m_other_actor_id = _other_actor_id;
188}
189
190/*!
191 * @brief This function returns the value of member other_actor_id
192 * @return Value of member other_actor_id
193 */// 返回成员变量 m_other_actor_id 的值,用于获取该成员变量存储的数值
194uint32_t carla_msgs::msg::CarlaCollisionEvent::other_actor_id() const
195{
196 return m_other_actor_id;
197}
198
199/*!
200 * @brief This function returns a reference to member other_actor_id
201 * @return Reference to member other_actor_id
202 */// 返回成员变量 m_other_actor_id 的引用,可用于获取其值进行访问或者修改操作
203uint32_t& carla_msgs::msg::CarlaCollisionEvent::other_actor_id()
204{
205 return m_other_actor_id;
206}
207
208/*!
209 * @brief This function copies the value in member normal_impulse
210 * @param _normal_impulse New value to be copied in member normal_impulse
211 */// 通过拷贝传入的 _normal_impulse 对象的值来设置成员变量 m_normal_impulse 的值
212void carla_msgs::msg::CarlaCollisionEvent::normal_impulse(
213 const geometry_msgs::msg::Vector3& _normal_impulse)
214{
215 m_normal_impulse = _normal_impulse;
216}
217
218/*!
219 * @brief This function moves the value in member normal_impulse
220 * @param _normal_impulse New value to be moved in member normal_impulse
221 */// 通过移动语义来设置成员变量 m_normal_impulse 的值,将传入的 _normal_impulse 对象的资源转移给该成员变量
222void carla_msgs::msg::CarlaCollisionEvent::normal_impulse(
223 geometry_msgs::msg::Vector3&& _normal_impulse)
224{
225 m_normal_impulse = std::move(_normal_impulse);
226}
227
228/*!
229 * @brief This function returns a constant reference to member normal_impulse
230 * @return Constant reference to member normal_impulse
231 */// 返回成员变量 m_normal_impulse 的常量引用,用于在不允许修改该成员变量的情况下获取其值进行访问操作
232const geometry_msgs::msg::Vector3& carla_msgs::msg::CarlaCollisionEvent::normal_impulse() const
233{
234 return m_normal_impulse;
235}
236
237/*!
238 * @brief This function returns a reference to member normal_impulse
239 * @return Reference to member normal_impulse
240 */// 返回成员变量 m_normal_impulse 的普通引用,可用于获取其值进行访问和修改操作
241geometry_msgs::msg::Vector3& carla_msgs::msg::CarlaCollisionEvent::normal_impulse()
242{
243 return m_normal_impulse;
244}
245// 获取该消息类型用于作为键进行 CDR 序列化时的最大尺寸,这里简单返回预定义的最大值,忽略传入的当前对齐参数
246size_t carla_msgs::msg::CarlaCollisionEvent::getKeyMaxCdrSerializedSize(
247 size_t current_alignment)
248{
249 static_cast<void>(current_alignment);
251}
252// 判断该消息类型是否定义了键,这里返回 false,表示没有定义键
253bool carla_msgs::msg::CarlaCollisionEvent::isKeyDefined()
254{
255 return false;
256}
257// 对当前对象按照键的 CDR 序列化要求进行序列化操作,这里目前为空实现
258void carla_msgs::msg::CarlaCollisionEvent::serializeKey(
259 eprosima::fastcdr::Cdr& scdr) const
260{
261 (void) scdr;
262}
#define carla_msgs_msg_CarlaCollisionEvent_max_key_cdr_typesize
#define carla_msgs_msg_CarlaCollisionEvent_max_cdr_typesize
return current_alignment initial_alignment
此类表示用户在 IDL 文件中定义的 Vector3 结构。 <>
Definition Vector3.h:72
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Vector3 &data, size_t current_alignment=0)
此函数返回数据的序列化大小 取决于缓冲区对齐。
Definition Vector3.cpp:111