// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
 * @file core_typesPubSubTypes.hpp
 * This header file contains the declaration of the serialization functions.
 *
 * This file was generated by the tool fastddsgen.
 */


#ifndef FAST_DDS_GENERATED__EPROSIMA_FASTDDS_RTPS_CORE_CORE_TYPES_PUBSUBTYPES_HPP
#define FAST_DDS_GENERATED__EPROSIMA_FASTDDS_RTPS_CORE_CORE_TYPES_PUBSUBTYPES_HPP

#include <fastdds/dds/core/policy/QosPolicies.hpp>
#include <fastdds/dds/topic/TopicDataType.hpp>
#include <fastdds/rtps/common/InstanceHandle.hpp>
#include <fastdds/rtps/common/SerializedPayload.hpp>
#include <fastdds/utils/md5.hpp>

#include "core_types.hpp"


#if !defined(FASTDDS_GEN_API_VER) || (FASTDDS_GEN_API_VER != 3)
#error \
    Generated core_types is not compatible with current installed Fast DDS. Please, regenerate it with fastddsgen.
#endif  // FASTDDS_GEN_API_VER

namespace eprosima
{
    namespace fastdds
    {
        namespace rtps
        {
            namespace core
            {
                namespace detail
                {

                    /*!
                     * @brief This class represents the TopicDataType of the type EntityId_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class EntityId_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef EntityId_t type;

                        eProsima_user_DllExport EntityId_tPubSubType();

                        eProsima_user_DllExport ~EntityId_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type ProtocolVersion_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class ProtocolVersion_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef ProtocolVersion_t type;

                        eProsima_user_DllExport ProtocolVersion_tPubSubType();

                        eProsima_user_DllExport ~ProtocolVersion_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type VendorId_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class VendorId_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef VendorId_t type;

                        eProsima_user_DllExport VendorId_tPubSubType();

                        eProsima_user_DllExport ~VendorId_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type GuidPrefix_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class GuidPrefix_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef GuidPrefix_t type;

                        eProsima_user_DllExport GuidPrefix_tPubSubType();

                        eProsima_user_DllExport ~GuidPrefix_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type GUID_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class GUID_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef GUID_t type;

                        eProsima_user_DllExport GUID_tPubSubType();

                        eProsima_user_DllExport ~GUID_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type SequenceNumber_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class SequenceNumber_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef SequenceNumber_t type;

                        eProsima_user_DllExport SequenceNumber_tPubSubType();

                        eProsima_user_DllExport ~SequenceNumber_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type Count_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class Count_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef Count_t type;

                        eProsima_user_DllExport Count_tPubSubType();

                        eProsima_user_DllExport ~Count_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type Time_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class Time_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef Time_t type;

                        eProsima_user_DllExport Time_tPubSubType();

                        eProsima_user_DllExport ~Time_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };
                    typedef eprosima::fastdds::rtps::core::detail::Time_t Timestamp;

                    /*!
                     * @brief This class represents the TopicDataType of the type SequenceNumberSet defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class SequenceNumberSetPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef SequenceNumberSet type;

                        eProsima_user_DllExport SequenceNumberSetPubSubType();

                        eProsima_user_DllExport ~SequenceNumberSetPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type Locator_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class Locator_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef Locator_t type;

                        eProsima_user_DllExport Locator_tPubSubType();

                        eProsima_user_DllExport ~Locator_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type Duration_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class Duration_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef Duration_t type;

                        eProsima_user_DllExport Duration_tPubSubType();

                        eProsima_user_DllExport ~Duration_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };
                    typedef uint32_t DomainId_t;
                    typedef uint32_t BuiltinEndpointQos_t;

                    /*!
                     * @brief This class represents the TopicDataType of the type StatusInfo_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class StatusInfo_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef StatusInfo_t type;

                        eProsima_user_DllExport StatusInfo_tPubSubType();

                        eProsima_user_DllExport ~StatusInfo_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type KeyHash_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class KeyHash_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef KeyHash_t type;

                        eProsima_user_DllExport KeyHash_tPubSubType();

                        eProsima_user_DllExport ~KeyHash_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return true;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };

                    /*!
                     * @brief This class represents the TopicDataType of the type EntityName_t defined by the user in the IDL file.
                     * @ingroup core_types
                     */
                    class EntityName_tPubSubType : public eprosima::fastdds::dds::TopicDataType
                    {
                    public:

                        typedef EntityName_t type;

                        eProsima_user_DllExport EntityName_tPubSubType();

                        eProsima_user_DllExport ~EntityName_tPubSubType() override;

