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

#include <struct_default_value_enum_library_reference.test.json.h>

#include "lib/fidl/cpp/internal/implementation.h"
namespace example {

extern "C" const fidl_type_t v1_example_FooTable;
const fidl_type_t* Foo::FidlType = &v1_example_FooTable;

void Foo::Encode(::fidl::Encoder* _encoder, size_t _offset) {
  ::fidl::Encode(_encoder, &field, _offset + 0);
}

void Foo::Decode(::fidl::Decoder* _decoder, Foo* value, size_t _offset) {
  ::fidl::Decode(_decoder, &value->field, _offset + 0);
}

zx_status_t Foo::Clone(Foo* _result) const {
  zx_status_t _status = ::fidl::Clone(field, &_result->field);
  if (_status != ZX_OK) return _status;
  return ZX_OK;
}
}  // namespace example
