// WARNING: This file is machine generated by fidlgen_cpp.

#include <fidl/test/emptystruct/cpp/fidl_v2.h>

#ifdef __Fuchsia__

::fidl_test_emptystruct::Empty::Empty(::fidl::Decoder& decoder)
    : storage_({::fidl::DecodeAs<uint8_t>(&decoder, 0)}) {}
#endif  // __Fuchsia__

#ifdef __Fuchsia__

::fidl_test_emptystruct::EmptyProtocolSendRequest::EmptyProtocolSendRequest(
    ::fidl::Decoder& decoder)
    : storage_(
          {::fidl::DecodeAs<::fidl_test_emptystruct::Empty>(&decoder, 0)}) {}
#endif  // __Fuchsia__

#ifdef __Fuchsia__

::fidl_test_emptystruct::EmptyProtocolSendAndReceiveTopResponse::
    EmptyProtocolSendAndReceiveTopResponse(::fidl::Decoder& decoder)
    : storage_(
          {::fidl::DecodeAs<::fidl_test_emptystruct::Empty>(&decoder, 0)}) {}
#endif  // __Fuchsia__

#ifdef __Fuchsia__

::fidl_test_emptystruct::EmptyProtocolSendAndReceiveRequest::
    EmptyProtocolSendAndReceiveRequest(::fidl::Decoder& decoder)
    : storage_(
          {::fidl::DecodeAs<::fidl_test_emptystruct::Empty>(&decoder, 0)}) {}
#endif  // __Fuchsia__

#ifdef __Fuchsia__

::fidl_test_emptystruct::EmptyProtocolReceiveRequest::
    EmptyProtocolReceiveRequest(::fidl::Decoder& decoder)
    : storage_(
          {::fidl::DecodeAs<::fidl_test_emptystruct::Empty>(&decoder, 0)}) {}
#endif  // __Fuchsia__
