zerodds-idl-cpp 1.0.0-rc.1

OMG IDL4 → C++17 Code-Generator (idl4-cpp-1.0 + DDS-PSM-Cxx + DDS-RPC C++ PSM) für ZeroDDS.
Documentation
---
source: crates/idl-cpp/tests/snapshot_codegen.rs
expression: cpp
---
// Generated by zerodds idl-cpp. Do not edit.
#pragma once

#include <cstdint>
#include <string>
#include <vector>

#include "dds/topic/TopicTraits.hpp"
#include "dds/topic/xcdr2.hpp"
#include "dds/topic/xcdr2_md5.hpp"

class Bag {
public:
    Bag() = default;
    ~Bag() = default;

private:
    std::string name_;
    std::vector<int32_t> ids_;
    std::vector<std::string> tags_;

public:
    std::string& name() { return name_; }
    const std::string& name() const { return name_; }
    void name(const std::string& value) { name_ = value; }
    std::vector<int32_t>& ids() { return ids_; }
    const std::vector<int32_t>& ids() const { return ids_; }
    void ids(const std::vector<int32_t>& value) { ids_ = value; }
    std::vector<std::string>& tags() { return tags_; }
    const std::vector<std::string>& tags() const { return tags_; }
    void tags(const std::vector<std::string>& value) { tags_ = value; }
};


// DDS-PSM-Cxx topic_type_support<T> -- auto-generiert (XCDR2 Wire, XTypes 1.3 7.4).
namespace dds {
namespace topic {

template <>
struct topic_type_support<::Bag> {
    static const char* type_name() { return "Bag"; }
    static constexpr bool is_keyed() { return false; }
    static constexpr ::dds::topic::core::policy::DataRepresentationKind extensibility() { return ::dds::topic::core::policy::DataRepresentationKind::APPENDABLE; }
    static std::vector<uint8_t> encode(const ::Bag& __v) {
        std::vector<uint8_t> __out;
        (void)__v;
        const auto __dh = ::dds::topic::xcdr2::dheader_begin(__out);
        const size_t __origin = __out.size();
        (void)__origin;
        ::dds::topic::xcdr2::write_string_origin(__out, __origin, __v.name());
        ::dds::topic::xcdr2::write_le_origin<uint32_t>(__out, __origin, static_cast<uint32_t>(__v.ids().size()));
        for (const auto& __e : __v.ids()) {
            ::dds::topic::xcdr2::write_le_origin<int32_t>(__out, __origin, __e);
        }
        ::dds::topic::xcdr2::write_le_origin<uint32_t>(__out, __origin, static_cast<uint32_t>(__v.tags().size()));
        for (const auto& __e : __v.tags()) {
            ::dds::topic::xcdr2::write_string_origin(__out, __origin, __e);
        }
        ::dds::topic::xcdr2::dheader_end(__out, __dh);
        return __out;
    }
    static std::vector<uint8_t> encode_be(const ::Bag& __v) {
        std::vector<uint8_t> __out;
        (void)__v;
        const auto __dh = ::dds::topic::xcdr2::dheader_begin(__out);
        const size_t __origin = __out.size();
        (void)__origin;
        ::dds::topic::xcdr2::write_string_be(__out, __v.name());
        ::dds::topic::xcdr2::write_be<uint32_t>(__out, static_cast<uint32_t>(__v.ids().size()));
        for (const auto& __e : __v.ids()) {
            ::dds::topic::xcdr2::write_be<int32_t>(__out, __e);
        }
        ::dds::topic::xcdr2::write_be<uint32_t>(__out, static_cast<uint32_t>(__v.tags().size()));
        for (const auto& __e : __v.tags()) {
            ::dds::topic::xcdr2::write_string_be(__out, __e);
        }
        ::dds::topic::xcdr2::dheader_end(__out, __dh);
        return __out;
    }
    static ::Bag decode(const uint8_t* __buf, size_t __len) {
        size_t __pos = 0;
        ::Bag __v;
        (void)__buf; (void)__len; (void)__pos;
        const auto __dh = ::dds::topic::xcdr2::dheader_read(__buf, __pos, __len);
        const size_t __origin = __pos;
        const size_t __end = __origin + __dh;
        (void)__end;
        __v.name(::dds::topic::xcdr2::read_string_origin(__buf, __pos, __len, __origin));
        {
            auto __cnt = ::dds::topic::xcdr2::read_le_origin<uint32_t>(__buf, __pos, __len, __origin);
            std::vector<int32_t> __seq;
            __seq.reserve(__cnt);
            for (uint32_t __i = 0; __i < __cnt; ++__i) {
                __seq.push_back(::dds::topic::xcdr2::read_le_origin<int32_t>(__buf, __pos, __len, __origin));
            }
            __v.ids(std::move(__seq));
        }
        {
            auto __cnt = ::dds::topic::xcdr2::read_le_origin<uint32_t>(__buf, __pos, __len, __origin);
            std::vector<std::string> __seq;
            __seq.reserve(__cnt);
            for (uint32_t __i = 0; __i < __cnt; ++__i) {
                __seq.push_back(::dds::topic::xcdr2::read_string_origin(__buf, __pos, __len, __origin));
            }
            __v.tags(std::move(__seq));
        }
        if (__pos < __end) __pos = __end;
        return __v;
    }
    static std::array<uint8_t, 16> key_hash(const ::Bag& __v) {
        (void)__v;
        return std::array<uint8_t, 16>{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
    }
};

} // namespace topic
} // namespace dds