CARLA
 
载入中...
搜索中...
未找到
TFMessage.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 TFMessage.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
29#include "TFMessage.h"
30#include <fastcdr/Cdr.h>
31
32#include <fastcdr/exceptions/BadParamException.h>
33using namespace eprosima::fastcdr::exception;
34
35#include <utility>
36
37#define geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;
38#define geometry_msgs_msg_Transform_max_cdr_typesize 56ULL;
39#define tf2_msgs_msg_TFMessage_max_cdr_typesize 58408ULL;
40#define std_msgs_msg_Time_max_cdr_typesize 8ULL;
41#define geometry_msgs_msg_TransformStamped_max_cdr_typesize 584ULL;
42#define geometry_msgs_msg_Quaternion_max_cdr_typesize 32ULL;
43#define std_msgs_msg_Header_max_cdr_typesize 268ULL;
44#define geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;
45#define geometry_msgs_msg_Transform_max_key_cdr_typesize 0ULL;
46#define tf2_msgs_msg_TFMessage_max_key_cdr_typesize 0ULL;
47#define std_msgs_msg_Time_max_key_cdr_typesize 0ULL;
48#define geometry_msgs_msg_TransformStamped_max_key_cdr_typesize 0ULL;
49#define geometry_msgs_msg_Quaternion_max_key_cdr_typesize 0ULL;
50#define std_msgs_msg_Header_max_key_cdr_typesize 0ULL;
51
52// 默认构造函数,用于创建一个TFMessage类的实例,函数体为空,可能在对象初始化时做一些默认的设置(此处无具体操作)
56
57// 析构函数,用于在对象销毁时执行清理相关的操作,函数体为空,可能此对象销毁时无需额外手动释放资源(此处无具体操作)
61
62// 拷贝构造函数,接受一个同类型的常量引用x,用于根据已有的TFMessage对象x来创建一个新的TFMessage对象,
63// 实现了将x对象中的m_transforms成员变量的值复制到新创建对象的对应成员变量中
65 const TFMessage& x)
66{
67 m_transforms = x.m_transforms;
68}
69
70// 移动构造函数,接受一个同类型的右值引用x,用于通过“窃取”x对象的资源(这里是m_transforms)的方式来高效地创建新对象,
71// 使用std::move将x对象的m_transforms成员转移到新对象中,避免不必要的拷贝开销
73 TFMessage&& x) noexcept
74{
75 m_transforms = std::move(x.m_transforms);
76}
77
78// 拷贝赋值运算符重载,接受一个同类型的常量引用x,用于将x对象的状态复制到当前对象,
79// 即将x对象的m_transforms成员变量的值赋给当前对象的对应成员变量,并返回当前对象的引用,以支持连续赋值操作
81 const TFMessage& x)
82{
83 m_transforms = x.m_transforms;
84
85 return *this;
86}
87
88// 移动赋值运算符重载,接受一个同类型的右值引用x,用于将x对象的资源(这里是m_transforms)转移到当前对象,
89// 避免不必要的拷贝开销,然后返回当前对象的引用,以支持连续赋值操作
91 TFMessage&& x) noexcept
92{
93 m_transforms = std::move(x.m_transforms);
94
95 return *this;
96}
97
98// 相等运算符重载,接受一个同类型的常量引用x,用于比较当前对象和x对象是否相等,
99// 通过比较它们的m_transforms成员变量是否相等来判断整个对象是否相等,返回比较结果(true或false)
101 const TFMessage& x) const
102{
103 return (m_transforms == x.m_transforms);
104}
105// 不等运算符重载,通过调用相等运算符(!(*this == x))取反的方式来判断当前对象和x对象是否不相等,返回相应的布尔值
107 const TFMessage& x) const
108{
109 return !(*this == x);
110}
111
112// 获取最大的CDR序列化尺寸,current_alignment参数表示当前的对齐情况,
113// 这里将current_alignment参数强制转换为void(说明此函数可能没实际用到这个参数),直接返回一个预定义的最大CDR类型尺寸
120
121// 获取给定TFMessage对象的CDR序列化尺寸,data参数是要获取序列化尺寸的对象,current_alignment是当前的对齐情况
122// 首先记录初始的对齐情况,然后进行一些与对齐和计算每个TransformStamped对象序列化尺寸相关的操作,
123// 最后返回计算得到的序列化尺寸(当前对齐减去初始对齐得到实际的尺寸增量)
125 const tf2_msgs::msg::TFMessage& data,
126 size_t current_alignment)
127{
129 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
130
131 for(size_t a = 0; a < data.transforms().size(); ++a)
132 {
134 }
135
137}
138
139// 将对象序列化到给定的eprosima::fastcdr::Cdr对象scdr中,通过将成员变量m_transforms序列化到scdr里来实现整个对象的序列化操作
141 eprosima::fastcdr::Cdr& scdr) const
142{
143 scdr << m_transforms;
144}
145
146// 从给定的eprosima::fastcdr::Cdr对象dcdr中反序列化数据到当前对象,通过从dcdr中读取数据来填充成员变量m_transforms,从而实现对象的重建
148 eprosima::fastcdr::Cdr& dcdr)
149{
150 dcdr >> m_transforms;
151}
152
153/*!
154 * @brief This function copies the value in member transforms
155 * @param _transforms New value to be copied in member transforms
156 */
158 const std::vector<geometry_msgs::msg::TransformStamped>& _transforms)
159{
160 m_transforms = _transforms;
161}
162
163/*!
164 * @brief This function moves the value in member transforms
165 * @param _transforms New value to be moved in member transforms
166 */
168 std::vector<geometry_msgs::msg::TransformStamped>&& _transforms)
169{
170 m_transforms = std::move(_transforms);
171}
172
173/*!
174 * @brief This function returns a constant reference to member transforms
175 * @return Constant reference to member transforms
176 */
177const std::vector<geometry_msgs::msg::TransformStamped>& tf2_msgs::msg::TFMessage::transforms() const
178{
179 return m_transforms;
180}
181
182/*!
183 * @brief This function returns a reference to member transforms
184 * @return Reference to member transforms
185 */
186std::vector<geometry_msgs::msg::TransformStamped>& tf2_msgs::msg::TFMessage::transforms()
187{
188 return m_transforms;
189}
190
197
199{
200 return false;
201}
202
204 eprosima::fastcdr::Cdr& scdr) const
205{
206 (void) scdr;
207}
return current_alignment initial_alignment
#define tf2_msgs_msg_TFMessage_max_key_cdr_typesize
Definition TFMessage.cpp:46
#define tf2_msgs_msg_TFMessage_max_cdr_typesize
Definition TFMessage.cpp:39
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::TransformStamped &data, size_t current_alignment=0)
此函数返回数据的序列化尺寸,取决于缓冲区对齐。
static eProsima_user_DllExport size_t getCdrSerializedSize(const tf2_msgs::msg::TFMessage &data, size_t current_alignment=0)
eProsima_user_DllExport TFMessage & operator=(const TFMessage &x)
Definition TFMessage.cpp:80
std::vector< geometry_msgs::msg::TransformStamped > m_transforms
Definition TFMessage.h:211
static eProsima_user_DllExport bool isKeyDefined()
eProsima_user_DllExport const std::vector< geometry_msgs::msg::TransformStamped > & transforms() const
This function returns a constant reference to member transforms
eProsima_user_DllExport void transforms(const std::vector< geometry_msgs::msg::TransformStamped > &_transforms)
This function copies the value in member transforms
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
eProsima_user_DllExport bool operator!=(const TFMessage &x) const
eProsima_user_DllExport bool operator==(const TFMessage &x) const
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
eProsima_user_DllExport TFMessage()
Definition TFMessage.cpp:53
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
eProsima_user_DllExport ~TFMessage()
Definition TFMessage.cpp:58