CARLA
 
载入中...
搜索中...
未找到
PointFieldPubSubTypes.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 PointFieldPubSubTypes.h
17 * This header file contains the declaration of the serialization functions.
18 *
19 * This file was generated by the tool fastcdrgen.
20 */
21
22#ifndef _FAST_DDS_GENERATED_SENSOR_MSGS_MSG_POINTFIELD_PUBSUBTYPES_H_
23#define _FAST_DDS_GENERATED_SENSOR_MSGS_MSG_POINTFIELD_PUBSUBTYPES_H_
24
25#include <fastdds/dds/topic/TopicDataType.hpp>
26#include <fastrtps/utils/md5.h>
27
28#include "PointField.h"
29
30#if !defined(GEN_API_VER) || (GEN_API_VER != 1)
31#error \
32 Generated PointField is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen.
33#endif // GEN_API_VER
34
35namespace sensor_msgs
36{
37 namespace msg
38 {
39 /*!
40 * @brief This class represents the TopicDataType of the type PointField defined by the user in the IDL file.
41 * @ingroup POINTFIELD
42 */
43// 定义一个名为PointFieldPubSubType的类,它继承自eprosima::fastdds::dds::TopicDataType类,意味着它会继承TopicDataType类中的相关属性和行为,
44// 并且可能会重写一些虚函数来实现针对PointField类型在发布订阅场景下的特定逻辑
45 class PointFieldPubSubType : public eprosima::fastdds::dds::TopicDataType
46 {
47 public:
48// 定义一个类型别名,将PointField类型定义为type,方便在类内部使用该类型时书写更简洁,通常用于增强代码可读性和一致性
50 // 以动态链接库导出(通过eProsima_user_DllExport宏,具体含义依赖对应库的定义)的方式声明PointFieldPubSubType类的构造函数,
51 // 用于创建该类型的对象,其内部可能会进行一些初始化操作,比如设置与PointField类型发布订阅相关的默认参数等
53
54 // 以动态链接库导出的方式声明虚析构函数,用于在对象销毁时进行必要的资源清理工作,
55 // override关键字表示这个析构函数重写了基类(即eprosima::fastdds::dds::TopicDataType类)中的虚析构函数,
56 // 这样能确保在多态销毁对象时执行正确的清理逻辑,符合继承体系下的内存管理要求
58// 以动态链接库导出的方式声明序列化函数,它接收两个参数:
59 // void* data表示要进行序列化的数据指针,通常指向一个PointField类型的实际数据对象(不过以void*类型传递,使用时可能需要类型转换);
60 // eprosima::fastrtps::rtps::SerializedPayload_t* payload是用于存储序列化后数据的结构体指针,序列化后的结果会存放在这里,
61 // override关键字表示此函数重写了基类中的相应虚函数,用于实现针对PointField类型数据的序列化逻辑
63 void* data,
64 eprosima::fastrtps::rtps::SerializedPayload_t* payload) override;
65// 以动态链接库导出的方式声明反序列化函数,参数含义如下:
66 // eprosima::fastrtps::rtps::SerializedPayload_t* payload指向已经序列化的数据,也就是接收到的需要转换回原始数据形式的数据;
67 // void* data是用于存放反序列化后的数据的内存地址指针,最终会将反序列化得到的数据存放在这里,
68 // override表示重写了基类中对应的虚函数,用于实现针对PointField类型数据的反序列化逻辑
70 eprosima::fastrtps::rtps::SerializedPayload_t* payload,
71 void* data) override;
72// 以动态链接库导出的方式声明一个函数,该函数返回一个std::function类型的对象,其内部封装了一个返回值为uint32_t类型的可调用函数,
73 // 这个可调用函数的作用是获取给定数据(通过void* data指向的PointField类型的数据)序列化后的大小,
74 // override表示重写了基类中对应的虚函数,用于提供针对PointField类型数据获取序列化大小的功能实现
75 eProsima_user_DllExport virtual std::function<uint32_t()> getSerializedSizeProvider(
76 void* data) override;
77// 以动态链接库导出的方式声明获取键值的函数,参数含义如下:
78 // void* data指向需要获取键值的数据对象(这里是PointField类型的数据);
79 // eprosima::fastrtps::rtps::InstanceHandle_t* ihandle是用于存储获取到的键值的结构体指针,这个键值通常用于在发布订阅系统中唯一标识一个数据实例;
80 // bool force_md5是一个可选参数,默认值为false,用于指定是否强制使用MD5相关机制来获取键值,
81 // override表示重写了基类中的虚函数,用于实现针对PointField类型数据获取键值的逻辑
83 void* data,
84 eprosima::fastrtps::rtps::InstanceHandle_t* ihandle,
85 bool force_md5 = false) override;
86// 以动态链接库导出的方式声明创建数据的函数,它用于创建一个PointField类型的数据对象,返回创建后的数据对象的指针(以void*类型返回,实际使用时可能需要进行类型转换),
87 // override表示重写了基类中对应的虚函数,用于实现针对PointField类型数据对象的创建功能
88 eProsima_user_DllExport virtual void* createData() override;
89// 以动态链接库导出的方式声明删除数据的函数,其参数void* data指向要删除的数据对象(通常是之前通过createData函数创建的PointField类型的数据对象),
90 // 该函数负责释放相应数据对象所占用的内存资源,override表示重写了基类中对应的虚函数,用于实现针对PointField类型数据对象的删除功能
92 void* data) override;
93
94 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
95 eProsima_user_DllExport inline bool is_bounded() const override
96 {
97 return false;
98 }
99
100 #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
101
102 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
103 eProsima_user_DllExport inline bool is_plain() const override
104 {
105 return false;
106 }
107
108 #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
109
110 #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
111 eProsima_user_DllExport inline bool construct_sample(
112 void* memory) const override
113 {
114 (void)memory;
115 return false;
116 }
117
118 #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
119 MD5 m_md5;
120 unsigned char* m_keyBuffer;
121 };
122 }
123}
124
125#endif // _FAST_DDS_GENERATED_SENSOR_MSGS_MSG_POINTFIELD_PUBSUBTYPES_H_
#define eProsima_user_DllExport
Definition CameraInfo.h:44
This class represents the TopicDataType of the type PointField defined by the user in the IDL file.
virtual eProsima_user_DllExport std::function< uint32_t()> getSerializedSizeProvider(void *data) override
virtual eProsima_user_DllExport bool deserialize(eprosima::fastrtps::rtps::SerializedPayload_t *payload, void *data) override
virtual eProsima_user_DllExport void * createData() override
virtual eProsima_user_DllExport bool getKey(void *data, eprosima::fastrtps::rtps::InstanceHandle_t *ihandle, bool force_md5=false) override
virtual eProsima_user_DllExport void deleteData(void *data) override
virtual eProsima_user_DllExport ~PointFieldPubSubType() override
virtual eProsima_user_DllExport bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
此类表示用户在 IDL 文件中定义的结构 PointField。 <>
Definition PointField.h:79