Program Listing for File TypeIdentifierTypes.h

Return to documentation for file (/tmp/ws/src/fastrtps/include/fastrtps/types/TypeIdentifierTypes.h)

// 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.

#ifndef _TYPEIDENTIFIERTYPES_H_
#define _TYPEIDENTIFIERTYPES_H_

#include <fastrtps/types/TypesBase.h>
#include <fastrtps/types/TypeObjectHashId.h>
#include <stdint.h>
#include <array>
#include <string>
#include <vector>

namespace eprosima {
namespace fastcdr {
class Cdr;
}
}

namespace eprosima {

namespace fastdds {
namespace dds {
class TypeConsistencyEnforcementQosPolicy;
}
}

namespace fastrtps {
namespace types {


// Forward declaration
class TypeIdentifier;
class StringLTypeDefn;

class StringSTypeDefn final
{
public:

    RTPS_DllAPI StringSTypeDefn();

    RTPS_DllAPI ~StringSTypeDefn();

    RTPS_DllAPI StringSTypeDefn(
            const StringSTypeDefn& x);

    RTPS_DllAPI StringSTypeDefn(
            StringSTypeDefn&& x);

    RTPS_DllAPI StringSTypeDefn& operator=(
            const StringSTypeDefn& x);

    RTPS_DllAPI StringSTypeDefn& operator=(
            StringSTypeDefn&& x);

