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