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