CARLA
 
载入中...
搜索中...
未找到
Float32.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 Float32.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 "Float32.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 std_msgs_msg_Float32_max_cdr_typesize 4ULL;
38#define std_msgs_msg_Float32_max_key_cdr_typesize 0ULL;
39
40// 定义std_msgs::msg::Float32类型的默认构造函数
41// 它会将成员变量m_data初始化为0.0
46
47// 定义std_msgs::msg::Float32类型的析构函数,这里析构函数体为空,
48// 通常如果类中没有动态分配的资源需要释放等操作,析构函数可以为空
52
53// 定义std_msgs::msg::Float32类型的拷贝构造函数
54// 它接受一个同类型的常量引用x作为参数,
55// 作用是用传入对象x的成员变量m_data的值来初始化当前正在构造的对象的m_data成员变量,
56// 实现将一个已有对象的数据复制到新创建的同类型对象中
58 const Float32& x)
59{
60 m_data = x.m_data;
61}
62
63// 定义std_msgs::msg::Float32类型的移动构造函数
64// 它接受一个同类型的右值引用x作为参数,且声明为noexcept(表示不会抛出异常),
65// 作用也是将传入对象x的成员变量m_data的值赋给当前正在构造的对象的m_data成员变量,
66// 移动构造函数常用于优化对象资源的转移,比如当涉及到临时对象资源的高效获取时会用到
68 Float32&& x) noexcept
69{
70 m_data = x.m_data;
71}
72
73// 定义std_msgs::msg::Float32类型的赋值运算符重载函数
74// 它接受一个同类型的常量引用x作为参数,
75// 作用是将当前对象的成员变量m_data赋值为传入对象x的m_data的值,
76// 然后返回当前对象的引用,以便支持连续赋值操作,例如 a = b = c这种形式
78 const Float32& x)
79{
80 m_data = x.m_data;
81 return *this;
82}
83
84//这是另一个赋值运算符重载函数,不过这里是针对右值引用的情况
85//定义了Float32类的一个右值引用的赋值运算符重载函数,函数返回Float32类的引用并且标记为noexcept,表示这个函数不会抛出异常
87 Float32&& x) noexcept
88{
89 //将右值对象x的m_data成员的值赋给当前对象的m_data成员
90 m_data = x.m_data;
91 //为了支持链式赋值操作
92 return *this;
93}
94
95//这是一个相等比较运算符(==)的重载函数
96//定义了Float32类的相等比较运算符重载函数,函数接受一个const引用的Float32对象x,并且函数本身也是const的,表示不会修改当前对象的状态
98 const Float32& x) const
99{
100 //比较当前对象的m_data成员和传入对象x的m_data成员是否相等,如果相等则返回true,否则返回false
101 return (m_data == x.m_data);
102}
103
104//这是一个不等比较运算符(!=)的重载函数
106 const Float32& x) const
107{
108 //通过调用前面定义的==运算符重载函数取反来实现!=运算符的功能,如果==返回true,则!=返回false,反之亦然
109 return !(*this == x);
110}
111
112//函数接受一个size_t类型的参数current_alignment,函数的目的可能是获取最大的CDR序列化大小
114 size_t current_alignment)
115{
116 //将current_alignment转换为void类型,可能是为了在函数中表明虽然接收了这个参数,但在当前函数体中暂时不需要使用它
117 static_cast<void>(current_alignment);
118 //返回一个名为std_msgs_msg_Float32_max_cdr_typesize的值,这个值应该是预先定义好的,表示Float32类的最大CDR序列化大小。
120}
121
122//接受一个const引用的Float32对象data和一个size_t类型的current_alignment参数,目的可能是获取给定Float32对象的CDR序列化大小
124 const std_msgs::msg::Float32& data,
125 //创建一个局部变量initial_alignment并初始化为current_alignment的值。
126 size_t current_alignment)
127{
128 (void)data;
129 //一个函数,用于计算与Cdr相关的对齐值
131 current_alignment += 4 + eprosima::fastcdr::Cdr::alignment(current_alignment, 4);
132 //返回计算后的current_alignment与初始initial_alignment的差值,这个差值可能就是Float32对象的CDR序列化大小
134}
135
136//接受一个eprosima::fastcdr::Cdr类型的引用_scdr,目的可能是将Float32类的对象序列化为Cdr格式
138 eprosima::fastcdr::Cdr& scdr) const
139{
140 //将m_data成员的值写入到_scdr对象中,实现序列化操作
141 scdr << m_data;
142}
143
144//函数的目的是从eprosima::fastcdr::Cdr对象dcdr中反序列化数据到m_data成员变量
146 eprosima::fastcdr::Cdr& dcdr)
147{
148 //从dcdr对象中读取数据并存储到m_data中 用于从Cdr对象中提取数据并赋给m_data
149 dcdr >> m_data;
150}
151
152/*!
153 * @brief This function sets a value in member data
154 * @param _data New value for member data
155 */
156//这是一个设置m_data成员变量值的函数
158 float _data)
159{
160 //将传入的参数_data的值赋给m_data成员变量。这个函数提供了一种修改m_data值的途径
161 m_data = _data;
162}
163
164/*!
165 * @brief This function returns the value of member data
166 * @return Value of member data
167 */
168// 这个函数的目的是获取m_data成员变量的值
170{
171 //返回m_data的引用 返回引用可以用于在函数外部直接操作m_data,而不需要进行值的拷贝
172 return m_data;
173}
174
175/*!
176 * @brief This function returns a reference to member data
177 * @return Reference to member data
178 */
179//函数的目的是返回类中的成员变量m_data的引用
181{
182 return m_data;
183}
184
185//函数接受一个size_t类型的参数current_alignment
187 size_t current_alignment)
188{
189 //将current_alignment的值转换为void类型
190 //这是一种抑制编译器警告的方式,表明在这个函数中虽然传入了这个参数,但实际上并没有使用它
191 static_cast<void>(current_alignment);
192 //函数返回一个名为std_msgs_msg_Float32_max_key_cdr_typesize的值
193 //这个值表示Float32类型在特定序列化(可能是与eprosima::fastcdr相关的序列化)时的最大键(key)的CDR序列化大小
195}
196
197//表示函数将返回一个布尔值(true或者false)
199{
200 return false;
201}
202//void表示函数没有返回值
203//函数接受一个eprosima::fastcdr::Cdr&类型的参数scdr
204//这里&表示引用,意味着函数将直接操作传入的scdr对象,而不是创建它的副本。const关键字表示这个函数是一个常量成员函数,即这个函数不会修改类中的成员变量
206 eprosima::fastcdr::Cdr& scdr) const
207{
208 //将scdr转换为void类型
209 //目的是抑制编译器警告,表示虽然传入了scdr这个参数,但在这个函数中没有实际使用它
210 (void) scdr;
211}
#define std_msgs_msg_Float32_max_cdr_typesize
Definition Float32.cpp:37
#define std_msgs_msg_Float32_max_key_cdr_typesize
Definition Float32.cpp:38
return current_alignment initial_alignment
这个类表示用户在IDL文件中定义的Float32结构。
Definition Float32.h:72
eProsima_user_DllExport ~Float32()
默认析构函数。
Definition Float32.cpp:49
eProsima_user_DllExport void deserialize(eprosima::fastcdr::Cdr &cdr)
使用CDR反序列化对象。
Definition Float32.cpp:145
eProsima_user_DllExport Float32 & operator=(const Float32 &x)
拷贝赋值操作符。
Definition Float32.cpp:77
eProsima_user_DllExport bool operator==(const Float32 &x) const
比较操作符。
Definition Float32.cpp:97
static eProsima_user_DllExport size_t getKeyMaxCdrSerializedSize(size_t current_alignment=0)
返回对象的Key的最大序列化大小,取决于缓冲区对齐。
Definition Float32.cpp:186
static eProsima_user_DllExport size_t getCdrSerializedSize(const std_msgs::msg::Float32 &data, size_t current_alignment=0)
返回数据的序列化大小,取决于缓冲区对齐。
Definition Float32.cpp:123
static eProsima_user_DllExport bool isKeyDefined()
告诉你是否为这种类型定义了Key。
Definition Float32.cpp:198
eProsima_user_DllExport void serialize(eprosima::fastcdr::Cdr &cdr) const
使用CDR序列化对象。
Definition Float32.cpp:137
eProsima_user_DllExport bool operator!=(const Float32 &x) const
比较操作符。
Definition Float32.cpp:105
eProsima_user_DllExport void serializeKey(eprosima::fastcdr::Cdr &cdr) const
使用CDR序列化对象的Key成员。
Definition Float32.cpp:205
eProsima_user_DllExport Float32()
默认构造函数。
Definition Float32.cpp:42
static eProsima_user_DllExport size_t getMaxCdrSerializedSize(size_t current_alignment=0)
返回对象的最大序列化大小,取决于缓冲区对齐。
Definition Float32.cpp:113
eProsima_user_DllExport float data() const
获取成员data的值。
Definition Float32.cpp:169