CARLA
 
载入中...
搜索中...
未找到
RegionOfInterest.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 RegionOfInterest.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// 如果定义了_WIN32宏(通常用于Windows平台相关的条件编译)
22#ifdef _WIN32
23// 以下代码块用于移除Visual Studio中的链接器警告LNK4221
24// 通过定义一个匿名命名空间,在其中声明一个未使用的变量dummy来达到此目的
25// 匿名命名空间中的内容仅在当前编译单元内可见,可避免命名冲突等问题
26// Remove linker warning LNK4221 on Visual Studio
27namespace {
28char dummy;
29} // namespace
30#endif // _WIN32
31// 包含 RegionOfInterest.h 头文件,可能定义了 RegionOfInterest 相关的结构体、类等声明
32#include "RegionOfInterest.h"
33// 包含 fastcdr/Cdr.h 头文件,推测用于处理CDR(Common Data Representation)相关的功能,比如序列化、反序列化等操作
34#include <fastcdr/Cdr.h>
35// 包含 fastcdr/exceptions/BadParamException.h 头文件,用于处理 fastcdr 库中参数异常相关的情况
36#include <fastcdr/exceptions/BadParamException.h>
37// 使用 eprosima::fastcdr::exception 命名空间,这样后续可以直接使用该命名空间下的类型等,无需每次都写全限定名
38using namespace eprosima::fastcdr::exception;
39// 包含 <utility> 头文件,该头文件提供了一些实用的模板和工具函数等,在C++标准库中经常用到
40#include <utility>
41// 定义一个宏,表示 sensor_msgs::msg::RegionOfInterest 类型的最大CDR序列化类型大小为17字节(无符号长整型大小)
42#define sensor_msgs_msg_RegionOfInterest_max_cdr_typesize 17ULL;
43// 定义一个宏,表示 sensor_msgs::msg::RegionOfInterest 类型的最大CDR键序列化类型大小为0字节
44#define sensor_msgs_msg_RegionOfInterest_max_key_cdr_typesize 0ULL;
45// RegionOfInterest 类的默认构造函数定义
46// 用于初始化 RegionOfInterest 类的对象,将各个成员变量初始化为默认值
48{
49 // 初始化成员变量 m_x_offset 为0,m_x_offset 类型可能为 unsigned long,用于表示某个偏移量(具体取决于业务逻辑)
50 m_x_offset = 0;
51 // 初始化成员变量 m_y_offset 为0,同样用于表示偏移量相关含义
52 m_y_offset = 0;
53 // 初始化成员变量 m_height 为0,可能用于表示区域的高度相关概念
54 m_height = 0;
55 // 初始化成员变量 m_width 为0,可能用于表示区域的宽度相关概念
56 m_width = 0;
57 // 初始化成员变量 m_do_rectify 为 false,可能用于指示是否进行某种校正操作(具体依业务而定)
58 m_do_rectify = false;
59}
60// RegionOfInterest 类的析构函数定义
61// 通常用于释放对象占用的资源等清理工作,但此处为空实现,可能意味着该类没有需要手动释放的资源
65// RegionOfInterest 类的拷贝构造函数定义
66// 用于通过已有的 RegionOfInterest 对象 x 来创建一个新的对象,新对象的各成员变量值与 x 的对应成员变量值相同
68 const RegionOfInterest& x)
69{
70 m_x_offset = x.m_x_offset;
71 m_y_offset = x.m_y_offset;
72 m_height = x.m_height;
73 m_width = x.m_width;
74 m_do_rectify = x.m_do_rectify;
75}
76// RegionOfInterest 类的移动构造函数定义
77// 用于通过将已有的 RegionOfInterest 对象 x 的资源“移动”到新创建的对象中(通常涉及资源所有权的转移,且不进行深拷贝等开销较大的操作),新对象获取 x 的各成员变量值
78// noexcept 表示该函数承诺不会抛出异常,有助于编译器进行一些优化等操作
80 RegionOfInterest&& x) noexcept
81{
82 m_x_offset = x.m_x_offset;
83 m_y_offset = x.m_y_offset;
84 m_height = x.m_height;
85 m_width = x.m_width;
86 m_do_rectify = x.m_do_rectify;
87}
88// RegionOfInterest 类的拷贝赋值运算符重载函数定义
89// 用于将一个 RegionOfInterest 对象 x 的各成员变量值赋值给当前对象(*this),使得当前对象的状态与 x 相同,最后返回当前对象的引用,以支持连续赋值操作
91 const RegionOfInterest& x)
92{
93 m_x_offset = x.m_x_offset;
94 m_y_offset = x.m_y_offset;
95 m_height = x.m_height;
96 m_width = x.m_width;
97 m_do_rectify = x.m_do_rectify;
98
99 return *this;
100}
101// RegionOfInterest 类的移动赋值运算符重载函数定义
102// 类似移动构造函数,将另一个 RegionOfInterest 对象 x 的资源“移动”到当前对象(*this)中,实现资源所有权的转移等操作,最后返回当前对象的引用
104 RegionOfInterest&& x) noexcept
105{
106 m_x_offset = x.m_x_offset;
107 m_y_offset = x.m_y_offset;
108 m_height = x.m_height;
109 m_width = x.m_width;
110 m_do_rectify = x.m_do_rectify;
111
112 return *this;
113}
114// 重载相等运算符(==)函数定义
115// 用于比较当前 RegionOfInterest 对象与另一个 RegionOfInterest 对象 x 是否相等,通过逐个比较各成员变量的值来确定是否相等,返回比较结果(true表示相等,false表示不等)
117 const RegionOfInterest& x) const
118{
119 return (m_x_offset == x.m_x_offset && m_y_offset == x.m_y_offset && m_height == x.m_height && m_width == x.m_width && m_do_rectify == x.m_do_rectify);
120}
121// 重载不等运算符(!=)函数定义
122// 通过调用相等运算符(==)取反的方式来判断当前对象与 x 是否不相等,返回比较结果(true表示不等,false表示相等)
124 const RegionOfInterest& x) const
125{
126 return !(*this == x);
127}
128// 获取 RegionOfInterest 对象最大CDR序列化大小的函数定义
129// 参数 current_alignment 可能用于表示当前的对齐方式等相关信息,但此处将其强制转换为 void 类型,表示未使用该参数
130// 直接返回预定义的 sensor_msgs_msg_RegionOfInterest_max_cdr_typesize 作为最大序列化大小
137// 获取 RegionOfInterest 对象实际CDR序列化大小的函数定义
138// 参数 data 为要序列化的 RegionOfInterest 对象,current_alignment 用于处理对齐相关情况
139// 函数内先记录初始的对齐值 initial_alignment,然后通过一系列计算(考虑了对齐要求以及各成员变量序列化所需空间)来更新 current_alignment
140// 最后返回当前对齐值与初始对齐值的差值,即序列化该对象实际占用的空间大小
143 size_t current_alignment)
144{
145 (void)data;
147 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
148 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
149 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
150 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
151 current_alignment += 1 + eprosima::fastcdr::Cdr::alignment(current_alignment, 1);
152
154}
155// 对 RegionOfInterest 对象进行序列化的函数定义
156// 参数 scdr 是一个 eprosima::fastcdr::Cdr 类型的对象,用于执行序列化操作,将当前 RegionOfInterest 对象的各成员变量依次序列化到 scdr 中
158 eprosima::fastcdr::Cdr& scdr) const
159{
160 scdr << m_x_offset;
161 scdr << m_y_offset;
162 scdr << m_height;
163 scdr << m_width;
164 scdr << m_do_rectify;
165}
166// 对 RegionOfInterest 对象进行反序列化的函数定义
167// 参数 dcdr 是一个 eprosima::fastcdr::Cdr 类型的对象,用于执行反序列化操作,从 dcdr 中依次读取数据并赋值给当前 RegionOfInterest 对象的各成员变量
169 eprosima::fastcdr::Cdr& dcdr)
170{
171 dcdr >> m_x_offset;
172 dcdr >> m_y_offset;
173 dcdr >> m_height;
174 dcdr >> m_width;
175 dcdr >> m_do_rectify;
176}
177
178/*!
179 * @brief 此函数用于设置成员变量 x_offset 的值
180 * @param _x_offset 要赋给成员变量 m_x_offset 的新值
181 */
183 uint32_t _x_offset)
184{
185 m_x_offset = _x_offset;
186}
187
188/*!
189 * @brief 此函数用于返回成员变量 x_offset 的值
190 * @return 成员变量 m_x_offset 的当前值
191 */
193{
194 return m_x_offset;
195}
196
197/*!
198 * @brief 此函数用于返回成员变量 x_offset 的引用
199 * @return 成员变量 m_x_offset 的引用,可用于在外部直接修改该成员变量的值
200 */
202{
203 return m_x_offset;
204}
205
206/*!
207 * @brief 此函数用于设置成员变量 y_offset 的值
208 * @param _y_offset 要赋给成员变量 m_y_offset 的新值
209 */
211 uint32_t _y_offset)
212{
213 m_y_offset = _y_offset;
214}
215
216/*!
217 * @brief 此函数用于返回成员变量 y_offset 的值
218 * @return 成员变量 m_y_offset 的当前值
219 */
221{
222 return m_y_offset;
223}
224
225/*!
226 * @brief 此函数用于返回成员变量 y_offset 的引用
227 * @return 成员变量 m_y_offset 的引用,可用于在外部直接修改该成员变量的值
228 */
230{
231 return m_y_offset;
232}
233
234/*!
235 * @brief 此函数用于设置成员变量 height 的值
236 * @param _height 要赋给成员变量 m_height 的新值
237 */
239 uint32_t _height)
240{
241 m_height = _height;
242}
243
244/*!
245 * @brief 此函数用于返回成员变量 height 的值
246 * @return 成员变量 m_height 的当前值
247 */
249{
250 return m_height;
251}
252
253/*!
254 * @brief 此函数用于返回成员变量 height 的引用
255 * @return 成员变量 m_height 的引用,可用于在外部直接修改该成员变量的值
256 */
258{
259 return m_height;
260}
261
262/*!
263 * @brief 此函数用于设置成员变量 width 的值
264 * @param _width 要赋给成员变量 m_width 的新值
265 */
267 uint32_t _width)
268{
269 m_width = _width;
270}
271
272/*!
273 * @brief 此函数用于返回成员变量 width 的值
274 * @return 成员变量 m_width 的当前值
275 */
277{
278 return m_width;
279}
280
281/*!
282 * @brief 此函数用于返回成员变量 width 的引用
283 * @return 成员变量 m_width 的引用,可用于在外部直接修改该成员变量的值
284 */
286{
287 return m_width;
288}
289
290/*!
291 * @brief 此函数用于设置成员变量 do_rectify 的值
292 * @param _do_rectify 要赋给成员变量 m_do_rectify 的新值
293 */
295 bool _do_rectify)
296{
297 m_do_rectify = _do_rectify;
298}
299
300/*!
301 * @brief 此函数用于返回成员变量 do_rectify 的值
302 * @return 成员变量 m_do_rectify 的当前值
303 */
305{
306 return m_do_rectify;
307}
308
309/*!
310 * @brief 此函数用于返回成员变量 do_rectify 的引用
311 * @return 成员变量 m_do_rectify 的引用,可用于在外部直接修改该成员变量的值
312 */
314{
315 return m_do_rectify;
316}
317// 获取 RegionOfInterest 对象键的最大CDR序列化大小的函数定义
318// 类似前面获取对象最大CDR序列化大小的函数,此处忽略传入的 current_alignment 参数,直接返回预定义的键最大序列化大小
325// 判断 RegionOfInterest 对象的键是否已定义的函数定义
326// 此处直接返回 false,表示键未定义,具体是否符合业务逻辑需结合实际情况判断
328{
329 return false;
330}
331// 对 RegionOfInterest 对象的键进行序列化的函数定义
332// 参数 scdr 为序列化相关对象,但此处直接将其忽略(通过(void) scdr 语句),可能意味着该对象的键不需要进行实际的序列化操作,具体取决于业务逻辑
334 eprosima::fastcdr::Cdr& scdr) const
335{
336 (void) scdr;
337}
#define sensor_msgs_msg_RegionOfInterest_max_cdr_typesize
#define sensor_msgs_msg_RegionOfInterest_max_key_cdr_typesize
return current_alignment initial_alignment
This class represents the structure RegionOfInterest defined by the user in the IDL file.
eProsima_user_DllExport uint32_t x_offset() const
This function returns the value of member x_offset
eProsima_user_DllExport uint32_t width() const
This function returns the value of member width
static eProsima_user_DllExport size_t getCdrSerializedSize(const sensor_msgs::msg::RegionOfInterest &data, size_t current_alignment=0)
This function returns the serialized size of a data depending on the buffer alignment.
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of the Key of an object depending on the buffer ali...
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
This function deserializes an object using CDR serialization.
eProsima_user_DllExport bool operator==(const RegionOfInterest &x) const
Comparison operator.
eProsima_user_DllExport bool operator!=(const RegionOfInterest &x) const
Comparison operator.
eProsima_user_DllExport bool do_rectify() const
This function returns the value of member do_rectify
eProsima_user_DllExport RegionOfInterest()
Default constructor.
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
This function serializes an object using CDR serialization.
eProsima_user_DllExport RegionOfInterest & operator=(const RegionOfInterest &x)
Copy assignment.
eProsima_user_DllExport uint32_t y_offset() const
This function returns the value of member y_offset
eProsima_user_DllExport ~RegionOfInterest()
Default destructor.
static eProsima_user_DllExport bool isKeyDefined()
This function tells you if the Key has been defined for this type
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
This function serializes the key members of an object using CDR serialization.
eProsima_user_DllExport uint32_t height() const
This function returns the value of member height
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
This function returns the maximum serialized size of an object depending on the buffer alignment.