CARLA
 
载入中...
搜索中...
未找到
TFMessage.h
浏览该文件的文档.
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使用此文件,除非符合许可证要求。
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.h
17 * 此头文件包含了在IDL文件(接口描述语言文件)中所描述类型的声明。
18 * 该文件由名为“gen”的工具生成。
19 */
20
21#ifndef _FAST_DDS_GENERATED_TF2_MSGS_MSG_TFMESSAGE_H_
22#define _FAST_DDS_GENERATED_TF2_MSGS_MSG_TFMESSAGE_H_
23
24// 引入 TransformStamped.h 头文件,可能其中定义了 TransformStamped 类型,
25// 该类型与 TFMessage 类中的成员变量相关,用于存储具体的变换信息
26#include "TransformStamped.h"
27
28// 引入 FastRTPS 库中用于处理固定大小字符串的头文件,
29// 或许在类的实现或相关操作中会用到其提供的字符串处理功能
30#include <fastrtps/utils/fixed_size_string.hpp>
31
32// 引入 C++ 标准库中的一些常用头文件,用于支持后续代码中涉及的不同数据类型和容器操作
33#include <stdint.h>
34#include <array>
35#include <string>
36#include <vector>
37#include <map>
38#include <bitset>
39
40// 以下是针对 Windows 平台下动态链接库相关的宏定义部分
41// 如果在 Windows 平台且定义了 EPROSIMA_USER_DLL_EXPORT 宏,
42// 则将 eProsima_user_DllExport 定义为 __declspec(dllexport),用于导出函数或类,以便在动态链接库外部使用
43#if defined(_WIN32)
44#if defined(EPROSIMA_USER_DLL_EXPORT)
45#define eProsima_user_DllExport __declspec( dllexport )
46#else
47#define eProsima_user_DllExport
48#endif // EPROSIMA_USER_DLL_EXPORT
49#else
50#define eProsima_user_DllExport
51#endif // _WIN32
52
53// 同样是针对 Windows 平台下动态链接库相关的宏定义,根据不同条件定义 TFMessage_DllAPI
54// 如果在 Windows 平台、定义了 EPROSIMA_USER_DLL_EXPORT 且定义了 TFMessage_SOURCE,
55// 则将 TFMessage_DllAPI 定义为 __declspec(dllexport),用于导出;
56// 否则定义为 __declspec(dllimport),用于导入,方便在不同模块间正确使用类或函数
57#if defined(_WIN32)
58#if defined(EPROSIMA_USER_DLL_EXPORT)
59#if defined(TFMessage_SOURCE)
60#define TFMessage_DllAPI __declspec( dllexport )
61#else
62#define TFMessage_DllAPI __declspec( dllimport )
63#endif // TFMessage_SOURCE
64#else
65#define TFMessage_DllAPI
66#endif // EPROSIMA_USER_DLL_EXPORT
67#else
68#define TFMessage_DllAPI
69#endif // _WIN32
70
71// 在 eprosima 命名空间下的 fastcdr 子命名空间中前置声明 Cdr 类,
72// Cdr 类在后续的序列化和反序列化操作中会起到关键作用,
73// 这里只是声明,其具体定义应该在其他包含的相关头文件中提供
74namespace eprosima {
75namespace fastcdr {
76class Cdr;
77} // namespace fastcdr
78} // namespace eprosima
79
80namespace tf2_msgs {
81 namespace msg {
82 // TFMessage 类的定义,它代表了在 IDL 文件中由用户定义的 TFMessage 结构,
83 // 通过 @ingroup TFMESSAGE 注释标记,可能用于特定的消息分组管理(例如文档生成或者代码模块化组织等方面)
85 {
86 public:
87 // 默认构造函数声明,用于创建 TFMessage 类的对象实例,
88 // 使用 eProsima_user_DllExport 宏标记,意味着在符合相应条件(如 Windows 平台动态链接库相关设置)时,
89 // 该函数可以正确地被导出供外部使用,函数体的具体初始化逻辑未在此处体现,但可能涉及对成员变量的默认设置等操作
91
92 // 默认析构函数声明,用于释放 TFMessage 类对象占用的资源,
93 // 虽然当前函数体为空,但在完整的类实现中可能会负责清理如动态分配内存等相关资源,
94 // 确保对象生命周期结束时内存管理的正确性,同样使用相应宏标记以适配动态链接库相关情况
96
97 // 拷贝构造函数声明,根据传入的另一个 TFMessage 对象创建一个新的相同副本,
98 // 参数 x 是一个 const 引用,保证不会修改传入的原对象,
99 // 通过 eProsima_user_DllExport 宏标记用于动态链接库相关的函数导出,
100 // 其内部实现应该会对原对象的各个成员变量进行深拷贝,以保证新对象与原对象的数据独立性
102 const TFMessage& x);
103
104 // 移动构造函数声明,通过移动语义将传入的 TFMessage 对象的资源所有权转移到新创建的对象中,
105 // 这样可以提高性能,特别是对于包含大量数据或者复杂资源管理的对象,
106 // 使用 noexcept 关键字表示该函数不会抛出异常(通常在移动操作能保证不抛异常的情况下使用),
107 // 并用 eProsima_user_DllExport 宏标记以便在动态链接库相关场景下正确导出使用
109 TFMessage&& x) noexcept;
110
111 // 拷贝赋值运算符重载声明,用于将一个 TFMessage 对象的值赋给当前对象,
112 // 遵循拷贝语义进行数据复制,使得当前对象获取传入对象的副本,
113 // 通过 eProsima_user_DllExport 宏标记以符合动态链接库函数导出要求,
114 // 实现中会逐个对成员变量进行赋值操作
116 const TFMessage& x);
117
118 // 移动赋值运算符重载声明,通过移动语义将一个 TFMessage 对象的资源所有权转移给当前对象,
119 // 避免不必要的拷贝开销,提升赋值操作的效率,
120 // 使用 noexcept 表示不会抛出异常,且通过 eProsima_user_DllExport 宏标记用于动态链接库相关使用,
121 // 其操作会将传入对象的资源有效转移到当前对象中
123 TFMessage&& x) noexcept;
124
125 // 比较运算符 == 的重载声明,用于比较当前对象与传入的 TFMessage 对象是否相等,
126 // 通过比较对象内部的各个成员变量(此处主要涉及 m_transforms 向量中的元素等)来确定整体对象是否相等,
127 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关的函数导出,方便在代码中判断两个 TFMessage 对象的内容一致性
129 const TFMessage& x) const;
130
131 // 比较运算符!= 的重载声明,通过调用 == 运算符并取反来判断当前对象与传入的 TFMessage 对象是否不相等,
132 // 基于 == 运算符实现相反的比较逻辑,方便在不同场景下使用,同样使用相应宏标记用于动态链接库函数导出
134 const TFMessage& x) const;
135
136 // 此函数用于拷贝成员变量 transforms 的值,
137 // 传入一个新的 std::vector<geometry_msgs::msg::TransformStamped> 类型对象,
138 // 将其内容复制给成员变量 m_transforms,遵循拷贝语义进行赋值,
139 // 通过 eProsima_user_DllExport 宏标记以适配动态链接库相关的函数导出,方便外部更新该成员变量的值
141 const std::vector<geometry_msgs::msg::TransformStamped>& _transforms);
142
143 // 此函数用于移动成员变量 transforms 的值,
144 // 传入一个新的 std::vector<geometry_msgs::msg::TransformStamped> 类型对象,
145 // 通过移动语义将其资源所有权转移给成员变量 m_transforms,提升性能(适用于临时对象等情况),
146 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,方便外部以移动方式更新该成员变量
148 std::vector<geometry_msgs::msg::TransformStamped>&& _transforms);
149
150 // 此函数返回成员变量 transforms(即 m_transforms)的常量引用,
151 // 外部可以通过该引用获取成员变量的值,但不能修改它,提供了一种只读的访问方式,保障数据的安全性,
152 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,便于外部代码获取变换信息但不改变其内容
153 eProsima_user_DllExport const std::vector<geometry_msgs::msg::TransformStamped>& transforms() const;
154
155 // 此函数返回成员变量 transforms(即 m_transforms)的普通引用,
156 // 外部可以通过该引用获取和修改成员变量的值,提供了一种可读写的访问方式,方便外部根据需要更新成员变量内容,
157 // 通过 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,使得外部能灵活操作变换信息
158 eProsima_user_DllExport std::vector<geometry_msgs::msg::TransformStamped>& transforms();
159
160 // 此静态函数用于获取对象根据缓冲区对齐情况的最大 CDR 序列化大小,
161 // 参数 current_alignment 表示缓冲区对齐要求,默认值为 0,
162 // 返回的最大序列化大小可用于在一些场景下(如分配缓冲区空间等)提前知晓该类型对象序列化后的最大可能长度,
163 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,方便在不同模块中调用获取该信息
165 size_t current_alignment = 0);
166
167 // 此静态函数用于获取给定数据(一个 TFMessage 类型对象)根据缓冲区对齐情况的 CDR 序列化大小,
168 // 需要传入具体的 TFMessage 类型数据对象以及缓冲区对齐参数(默认为 0),
169 // 返回的序列化大小可用于准确分配内存空间等操作,例如在进行网络传输或存储数据时确保有足够的缓冲区,
170 // 通过 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,便于在相关代码中准确计算序列化长度
172 const tf2_msgs::msg::TFMessage& data,
173 size_t current_alignment = 0);
174
175 // 此函数用于使用 CDR 序列化方式对对象进行序列化操作,
176 // 传入一个 eprosima::fastcdr::Cdr 类型的对象(用于处理序列化的具体细节,如数据格式转换、写入缓冲区等操作),
177 // 将当前 TFMessage 对象转换为适合网络传输或存储等的序列化格式,
178 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,确保在分布式通信场景下对象能正确序列化
180 eprosima::fastcdr::Cdr& cdr) const;
181
182 // 此函数用于使用 CDR 序列化方式对对象进行反序列化操作,
183 // 传入一个 eprosima::fastcdr::Cdr 类型的对象(用于处理反序列化的具体细节,如从缓冲区读取数据、数据格式还原等操作),
184 // 将接收到的序列化数据还原为 TFMessage 类型的对象,
185 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,保障在分布式通信中能从序列化数据恢复出原始对象
187 eprosima::fastcdr::Cdr& cdr);
188
189 // 此静态函数用于获取对象的键(Key)根据缓冲区对齐情况的最大 CDR 序列化大小,
190 // 参数 current_alignment 表示缓冲区对齐情况,默认值为 0,
191 // 返回的大小可用于了解键相关的序列化特性(虽然目前可能只是预留接口,具体实现和用途依赖后续代码),
192 // 通过 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,为后续键相关功能扩展做准备
194 size_t current_alignment = 0);
195
196 // 此静态函数用于判断该类型是否已经定义了键(Key),返回一个 bool 值,
197 // 用于在代码中知晓当前 TFMessage 类型是否具备键相关功能(同样可能是为后续扩展或者特定使用场景预留的接口),
198 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,方便在不同模块中根据此情况进行后续操作
200
201 // 此函数用于使用 CDR 序列化方式对对象的键(Key)成员进行序列化操作,
202 // 传入一个 eprosima::fastcdr::Cdr 类型的对象,将键相关的数据转换为序列化格式(目前可能只是预留接口,具体实现和作用依赖后续实际代码逻辑),
203 // 使用 eProsima_user_DllExport 宏标记用于动态链接库相关函数导出,为可能的基于键的消息路由、过滤等功能扩展提供支持
205 eprosima::fastcdr::Cdr& cdr) const;
206
207 private:
208 // 定义一个私有成员变量 m_transforms,类型为 std::vector<geometry_msgs::msg::TransformStamped>,
209 // 用于存储一系列的变换信息(可能是空间坐标变换等相关数据,具体依赖 TransformStamped 类型的定义),
210 // 由于是私有成员,外部不能直接访问它,只能通过类提供的公有接口来间接操作该变量,增强了类的封装性和数据安全性
211 std::vector<geometry_msgs::msg::TransformStamped> m_transforms;
212
213 };
214 } // namespace msg
215} // namespace tf2_msgs
216
217#endif // _FAST_DDS_GENERATED_TF2_MSGS_MSG_TFMESSAGE_H_
#define eProsima_user_DllExport
Definition CameraInfo.h:44
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 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