// 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 keyCdrAux.hpp
 * This source file contains some definitions of CDR related functions.
 *
 * This file was generated by the tool fastddsgen.
 */

#ifndef FAST_DDS_GENERATED__KEYCDRAUX_HPP
#define FAST_DDS_GENERATED__KEYCDRAUX_HPP

#include "key.hpp"

constexpr uint32_t KeyedMutable_max_cdr_typesize {292UL};
constexpr uint32_t KeyedMutable_max_key_cdr_typesize {268UL};

constexpr uint32_t KeyedShortStruct_max_cdr_typesize {8UL};
constexpr uint32_t KeyedShortStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedEmptyStruct_max_cdr_typesize {6UL};
constexpr uint32_t KeyedEmptyStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedULongLongStruct_max_cdr_typesize {24UL};
constexpr uint32_t KeyedULongLongStruct_max_key_cdr_typesize {8UL};

constexpr uint32_t KeyedDoubleStruct_max_cdr_typesize {24UL};
constexpr uint32_t KeyedDoubleStruct_max_key_cdr_typesize {8UL};

constexpr uint32_t KeyedAppendable_max_cdr_typesize {272UL};
constexpr uint32_t KeyedAppendable_max_key_cdr_typesize {268UL};

constexpr uint32_t KeyedBooleanStruct_max_cdr_typesize {6UL};
constexpr uint32_t KeyedBooleanStruct_max_key_cdr_typesize {1UL};

constexpr uint32_t KeyedWCharStruct_max_cdr_typesize {8UL};
constexpr uint32_t KeyedWCharStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedFinal_max_cdr_typesize {268UL};
constexpr uint32_t KeyedFinal_max_key_cdr_typesize {268UL};

constexpr uint32_t KeyedInheritanceStruct_max_cdr_typesize {528UL};
constexpr uint32_t KeyedInheritanceStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedOctetStruct_max_cdr_typesize {6UL};
constexpr uint32_t KeyedOctetStruct_max_key_cdr_typesize {1UL};

constexpr uint32_t KeyedCharStruct_max_cdr_typesize {6UL};
constexpr uint32_t KeyedCharStruct_max_key_cdr_typesize {1UL};

constexpr uint32_t KeyedFloatStruct_max_cdr_typesize {12UL};
constexpr uint32_t KeyedFloatStruct_max_key_cdr_typesize {4UL};

constexpr uint32_t KeyedLongStruct_max_cdr_typesize {12UL};
constexpr uint32_t KeyedLongStruct_max_key_cdr_typesize {4UL};

constexpr uint32_t KeyedUShortStruct_max_cdr_typesize {8UL};
constexpr uint32_t KeyedUShortStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedULongStruct_max_cdr_typesize {12UL};
constexpr uint32_t KeyedULongStruct_max_key_cdr_typesize {4UL};

constexpr uint32_t InheritanceKeyedEmptyStruct_max_cdr_typesize {8UL};
constexpr uint32_t InheritanceKeyedEmptyStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedLongLongStruct_max_cdr_typesize {24UL};
constexpr uint32_t KeyedLongLongStruct_max_key_cdr_typesize {8UL};

constexpr uint32_t KeyedEmptyInheritanceStruct_max_cdr_typesize {528UL};
constexpr uint32_t KeyedEmptyInheritanceStruct_max_key_cdr_typesize {2UL};

constexpr uint32_t KeyedLongDoubleStruct_max_cdr_typesize {40UL};
constexpr uint32_t KeyedLongDoubleStruct_max_key_cdr_typesize {16UL};


namespace eprosima {
namespace fastcdr {

class Cdr;
class CdrSizeCalculator;

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedShortStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedUShortStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedLongStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedULongStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedLongLongStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedULongLongStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedFloatStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedDoubleStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedLongDoubleStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedBooleanStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedOctetStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedCharStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedWCharStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedEmptyStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedEmptyInheritanceStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedInheritanceStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const InheritanceKeyedEmptyStruct& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedFinal& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedAppendable& data);

eProsima_user_DllExport void serialize_key(
        eprosima::fastcdr::Cdr& scdr,
        const KeyedMutable& data);


} // namespace fastcdr
} // namespace eprosima

#endif // FAST_DDS_GENERATED__KEYCDRAUX_HPP