    RTPS_DllAPI inline void bound(
            SBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline SBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline SBound& bound()
    {
        return m_bound;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const StringSTypeDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const StringSTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

    RTPS_DllAPI bool consistent(
            const StringLTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    SBound m_bound;
};
class StringLTypeDefn final
{
public:

    RTPS_DllAPI StringLTypeDefn();

    RTPS_DllAPI ~StringLTypeDefn();

    RTPS_DllAPI StringLTypeDefn(
            const StringLTypeDefn& x);

    RTPS_DllAPI StringLTypeDefn(
            StringLTypeDefn&& x);

    RTPS_DllAPI StringLTypeDefn& operator=(
            const StringLTypeDefn& x);

    RTPS_DllAPI StringLTypeDefn& operator=(
            StringLTypeDefn&& x);

    RTPS_DllAPI inline void bound(
            LBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline LBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline LBound& bound()
    {
        return m_bound;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const StringLTypeDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const StringLTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

    RTPS_DllAPI bool consistent(
            const StringSTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    LBound m_bound;
};
class PlainCollectionHeader final
{
public:

    RTPS_DllAPI PlainCollectionHeader();

    RTPS_DllAPI ~PlainCollectionHeader();

    RTPS_DllAPI PlainCollectionHeader(
            const PlainCollectionHeader& x);

    RTPS_DllAPI PlainCollectionHeader(
            PlainCollectionHeader&& x);

    RTPS_DllAPI PlainCollectionHeader& operator=(
            const PlainCollectionHeader& x);

    RTPS_DllAPI PlainCollectionHeader& operator=(
            PlainCollectionHeader&& x);

    RTPS_DllAPI inline void equiv_kind(
            EquivalenceKind _equiv_kind)
    {
        m_equiv_kind = _equiv_kind;
    }

    RTPS_DllAPI inline EquivalenceKind equiv_kind() const
    {
        return m_equiv_kind;
    }

    RTPS_DllAPI inline EquivalenceKind& equiv_kind()
    {
        return m_equiv_kind;
    }
    RTPS_DllAPI inline void element_flags(
            CollectionElementFlag _element_flags)
    {
        m_element_flags = _element_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag element_flags() const
    {
        return m_element_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag& element_flags()
    {
        return m_element_flags;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainCollectionHeader& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainCollectionHeader& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    EquivalenceKind m_equiv_kind;
    CollectionElementFlag m_element_flags;
};
class PlainSequenceSElemDefn final
{
public:

    RTPS_DllAPI PlainSequenceSElemDefn();

    RTPS_DllAPI ~PlainSequenceSElemDefn();

    RTPS_DllAPI PlainSequenceSElemDefn(
            const PlainSequenceSElemDefn& x);

    RTPS_DllAPI PlainSequenceSElemDefn(
            PlainSequenceSElemDefn&& x);

    RTPS_DllAPI PlainSequenceSElemDefn& operator=(
            const PlainSequenceSElemDefn& x);

    RTPS_DllAPI PlainSequenceSElemDefn& operator=(
            PlainSequenceSElemDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void bound(
            SBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline SBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline SBound& bound()
    {
        return m_bound;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainSequenceSElemDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainSequenceSElemDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    SBound m_bound;
    TypeIdentifier* m_element_identifier;
};
class PlainSequenceLElemDefn final
{
public:

    RTPS_DllAPI PlainSequenceLElemDefn();

    RTPS_DllAPI ~PlainSequenceLElemDefn();

    RTPS_DllAPI PlainSequenceLElemDefn(
            const PlainSequenceLElemDefn& x);

    RTPS_DllAPI PlainSequenceLElemDefn(
            PlainSequenceLElemDefn&& x);

    RTPS_DllAPI PlainSequenceLElemDefn& operator=(
            const PlainSequenceLElemDefn& x);

    RTPS_DllAPI PlainSequenceLElemDefn& operator=(
            PlainSequenceLElemDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void bound(
            LBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline LBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline LBound& bound()
    {
        return m_bound;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainSequenceLElemDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainSequenceLElemDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    LBound m_bound;
    TypeIdentifier* m_element_identifier;
};
class PlainArraySElemDefn final
{
public:

    RTPS_DllAPI PlainArraySElemDefn();

    RTPS_DllAPI ~PlainArraySElemDefn();

    RTPS_DllAPI PlainArraySElemDefn(
            const PlainArraySElemDefn& x);

    RTPS_DllAPI PlainArraySElemDefn(
            PlainArraySElemDefn&& x);

    RTPS_DllAPI PlainArraySElemDefn& operator=(
            const PlainArraySElemDefn& x);

    RTPS_DllAPI PlainArraySElemDefn& operator=(
            PlainArraySElemDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void array_bound_seq(
            const SBoundSeq& _array_bound_seq)
    {
        m_array_bound_seq = _array_bound_seq;
    }

    RTPS_DllAPI inline void array_bound_seq(
            SBoundSeq&& _array_bound_seq)
    {
        m_array_bound_seq = std::move(_array_bound_seq);
    }

    RTPS_DllAPI inline const SBoundSeq& array_bound_seq() const
    {
        return m_array_bound_seq;
    }

    RTPS_DllAPI inline SBoundSeq& array_bound_seq()
    {
        return m_array_bound_seq;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainArraySElemDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainArraySElemDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    SBoundSeq m_array_bound_seq;
    TypeIdentifier* m_element_identifier;
};
class PlainArrayLElemDefn final
{
public:

    RTPS_DllAPI PlainArrayLElemDefn();

    RTPS_DllAPI ~PlainArrayLElemDefn();

    RTPS_DllAPI PlainArrayLElemDefn(
            const PlainArrayLElemDefn& x);

    RTPS_DllAPI PlainArrayLElemDefn(
            PlainArrayLElemDefn&& x);

    RTPS_DllAPI PlainArrayLElemDefn& operator=(
            const PlainArrayLElemDefn& x);

    RTPS_DllAPI PlainArrayLElemDefn& operator=(
            PlainArrayLElemDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void array_bound_seq(
            const LBoundSeq& _array_bound_seq)
    {
        m_array_bound_seq = _array_bound_seq;
    }

    RTPS_DllAPI inline void array_bound_seq(
            LBoundSeq&& _array_bound_seq)
    {
        m_array_bound_seq = std::move(_array_bound_seq);
    }

    RTPS_DllAPI inline const LBoundSeq& array_bound_seq() const
    {
        return m_array_bound_seq;
    }

    RTPS_DllAPI inline LBoundSeq& array_bound_seq()
    {
        return m_array_bound_seq;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainArrayLElemDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainArrayLElemDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    LBoundSeq m_array_bound_seq;
    TypeIdentifier* m_element_identifier;
};
class PlainMapSTypeDefn final
{
public:

    RTPS_DllAPI PlainMapSTypeDefn();

    RTPS_DllAPI ~PlainMapSTypeDefn();

    RTPS_DllAPI PlainMapSTypeDefn(
            const PlainMapSTypeDefn& x);

    RTPS_DllAPI PlainMapSTypeDefn(
            PlainMapSTypeDefn&& x);

    RTPS_DllAPI PlainMapSTypeDefn& operator=(
            const PlainMapSTypeDefn& x);

    RTPS_DllAPI PlainMapSTypeDefn& operator=(
            PlainMapSTypeDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void bound(
            SBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline SBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline SBound& bound()
    {
        return m_bound;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }
    RTPS_DllAPI inline void key_flags(
            CollectionElementFlag _key_flags)
    {
        m_key_flags = _key_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag key_flags() const
    {
        return m_key_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag& key_flags()
    {
        return m_key_flags;
    }
    RTPS_DllAPI void key_identifier(
            const TypeIdentifier* _key_identifier);

    RTPS_DllAPI inline const TypeIdentifier* key_identifier() const
    {
        return m_key_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* key_identifier()
    {
        return m_key_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainMapSTypeDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainMapSTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    SBound m_bound;
    TypeIdentifier* m_element_identifier;
    CollectionElementFlag m_key_flags;
    TypeIdentifier* m_key_identifier;
};
class PlainMapLTypeDefn final
{
public:

    RTPS_DllAPI PlainMapLTypeDefn();

    RTPS_DllAPI ~PlainMapLTypeDefn();

    RTPS_DllAPI PlainMapLTypeDefn(
            const PlainMapLTypeDefn& x);

    RTPS_DllAPI PlainMapLTypeDefn(
            PlainMapLTypeDefn&& x);

    RTPS_DllAPI PlainMapLTypeDefn& operator=(
            const PlainMapLTypeDefn& x);

    RTPS_DllAPI PlainMapLTypeDefn& operator=(
            PlainMapLTypeDefn&& x);

    RTPS_DllAPI inline void header(
            const PlainCollectionHeader& _header)
    {
        m_header = _header;
    }

    RTPS_DllAPI inline void header(
            PlainCollectionHeader&& _header)
    {
        m_header = std::move(_header);
    }

    RTPS_DllAPI inline const PlainCollectionHeader& header() const
    {
        return m_header;
    }

    RTPS_DllAPI inline PlainCollectionHeader& header()
    {
        return m_header;
    }
    RTPS_DllAPI inline void bound(
            LBound _bound)
    {
        m_bound = _bound;
    }

    RTPS_DllAPI inline LBound bound() const
    {
        return m_bound;
    }

    RTPS_DllAPI inline LBound& bound()
    {
        return m_bound;
    }
    RTPS_DllAPI void element_identifier(
            const TypeIdentifier* _element_identifier);

    RTPS_DllAPI inline const TypeIdentifier* element_identifier() const
    {
        return m_element_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* element_identifier()
    {
        return m_element_identifier;
    }
    RTPS_DllAPI inline void key_flags(
            CollectionElementFlag _key_flags)
    {
        m_key_flags = _key_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag key_flags() const
    {
        return m_key_flags;
    }

    RTPS_DllAPI inline CollectionElementFlag& key_flags()
    {
        return m_key_flags;
    }
    RTPS_DllAPI void key_identifier(
            const TypeIdentifier* _key_identifier);

    RTPS_DllAPI inline const TypeIdentifier* key_identifier() const
    {
        return m_key_identifier;
    }

    RTPS_DllAPI inline TypeIdentifier* key_identifier()
    {
        return m_key_identifier;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const PlainMapLTypeDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const PlainMapLTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    PlainCollectionHeader m_header;
    LBound m_bound;
    TypeIdentifier* m_element_identifier;
    CollectionElementFlag m_key_flags;
    TypeIdentifier* m_key_identifier;
};
class StronglyConnectedComponentId final
{
public:

    RTPS_DllAPI StronglyConnectedComponentId();

    RTPS_DllAPI ~StronglyConnectedComponentId();

    RTPS_DllAPI StronglyConnectedComponentId(
            const StronglyConnectedComponentId& x);

    RTPS_DllAPI StronglyConnectedComponentId(
            StronglyConnectedComponentId&& x);

    RTPS_DllAPI StronglyConnectedComponentId& operator=(
            const StronglyConnectedComponentId& x);

    RTPS_DllAPI StronglyConnectedComponentId& operator=(
            StronglyConnectedComponentId&& x);

    RTPS_DllAPI inline void sc_component_id(
            const TypeObjectHashId& _sc_component_id)
    {
        m_sc_component_id = _sc_component_id;
    }

    RTPS_DllAPI inline void sc_component_id(
            TypeObjectHashId&& _sc_component_id)
    {
        m_sc_component_id = std::move(_sc_component_id);
    }

    RTPS_DllAPI inline const TypeObjectHashId& sc_component_id() const
    {
        return m_sc_component_id;
    }

    RTPS_DllAPI inline TypeObjectHashId& sc_component_id()
    {
        return m_sc_component_id;
    }
    RTPS_DllAPI inline void scc_length(
            int32_t _scc_length)
    {
        m_scc_length = _scc_length;
    }

    RTPS_DllAPI inline int32_t scc_length() const
    {
        return m_scc_length;
    }

    RTPS_DllAPI inline int32_t& scc_length()
    {
        return m_scc_length;
    }
    RTPS_DllAPI inline void scc_index(
            int32_t _scc_index)
    {
        m_scc_index = _scc_index;
    }

    RTPS_DllAPI inline int32_t scc_index() const
    {
        return m_scc_index;
    }

    RTPS_DllAPI inline int32_t& scc_index()
    {
        return m_scc_index;
    }

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const StronglyConnectedComponentId& data,
            size_t current_alignment = 0);


    RTPS_DllAPI void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const StronglyConnectedComponentId& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;

private:

    TypeObjectHashId m_sc_component_id;
    int32_t m_scc_length;
    int32_t m_scc_index;
};
class ExtendedTypeDefn final
{
public:

    RTPS_DllAPI ExtendedTypeDefn();

    RTPS_DllAPI virtual ~ExtendedTypeDefn();

    RTPS_DllAPI ExtendedTypeDefn(
            const ExtendedTypeDefn& x);

    RTPS_DllAPI ExtendedTypeDefn(
            ExtendedTypeDefn&& x);

    RTPS_DllAPI virtual ExtendedTypeDefn& operator=(
            const ExtendedTypeDefn& x);

    RTPS_DllAPI virtual ExtendedTypeDefn& operator=(
            ExtendedTypeDefn&& x);

    RTPS_DllAPI static size_t getCdrSerializedSize(
            const ExtendedTypeDefn& data,
            size_t current_alignment = 0);


    RTPS_DllAPI virtual void serialize(
            eprosima::fastcdr::Cdr& cdr) const;

    RTPS_DllAPI virtual void deserialize(
            eprosima::fastcdr::Cdr& cdr);

    RTPS_DllAPI bool consistent(
            const ExtendedTypeDefn& x,
            const fastdds::dds::TypeConsistencyEnforcementQosPolicy& consistency) const;


};

} // namespace types
} // namespace fastrtps
} // namespace eprosima

#endif // _TYPEIDENTIFIERTYPES_H_