CARLA
 
载入中...
搜索中...
未找到
TransformStamped.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 * @file TransformStamped.cpp
16 * This source file contains the definition of the described types in the IDL file.
17 *
18 * This file was generated by the tool gen.
19 */
20#ifdef _WIN32
21// Remove linker warning LNK4221 on Visual Studio
22namespace {
23char dummy;
24} // namespace
25#endif // _WIN32
26#include "TransformStamped.h"
27#include <fastcdr/Cdr.h>
28#include <fastcdr/exceptions/BadParamException.h>
29using namespace eprosima::fastcdr::exception;
30#include <utility>
31// 以下定义了各类消息结构体在CDR序列化时的最大类型尺寸,用于后续序列化相关操作中判断空间等情况
32#define geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;
33#define geometry_msgs_msg_Transform_max_cdr_typesize 56ULL;
34#define std_msgs_msg_Time_max_cdr_typesize 8ULL;
35#define geometry_msgs_msg_TransformStamped_max_cdr_typesize 584ULL;
36#define geometry_msgs_msg_Quaternion_max_cdr_typesize 32ULL;
37#define std_msgs_msg_Header_max_cdr_typesize 268ULL;
38#define geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;
39#define geometry_msgs_msg_Transform_max_key_cdr_typesize 0ULL;
40#define std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
41#define geometry_msgs_msg_TransformStamped_max_key_cdr_typesize 0ULL;
42#define geometry_msgs_msg_Quaternion_max_key_cdr_typesize 0ULL;
43#define std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
44// 定义geometry_msgs::msg::TransformStamped类的默认构造函数
45// 用于初始化该类对象的各个成员变量
47{
48 // 初始化std_msgs::msg::Header类型的成员变量m_header,此处可能按照其默认构造方式进行初始化(具体取决于Header类的实现)
49 // 初始化字符串类型的成员变量m_child_frame_id为空字符串,通常用于标识子坐标系的ID等相关用途
51// 初始化geometry_msgs::msg::Transform类型的成员变量m_transform,同样可能按照其默认构造方式初始化(取决于Transform类的实现)
52}
53// 定义geometry_msgs::msg::TransformStamped类的析构函数
54// 用于释放该类对象所占用的资源(如果有需要释放的相关资源的话,此处代码未体现具体释放操作,可能是依赖成员变量自身的析构机制)
58// 定义拷贝构造函数,用于通过已有的TransformStamped对象x来初始化一个新的对象
59// 实现将x对象的各个成员变量的值复制到新创建的对象中
61 const TransformStamped& x)
62{
63 m_header = x.m_header;
64 m_child_frame_id = x.m_child_frame_id;
65 m_transform = x.m_transform;
66}
67// 定义移动构造函数,用于通过右值引用的方式将已有的TransformStamped对象x的资源转移给新创建的对象
68// 相比拷贝构造函数,移动构造函数更高效,避免不必要的资源复制,而是直接转移资源所有权(如std::move操作体现的那样)
70 TransformStamped&& x) noexcept
71{
72 m_header = std::move(x.m_header);
73 m_child_frame_id = std::move(x.m_child_frame_id);
74 m_transform = std::move(x.m_transform);
75}
76// 定义赋值运算符重载函数(拷贝赋值),用于将一个TransformStamped对象x的值赋值给当前对象
77// 使得当前对象的各个成员变量的值与x对象对应成员变量的值相同
79 const TransformStamped& x)
80{
81 m_header = x.m_header;
82 m_child_frame_id = x.m_child_frame_id;
83 m_transform = x.m_transform;
84 return *this;
85}
86// 定义赋值运算符重载函数(移动赋值),通过右值引用的方式将一个TransformStamped对象x的资源转移给当前对象
87// 实现资源的高效转移赋值,类似移动构造函数的原理
89 TransformStamped&& x) noexcept
90{
91 m_header = std::move(x.m_header);
92 m_child_frame_id = std::move(x.m_child_frame_id);
93 m_transform = std::move(x.m_transform);
94 return *this;
95}
96// 定义相等比较运算符重载函数,用于判断当前对象与另一个TransformStamped对象x是否相等
97// 通过比较各个成员变量(m_header、m_child_frame_id、m_transform)是否分别相等来确定两个对象整体是否相等
99 const TransformStamped& x) const
100{
101 return (m_header == x.m_header && m_child_frame_id == x.m_child_frame_id && m_transform == x.m_transform);
102}
103// 定义不等比较运算符重载函数,基于相等比较运算符的结果取反来判断两个对象是否不相等
105 const TransformStamped& x) const
106{
107 return !(*this == x);
108}
109// 获取该对象在CDR序列化时的最大尺寸,此处当前实现直接返回预定义的最大尺寸值
110// 参数current_alignment在当前代码中未实际使用(只是为了符合函数接口定义的形式参数要求)
117// 计算给定的TransformStamped对象data在CDR序列化后的实际尺寸大小
118// 通过依次计算其成员变量(header、child_frame_id、transform)序列化后的尺寸总和来得到整体尺寸
119// 参数current_alignment用于处理对齐相关问题,记录当前的对齐情况,并在计算过程中更新
122 size_t current_alignment)
123{
125 current_alignment += std_msgs::msg::Header::getCdrSerializedSize(data.header(), current_alignment);
126 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4) + data.child_frame_id().size() + 1;
128
130}
131// 将该对象的各个成员变量按照CDR格式进行序列化,写入到给定的Cdr对象scdr中
132// 依次序列化m_header、m_child_frame_id、m_transform成员变量
134 eprosima::fastcdr::Cdr& scdr) const
135{
136 scdr << m_header;
137 scdr << m_child_frame_id.c_str();
138 scdr << m_transform;
139}
140// 从给定的Cdr对象dcdr中按照CDR格式进行反序列化操作,读取数据并赋值给该对象的各个成员变量
141// 依次反序列化读取数据到m_header、m_child_frame_id、m_transform成员变量
143 eprosima::fastcdr::Cdr& dcdr)
144{
145 dcdr >> m_header;
146 dcdr >> m_child_frame_id;
147 dcdr >> m_transform;
148}
149
150/*!
151 * 该函数用于将传入的新的std_msgs::msg::Header对象的值复制到当前对象的m_header成员变量中
152 */
154 const std_msgs::msg::Header& _header)
155{
156 m_header = _header;
157}
158
159/*!
160 * 该函数用于将传入的std_msgs::msg::Header对象(以右值引用方式传入)的资源移动到当前对象的m_header成员变量中
161 */
163 std_msgs::msg::Header&& _header)
164{
165 m_header = std::move(_header);
166}
167
168/*!
169 * 该函数返回当前对象的m_header成员变量的常量引用,外部通过该引用可以获取但不能修改其值
170 */
171const std_msgs::msg::Header& geometry_msgs::msg::TransformStamped::header() const
172{
173 return m_header;
174}
175/*!
176 * 该函数返回当前对象的m_header成员变量的普通引用,外部通过该引用可以获取和修改其值
177 */
179{
180 return m_header;
181}
182
183/*!
184 * 该函数用于将传入的新的字符串值复制到当前对象的m_child_frame_id成员变量中
185 */
187 const std::string& _child_frame_id)
188{
189 m_child_frame_id = _child_frame_id;
190}
191
192/*!
193 * 该函数用于将传入的字符串对象(以右值引用方式传入)的值移动到当前对象的m_child_frame_id成员变量中
194 */
196 std::string&& _child_frame_id)
197{
198 m_child_frame_id = std::move(_child_frame_id);
199}
200
201/*!
202 * 该函数返回当前对象的m_child_frame_id成员变量的常量引用,外部通过该引用可以获取但不能修改其值
203 */
205{
206 return m_child_frame_id;
207}
208
209/*!
210 * 该函数返回当前对象的m_child_frame_id成员变量的普通引用,外部通过该引用可以获取和修改其值
211 */
213{
214 return m_child_frame_id;
215}
216
217/*!
218 * 该函数用于将传入的新的geometry_msgs::msg::Transform对象的值复制到当前对象的m_transform成员变量中
219 */
221 const geometry_msgs::msg::Transform& _transform)
222{
223 m_transform = _transform;
224}
225
226/*!
227 * 该函数用于将传入的geometry_msgs::msg::Transform对象(以右值引用方式传入)的资源移动到当前对象的m_transform成员变量中
228 */
231{
232 m_transform = std::move(_transform);
233}
234
235/*!
236 * 该函数返回当前对象的m_transform成员变量的常量引用,外部通过该引用可以获取但不能修改其值
237 */
242
243/*!
244 * 该函数返回当前对象的m_transform成员变量的普通引用,外部通过该引用可以获取和修改其值
245 */
250// 获取该对象在CDR序列化时键(Key)的最大尺寸,此处当前实现直接返回预定义的最大尺寸值(当前为0)
251// 参数current_alignment在当前代码中未实际使用(只是为了符合函数接口定义的形式参数要求)
258// 判断该对象的键(Key)是否已定义,当前实现直接返回false,表示未定义键
260{
261 return false;
262}
263// 对该对象的键(Key)进行CDR序列化操作,当前代码中只是传入了scdr参数但未实际进行有效操作(通过(void) scdr; 避免编译警告)
264// 可能后续需要根据具体的键定义情况来完善此处的序列化逻辑
266 eprosima::fastcdr::Cdr& scdr) const
267{
268 (void) scdr;
269}
return current_alignment initial_alignment
#define geometry_msgs_msg_TransformStamped_max_cdr_typesize
Definition TFMessage.cpp:41
#define geometry_msgs_msg_TransformStamped_max_key_cdr_typesize
Definition TFMessage.cpp:48
此类表示用户在 IDL 文件中定义的 TransformStamped 结构。 <>
geometry_msgs::msg::Transform m_transform
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
此函数返回对象键的最大序列化尺寸,取决于缓冲区对齐。
eProsima_user_DllExport bool operator!=(const TransformStamped &x) const
比较运算符。
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::TransformStamped &data, size_t current_alignment=0)
此函数返回数据的序列化尺寸,取决于缓冲区对齐。
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
此函数返回对象的最大序列化尺寸,取决于缓冲区对齐。
eProsima_user_DllExport ~TransformStamped()
默认析构函数。
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
此函数使用 CDR 序列化对象反序列化对象。
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
此函数使用 CDR 序列化对象序列化对象。
eProsima_user_DllExport bool operator==(const TransformStamped &x) const
比较运算符。
eProsima_user_DllExport const std::string & child_frame_id() const
此函数返回成员 child_frame_id 的常量引用。
eProsima_user_DllExport void transform(const geometry_msgs::msg::Transform &_transform)
此函数复制成员 transform 的值。
eProsima_user_DllExport TransformStamped()
默认构造函数。
eProsima_user_DllExport const geometry_msgs::msg::Transform & transform() const
此函数返回成员 transform 的常量引用。
static eProsima_user_DllExport bool isKeyDefined()
此函数告知您是否已为此类型定义键。
eProsima_user_DllExport void child_frame_id(const std::string &_child_frame_id)
此函数复制成员 child_frame_id 的值。
eProsima_user_DllExport void header(const std_msgs::msg::Header &_header)
此函数复制成员 header 的值。
eProsima_user_DllExport TransformStamped & operator=(const TransformStamped &x)
拷贝赋值运算符。
eProsima_user_DllExport const std_msgs::msg::Header & header() const
此函数返回成员 header 的常量引用。
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
此函数使用 CDR 序列化对象序列化对象的键成员。
此类表示用户在IDL文件中定义的Transform结构。
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Transform &data, size_t current_alignment=0)
此函数根据缓冲区对齐方式,返回给定数据的序列化大小。