CARLA
 
载入中...
搜索中...
未找到
Twist.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 Twist.cpp
17 * 此源文件包含在 IDL 文件中描述的类型的定义。
18 *
19 * 此文件是由工具 gen 生成的。
20 */
21
22#ifdef _WIN32
23// 在 Visual Studio 中删除链接器警告 LNK4221
24namespace {
25char dummy;// 定义一个 dummy 变量以防止链接器警告
26} // namespace
27#endif // _WIN32
28
29#include "Twist.h"// 包含 Twist.h 头文件
30#include <fastcdr/Cdr.h>// 包含 Fast CDR 序列化库
31
32#include <fastcdr/exceptions/BadParamException.h>// 包含异常处理
33using namespace eprosima::fastcdr::exception;// 使用 Fast CDR 的异常命名空间
34
35#include <utility>// 包含实用工具头文件
36// 定义几何消息类型 Twist 和 Vector3 的最大 CDR 序列化大小
37#define geometry_msgs_msg_Vector3_max_cdr_typesize 24ULL;// Vector3 的最大 CDR 序列化大小为 24 字节
38#define geometry_msgs_msg_Twist_max_cdr_typesize 48ULL;// Twist 的最大 CDR 序列化大小为 48 字节
39#define geometry_msgs_msg_Vector3_max_key_cdr_typesize 0ULL;// Vector3 的最大键 CDR 序列化大小为 0(无键)
40#define geometry_msgs_msg_Twist_max_key_cdr_typesize 0ULL;// Twist 的最大键 CDR 序列化大小为 0(无键)
41// Twist 类的构造函数
45// Twist 类的析构函数
49// 拷贝构造函数,复制另一个 Twist 对象的成员
51 const Twist& x)
52{
53 m_linear = x.m_linear;// 复制线性速度
54 m_angular = x.m_angular;// 复制角速度
55}
56// 移动构造函数,移动另一个 Twist 对象的成员
58 Twist&& x) noexcept
59{
60 m_linear = std::move(x.m_linear);// 移动线性速度
61 m_angular = std::move(x.m_angular);// 移动角速度
62}
63// 拷贝赋值运算符,复制另一个 Twist 对象的成员
65 const Twist& x)
66{
67 m_linear = x.m_linear;// 复制线性速度
68 m_angular = x.m_angular;// 复制角速度
69
70 return *this;// 返回当前对象的引用
71}
72// 移动赋值运算符,移动另一个 Twist 对象的成员
74 Twist&& x) noexcept
75{
76 m_linear = std::move(x.m_linear);// 移动线性速度
77 m_angular = std::move(x.m_angular);// 移动角速度
78
79 return *this;// 返回当前对象的引用
80}
81// 判断两个 Twist 对象是否相等
83 const Twist& x) const
84{
85 return (m_linear == x.m_linear && m_angular == x.m_angular);// 比较线性速度和角速度
86}
87// 判断两个 Twist 对象是否不相等
89 const Twist& x) const
90{
91 return !(*this == x);// 通过相等运算符的结果判断
92}
93// 获取 Twist 的最大 CDR 序列化大小
95 size_t current_alignment)
96{
97 static_cast<void>(current_alignment);// 防止未使用变量的警告
98 return geometry_msgs_msg_Twist_max_cdr_typesize;// 返回最大序列化大小
99}
100// 获取 Twist 的 CDR 序列化大小
102 const geometry_msgs::msg::Twist& data,
103 size_t current_alignment)
104{
105 size_t initial_alignment = current_alignment;// 保存初始对齐
106 current_alignment += geometry_msgs::msg::Vector3::getCdrSerializedSize(data.linear(), current_alignment);// 计算线性速度的序列化大小
108
109 return current_alignment - initial_alignment;// 返回序列化大小
110}
111// 序列化 Twist 对象
113 eprosima::fastcdr::Cdr& scdr) const
114{
115 scdr << m_linear;// 序列化线性速度
116 scdr << m_angular;// 序列化角速度
117}
118// 反序列化 Twist 对象
120 eprosima::fastcdr::Cdr& dcdr)
121{
122 dcdr >> m_linear;// 反序列化线性速度
123 dcdr >> m_angular;// 反序列化角速度
124}
125
126*!
127 * @brief 此函数复制成员 linear 的值
128 * @param _linear 要复制到成员 linear 的新值
129 */
131 const geometry_msgs::msg::Vector3& _linear)
132{
133 m_linear = _linear;// 复制线性速度
134}
135
136/*!
137 * @brief 此函数移动成员 linear 的值
138 * @param _linear 要移动到成员 linear 的新值
139 */
142{
143 m_linear = std::move(_linear);// 移动线性速度
144}
145
146/*!
147 * @brief 此函数返回成员 linear 的常量引用
148 * @return 成员 linear 的常量引用
149 */
151{
152 return m_linear;// 返回线性速度的常量引用
153}
154
155/*!
156 * @brief 此函数返回成员 linear 的引用
157 * @return 成员 linear 的引用
158 */
160{
161 return m_linear;// 返回线性速度的引用
162}
163
164/*!
165 * @brief 此函数复制成员 angular 的值
166 * @param _angular 要复制到成员 angular 的新值
167 */
169 const geometry_msgs::msg::Vector3& _angular)
170{
171 m_angular = _angular;// 复制角速度
172}
173
174/*!
175 * @brief 此函数移动成员 angular 的值
176 * @param _angular 要移动到成员 angular 的新值
177 */
180{
181 m_angular = std::move(_angular);// 移动角速度
182}
183
184/*!
185 * @brief 此函数返回成员 angular 的常量引用
186 * @return 成员 angular 的常量引用
187 */
189{
190 return m_angular;// 返回角速度的常量引用
191}
192
193/*!
194 * @brief 此函数返回成员 angular 的引用
195 * @return 成员 angular 的引用
196 */
198{
199 return m_angular;// 返回角速度的引用
200}
201
202// 获取 Twist 的最大键 CDR 序列化大小
204 size_t current_alignment)
205{
206 static_cast<void>(current_alignment);// 防止未使用变量的警告
207 return geometry_msgs_msg_Twist_max_key_cdr_typesize;// 返回最大键序列化大小
208}
209// 判断是否定义了键
211{
212 return false;// Twist 类型没有键
213}
214// 序列化键(无操作)
216 eprosima::fastcdr::Cdr& scdr) const
217{
218 (void) scdr;// 防止未使用变量的警告
219}
#define geometry_msgs_msg_Twist_max_cdr_typesize
Definition Odometry.cpp:42
#define geometry_msgs_msg_Twist_max_key_cdr_typesize
Definition Odometry.cpp:52
return current_alignment initial_alignment
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
Definition Twist.cpp:94
eProsima_user_DllExport void angular(const geometry_msgs::msg::Vector3 &_angular)
此函数复制成员 angular 的值
Definition Twist.cpp:168
eProsima_user_DllExport bool operator!=(const Twist &x) const
Definition Twist.cpp:88
eProsima_user_DllExport Twist()
Definition Twist.cpp:42
eProsima_user_DllExport ~Twist()
Definition Twist.cpp:46
eProsima_user_DllExport Twist & operator=(const Twist &x)
Definition Twist.cpp:64
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
Definition Twist.cpp:119
比较操作符 eProsima_user_DllExport bool operator==(const Twist &x) const
Definition Twist.cpp:82
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
Definition Twist.cpp:215
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Twist &data, size_t current_alignment=0)
Definition Twist.cpp:101
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
Definition Twist.cpp:203
geometry_msgs::msg::Vector3 m_linear
Definition Twist.h:182
geometry_msgs::msg::Vector3 m_angular
Definition Twist.h:183
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
Definition Twist.cpp:112
static eProsima_user_DllExport bool isKeyDefined()
Definition Twist.cpp:210
eProsima_user_DllExport void linear(const geometry_msgs::msg::Vector3 &_linear)
Definition Twist.cpp:130
eProsima_user_DllExport const geometry_msgs::msg::Vector3 & linear() const
此函数返回成员 linear 的常量引用
Definition Twist.cpp:150
eProsima_user_DllExport const geometry_msgs::msg::Vector3 & angular() const
此函数返回成员 angular 的常量引用
Definition Twist.cpp:188
此类表示用户在 IDL 文件中定义的 Vector3 结构。 <>
Definition Vector3.h:72
static eProsima_user_DllExport size_t getCdrSerializedSize(const geometry_msgs::msg::Vector3 &data, size_t current_alignment=0)
此函数返回数据的序列化大小 取决于缓冲区对齐。
Definition Vector3.cpp:111