CARLA
 
载入中...
搜索中...
未找到
CarlaLineInvasionPubSubTypes.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 CarlaLineInvasionPubSubTypes.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_CARLA_MSGS_MSG_CARLALINEINVASION_PUBSUBTYPES_H_
23#define _FAST_DDS_GENERATED_CARLA_MSGS_MSG_CARLALINEINVASION_PUBSUBTYPES_H_
24// 这是头文件保护宏的开始和结束定义。作用是防止该头文件被重复包含,
25// 如果这个宏没有被定义过,就定义它然后编译该头文件内容,若已定义则跳过,避免重复编译造成的错误。
26#include <fastdds/dds/topic/TopicDataType.hpp>
27#include <fastrtps/utils/md5.h>
28
29#include "CarlaLineInvasion.h"
30#include "HeaderPubSubTypes.h"
31// 引入了Fast DDS相关的头文件,用于处理主题数据类型(TopicDataType)相关的功能。
32// 引入了MD5相关的头文件,可能用于数据校验等操作(比如计算消息的MD5值等情况)。
33// 同时包含了自定义的 "CarlaLineInvasion.h" 和 "HeaderPubSubTypes.h" 头文件,
34// 推测这两个头文件中定义了和具体消息内容以及发布订阅相关的类型等信息。
35#if !defined(GEN_API_VER) || (GEN_API_VER != 1)
36#error \
37 Generated CarlaLineInvasion is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen.
38#endif // GEN_API_VER
39// 这段代码检查是否定义了GEN_API_VER宏以及其值是否为1,如果不满足条件,
40// 就会输出错误信息,提示生成的CarlaLineInvasion与当前安装的Fast DDS不兼容,
41// 需要使用fastddsgen工具重新生成相关内容,用于保证版本的一致性和兼容性。
42namespace carla_msgs
43{
44 namespace msg
45 {
46 class LaneInvasionEventPubSubType : public eprosima::fastdds::dds::TopicDataType
47 {
48 // 定义在carla_msgs::msg命名空间下的LaneInvasionEventPubSubType类,
49 // 它继承自eprosima::fastdds::dds::TopicDataType类,意味着它会重写一些
50 // 与主题数据类型相关的虚函数,来实现特定消息类型(这里是LaneInvasionEvent)
51 // 在Fast DDS中的发布和订阅等相关操作逻辑。
52 public:
54// 定义了一个类型别名type,它代表LaneInvasionEvent类型,方便后续代码中使用这个类型指代。
56 // 类的默认构造函数声明,使用了eProsima_user_DllExport修饰,可能与动态链接库导出相关,
57 // 用于创建该类型的对象实例。
59 // 虚析构函数声明,用于在对象销毁时进行资源清理等相关操作,保证正确释放内存等资源。
61 void* data,
62 eprosima::fastrtps::rtps::SerializedPayload_t* payload) override;
63 // 序列化函数声明,作用是将给定的数据(data指针指向的数据,通常是消息对象)转换为适合在网络上传输的格式,
64 // 存储在SerializedPayload_t结构中,若序列化成功返回true,否则返回false。
66 eprosima::fastrtps::rtps::SerializedPayload_t* payload,
67 void* data) override;
68 // 反序列化函数声明,与序列化相反,它从SerializedPayload_t结构中的数据还原出原始的消息对象,
69 // 存放在data指针指向的内存位置,操作成功返回true,失败返回false。
70 eProsima_user_DllExport virtual std::function<uint32_t()> getSerializedSizeProvider(
71 void* data) override;
72 // 获取序列化后数据大小的函数声明,返回一个函数对象,调用该函数对象可以得到给定数据序列化后的大小(以字节为单位)。
74 void* data,
75 eprosima::fastrtps::rtps::InstanceHandle_t* ihandle,
76 bool force_md5 = false) override;
77 // 获取消息的键值(可能用于标识消息实例等作用)的函数声明,根据给定的数据计算出对应的键值,
78 // 存储在InstanceHandle_t结构中,可选择是否强制使用MD5方式计算(默认不强制),成功返回true,失败返回false。
79 eProsima_user_DllExport virtual void* createData() override;
80 // 创建数据对象的函数声明,用于分配内存并创建一个适合存储消息数据的对象实例,返回指向该对象的指针。
82 void* data) override;
83// 删除数据对象的函数声明,用于释放由createData函数创建的对象所占用的内存资源。
84 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
85 eProsima_user_DllExport inline bool is_bounded() const override
86 {
87 return false;
88 }
89 #endif // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
90// 如果定义了TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED宏,就会编译这个内联函数声明,
91// 用于判断该主题数据类型是否是有界的(比如数据长度是否固定等情况),这里默认返回false。
92 #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
93 eProsima_user_DllExport inline bool is_plain() const override
94 {
95 return false;
96 }
97 #endif // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN
98// 类似地,若定义了TOPIC_DATA_TYPE_API_HAS_IS_PLAIN宏,编译这个内联函数声明,
99// 判断该主题数据类型是否是简单类型(可能涉及到数据结构复杂度等概念),默认返回false。
100 #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
101 eProsima_user_DllExport inline bool construct_sample(
102 void* memory) const override
103 {
104 (void)memory;
105 return false;
106 }
107 #endif // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
108// 当定义了TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE宏时,编译此内联函数声明,
109// 可能用于构造一个示例消息对象(比如初始化一些默认值等),这里暂时返回false,并且传入的memory参数未使用(只是为了满足函数参数要求进行了(void)memory的转换,避免编译警告)。
110 MD5 m_md5;
111 unsigned char* m_keyBuffer;
112 // 声明了两个成员变量,m_md5 可能是用于计算MD5相关操作的对象(结合前面引入的MD5相关头文件),
113 // m_keyBuffer 可能用于存储消息的键值等相关数据的缓冲区指针,具体作用要看后续在类的成员函数中如何使用它们。
114 };
115 }
116}
117
118#endif // _FAST_DDS_GENERATED_CARLA_MSGS_MSG_CARLALINEINVASION_PUBSUBTYPES_H_
#define eProsima_user_DllExport
Definition CameraInfo.h:44
virtual eProsima_user_DllExport bool getKey(void *data, eprosima::fastrtps::rtps::InstanceHandle_t *ihandle, bool force_md5=false) override
virtual eProsima_user_DllExport void * createData() override
virtual eProsima_user_DllExport bool serialize(void *data, eprosima::fastrtps::rtps::SerializedPayload_t *payload) override
virtual eProsima_user_DllExport ~LaneInvasionEventPubSubType() override
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 deleteData(void *data) override
此类表示用户在IDL文件中定义的LaneInvasionEvent结构。这个类表示在IDL文件中用户定义的LaneInvasionEvent结构,通常用于处理车道入侵相关的消息事件,是整个消息结构体的主...