blob: 1babb31db5869e1016890372037f2047c2bc99d7 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#include <union.fidl.json.h>
#include "lib/fidl/cpp/internal/implementation.h"
namespace test {
namespace name {
Union::Union() : value_() {}
Union::~Union() {
}
Union::Union(Union&& other) : value_(std::move(other.value_)) {
}
Union& Union::operator=(Union&& other) {
if (this != &other) {
value_ = std::move(other.value_);
}
return *this;
}
void Union::Encode(::fidl::Encoder* encoder, size_t offset) {
fidl_union_tag_t tag = static_cast<fidl_union_tag_t>(Which());
::fidl::Encode(encoder, &tag, offset);
switch (tag) {
case 0:
::fidl::Encode(encoder, &Primitive(), offset + 8);
break;
case 1:
::fidl::Encode(encoder, &StringNeedsConstructor(), offset + 8);
break;
case 2:
::fidl::Encode(encoder, &VectorStringAlsoNeedsConstructor(), offset + 8);
break;
default:
break;
}
}
void Union::Decode(::fidl::Decoder* decoder, Union* value, size_t offset) {
fidl_union_tag_t tag;
::fidl::Decode(decoder, &tag, offset);
switch (tag) {
case 0:
{
int32_t member{};
::fidl::Decode(decoder, &member, offset + 8);
value->set_Primitive(std::move(member));
break;
}
case 1:
{
::std::string member{};
::fidl::Decode(decoder, &member, offset + 8);
value->set_StringNeedsConstructor(std::move(member));
break;
}
case 2:
{
::std::vector<::std::string> member{};
::fidl::Decode(decoder, &member, offset + 8);
value->set_VectorStringAlsoNeedsConstructor(std::move(member));
break;
}
default:
value->value_.emplace<0>();
}
}
zx_status_t Union::Clone(Union* result) const {
zx_status_t status = ZX_OK;
switch (Which()) {
case Tag::kPrimitive:
{
int32_t member{};
status = ::fidl::Clone(Primitive(), &member);
if (status == ZX_OK) {
result->set_Primitive(std::move(member));
}
}
break;
case Tag::kStringNeedsConstructor:
{
::std::string member{};
status = ::fidl::Clone(StringNeedsConstructor(), &member);
if (status == ZX_OK) {
result->set_StringNeedsConstructor(std::move(member));
}
}
break;
case Tag::kVectorStringAlsoNeedsConstructor:
{
::std::vector<::std::string> member{};
status = ::fidl::Clone(VectorStringAlsoNeedsConstructor(), &member);
if (status == ZX_OK) {
result->set_VectorStringAlsoNeedsConstructor(std::move(member));
}
}
break;
case Tag::Invalid:
result->value_.emplace<0>();
break;
}
return status;
}
bool operator==(const Union& lhs, const Union& rhs) {
if (lhs.Which() != rhs.Which()) {
return false;
}
switch (lhs.Which()) {
case Union::Tag::kPrimitive:
return ::fidl::Equals(lhs.Primitive(), rhs.Primitive());
case Union::Tag::kStringNeedsConstructor:
return ::fidl::Equals(lhs.StringNeedsConstructor(), rhs.StringNeedsConstructor());
case Union::Tag::kVectorStringAlsoNeedsConstructor:
return ::fidl::Equals(lhs.VectorStringAlsoNeedsConstructor(), rhs.VectorStringAlsoNeedsConstructor());
case Union::Tag::Invalid:
return true;
default:
return false;
}
}
void Union::set_Primitive(int32_t value) {
value_.emplace<static_cast<size_t>(Tag::kPrimitive) + 1>(std::move(value));
}
void Union::set_StringNeedsConstructor(::std::string value) {
value_.emplace<static_cast<size_t>(Tag::kStringNeedsConstructor) + 1>(std::move(value));
}
void Union::set_VectorStringAlsoNeedsConstructor(::std::vector<::std::string> value) {
value_.emplace<static_cast<size_t>(Tag::kVectorStringAlsoNeedsConstructor) + 1>(std::move(value));
}
} // namespace name
} // namespace test