blob: fea94c64953d3fd8a9e2eff26d91abbe0fcde3a2 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#include <doc_comments.fidl.json.h>
#include "lib/fidl/cpp/internal/implementation.h"
namespace test {
namespace name {
namespace {
constexpr uint32_t kInterface_Method_GenOrdinal = 1u;
constexpr uint32_t kInterface_Method_Ordinal = 1061382220u;
extern "C" const fidl_type_t test_name_InterfaceMethodRequestTable;
} // namespace
Interface::~Interface() = default;
Interface_EventSender::~Interface_EventSender() = default;
Interface_Sync::~Interface_Sync() = default;
Interface_Proxy::Interface_Proxy(::fidl::internal::ProxyController* controller)
: controller_(controller) {
(void)controller_;
}
Interface_Proxy::~Interface_Proxy() = default;
zx_status_t Interface_Proxy::Dispatch_(::fidl::Message message) {
zx_status_t status = ZX_OK;
switch (message.ordinal()) {
default: {
status = ZX_ERR_NOT_SUPPORTED;
break;
}
}
return status;
}
void Interface_Proxy::Method() {
::fidl::Encoder _encoder(kInterface_Method_Ordinal);
controller_->Send(&test_name_InterfaceMethodRequestTable, _encoder.GetMessage(), nullptr);
}
Interface_Stub::Interface_Stub(Interface_clazz* impl) : impl_(impl) {
(void)impl_;
}
Interface_Stub::~Interface_Stub() = default;
namespace {
} // namespace
zx_status_t Interface_Stub::Dispatch_(
::fidl::Message message,
::fidl::internal::PendingResponse response) {
zx_status_t status = ZX_OK;
uint32_t ordinal = message.ordinal();
switch (ordinal) {
case kInterface_Method_GenOrdinal:
case kInterface_Method_Ordinal: {
const char* error_msg = nullptr;
status = message.Decode(&test_name_InterfaceMethodRequestTable, &error_msg);
if (status != ZX_OK) {
FIDL_REPORT_DECODING_ERROR(message, &test_name_InterfaceMethodRequestTable, error_msg);
break;
}
impl_->Method();
break;
}
default: {
status = ZX_ERR_NOT_SUPPORTED;
break;
}
}
return status;
}
Interface_SyncProxy::Interface_SyncProxy(::zx::channel channel)
: proxy_(::std::move(channel)) {}
Interface_SyncProxy::~Interface_SyncProxy() = default;
zx_status_t Interface_SyncProxy::Method() {
::fidl::Encoder _encoder(kInterface_Method_Ordinal);
return proxy_.Send(&test_name_InterfaceMethodRequestTable, _encoder.GetMessage());
}
extern "C" const fidl_type_t test_name_StructTable;
const fidl_type_t* Struct::FidlType = &test_name_StructTable;
void Struct::Encode(::fidl::Encoder* encoder, size_t offset) {
::fidl::Encode(encoder, &Field, offset + 0);
}
void Struct::Decode(::fidl::Decoder* decoder, Struct* value, size_t offset) {
::fidl::Decode(decoder, &value->Field, offset + 0);
}
zx_status_t Struct::Clone(Struct* result) const {
zx_status_t _status = ::fidl::Clone(Field, &result->Field);
if (_status != ZX_OK)
return _status;
return ZX_OK;
}
bool operator==(const Struct& lhs, const Struct& rhs) {
if (!::fidl::Equals(lhs.Field, rhs.Field)) {
return false;
}
return true;
}
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, &Field(), offset + 4);
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 + 4);
value->set_Field(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::kField:
{
int32_t member{};
status = ::fidl::Clone(Field(), &member);
if (status == ZX_OK) {
result->set_Field(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::kField:
return ::fidl::Equals(lhs.Field(), rhs.Field());
case Union::Tag::Invalid:
return true;
default:
return false;
}
}
void Union::set_Field(int32_t value) {
value_.emplace<static_cast<size_t>(Tag::kField) + 1>(std::move(value));
}
extern "C" const fidl_type_t test_name_TableTable;
const fidl_type_t* Table::FidlType = &test_name_TableTable;
Table::Table() :
has_Field_(false) {
}
Table::Table(Table&& other) {
has_Field_ = other.has_Field_;
if (has_Field_) {
Construct(&Field_.value, std::move(other.Field_.value));
}
}
Table::~Table() {
if (has_Field_) {
Destruct(&Field_.value);
}
}
Table& Table::operator=(Table&& other) {
if (other.has_Field_) {
if (has_Field_) {
Field_.value = std::move(other.Field_.value);
} else {
has_Field_ = true;
Construct(&Field_.value, std::move(other.Field_.value));
}
} else if (has_Field_) {
has_Field_ = false;
Destruct(&Field_.value);
}
return *this;
}
void Table::Encode(::fidl::Encoder* encoder, size_t offset) {
size_t max_ordinal = 0;
if (has_Field_) max_ordinal = 1;
::fidl::EncodeVectorPointer(encoder, max_ordinal, offset);
if (max_ordinal == 0) return;
size_t base = encoder->Alloc(max_ordinal * 2 * sizeof(uint64_t));
if (has_Field_) {
const size_t length_before = encoder->CurrentLength();
const size_t handles_before = encoder->CurrentHandleCount();
::fidl::Encode(
encoder,
&Field_.value,
encoder->Alloc(::fidl::CodingTraits<int32_t>::encoded_size));
size_t envelope_base = base + (1 - 1) * 2 * sizeof(uint64_t);
uint64_t num_bytes_then_num_handles =
(encoder->CurrentLength() - length_before) |
((encoder->CurrentHandleCount() - handles_before) << 32);
::fidl::Encode(encoder, &num_bytes_then_num_handles, envelope_base);
*encoder->GetPtr<uintptr_t>(envelope_base + sizeof(uint64_t)) = FIDL_ALLOC_PRESENT;
}
}
void Table::Decode(::fidl::Decoder* decoder, Table* value, size_t offset) {
fidl_vector_t* encoded = decoder->GetPtr<fidl_vector_t>(offset);
size_t base;
size_t count;
if (!encoded->data) {
goto clear_all;
}
base = decoder->GetOffset(encoded->data);
count = encoded->count;
if (count >= 1) {
size_t envelope_base = base + (1 - 1) * 2 * sizeof(uint64_t);
uint64_t presence;
::fidl::Decode(decoder, &presence, envelope_base + sizeof(uint64_t));
if (presence != 0) {
::fidl::Decode(decoder, value->mutable_Field(), decoder->GetOffset(presence));
} else {
value->clear_Field();
}
} else {
goto done_1;
}
return;
// Clear unset values.
clear_all:
done_1:
value->clear_Field();
return;
}
zx_status_t Table::Clone(Table* result) const {
if (has_Field_) {
zx_status_t _status = ::fidl::Clone(Field_.value, result->mutable_Field());
if (_status != ZX_OK)
return _status;
} else {
result->clear_Field();
}
return ZX_OK;
}
bool operator==(const Table& lhs, const Table& rhs) {
if (lhs.has_Field()) {
if (!rhs.has_Field()) {
return false;
}
if (!::fidl::Equals(*lhs.Field(), *rhs.Field())) {
return false;
}
} else if (rhs.has_Field()) {
return false;
}
return true;
}
} // namespace name
} // namespace test