                        eProsima_user_DllExport bool serialize(
                                const void* const data,
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool deserialize(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                void* data) override;

                        eProsima_user_DllExport uint32_t calculate_serialized_size(
                                const void* const data,
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                        eProsima_user_DllExport bool compute_key(
                                eprosima::fastdds::rtps::SerializedPayload_t& payload,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport bool compute_key(
                                const void* const data,
                                eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                                bool force_md5 = false) override;

                        eProsima_user_DllExport void* create_data() override;

                        eProsima_user_DllExport void delete_data(
                                void* data) override;

                        //Register TypeObject representation in Fast DDS TypeObjectRegistry
                        eProsima_user_DllExport void register_type_object_representation() override;

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                        eProsima_user_DllExport inline bool is_bounded() const override
                        {
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                    #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                        eProsima_user_DllExport inline bool is_plain(
                                eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                        {
                            static_cast<void>(data_representation);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                        eProsima_user_DllExport inline bool construct_sample(
                                void* memory) const override
                        {
                            static_cast<void>(memory);
                            return false;
                        }

                    #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                    private:

                        eprosima::fastdds::MD5 md5_;
                        unsigned char* key_buffer_;

                    };
                } // namespace detail

                /*!
                 * @brief This class represents the TopicDataType of the type Header defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class HeaderPubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef Header type;

                    eProsima_user_DllExport HeaderPubSubType();

                    eProsima_user_DllExport ~HeaderPubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type SubmessageHeader defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class SubmessageHeaderPubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef SubmessageHeader type;

                    eProsima_user_DllExport SubmessageHeaderPubSubType();

                    eProsima_user_DllExport ~SubmessageHeaderPubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };
                namespace SubmessageKind
                {
                } // namespace SubmessageKind

                /*!
                 * @brief This class represents the TopicDataType of the type AckNackSubmessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class AckNackSubmessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef AckNackSubmessage type;

                    eProsima_user_DllExport AckNackSubmessagePubSubType();

                    eProsima_user_DllExport ~AckNackSubmessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type HeartBeatSubmessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class HeartBeatSubmessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef HeartBeatSubmessage type;

                    eProsima_user_DllExport HeartBeatSubmessagePubSubType();

                    eProsima_user_DllExport ~HeartBeatSubmessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type InfoDestinationSubmessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class InfoDestinationSubmessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef InfoDestinationSubmessage type;

                    eProsima_user_DllExport InfoDestinationSubmessagePubSubType();

                    eProsima_user_DllExport ~InfoDestinationSubmessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type InfoSourceSubmessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class InfoSourceSubmessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef InfoSourceSubmessage type;

                    eProsima_user_DllExport InfoSourceSubmessagePubSubType();

                    eProsima_user_DllExport ~InfoSourceSubmessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type InfoTimestampSubmessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class InfoTimestampSubmessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef InfoTimestampSubmessage type;

                    eProsima_user_DllExport InfoTimestampSubmessagePubSubType();

                    eProsima_user_DllExport ~InfoTimestampSubmessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return true;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };

                /*!
                 * @brief This class represents the TopicDataType of the type RTPSMessage defined by the user in the IDL file.
                 * @ingroup core_types
                 */
                class RTPSMessagePubSubType : public eprosima::fastdds::dds::TopicDataType
                {
                public:

                    typedef RTPSMessage type;

                    eProsima_user_DllExport RTPSMessagePubSubType();

                    eProsima_user_DllExport ~RTPSMessagePubSubType() override;

                    eProsima_user_DllExport bool serialize(
                            const void* const data,
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool deserialize(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            void* data) override;

                    eProsima_user_DllExport uint32_t calculate_serialized_size(
                            const void* const data,
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) override;

                    eProsima_user_DllExport bool compute_key(
                            eprosima::fastdds::rtps::SerializedPayload_t& payload,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport bool compute_key(
                            const void* const data,
                            eprosima::fastdds::rtps::InstanceHandle_t& ihandle,
                            bool force_md5 = false) override;

                    eProsima_user_DllExport void* create_data() override;

                    eProsima_user_DllExport void delete_data(
                            void* data) override;

                    //Register TypeObject representation in Fast DDS TypeObjectRegistry
                    eProsima_user_DllExport void register_type_object_representation() override;

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED
                    eProsima_user_DllExport inline bool is_bounded() const override
                    {
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_BOUNDED

                #ifdef TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                    eProsima_user_DllExport inline bool is_plain(
                            eprosima::fastdds::dds::DataRepresentationId_t data_representation) const override
                    {
                        static_cast<void>(data_representation);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_IS_PLAIN

                #ifdef TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE
                    eProsima_user_DllExport inline bool construct_sample(
                            void* memory) const override
                    {
                        static_cast<void>(memory);
                        return false;
                    }

                #endif  // TOPIC_DATA_TYPE_API_HAS_CONSTRUCT_SAMPLE

                private:

                    eprosima::fastdds::MD5 md5_;
                    unsigned char* key_buffer_;

                };
            } // namespace core
        } // namespace rtps
    } // namespace fastdds
} // namespace eprosima

#endif // FAST_DDS_GENERATED__EPROSIMA_FASTDDS_RTPS_CORE_CORE_TYPES_PUBSUBTYPES_HPP

