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

#![allow(
	unused_parens, // one-element-tuple-case is not a tuple
	unused_mut, // not all args require mutation, but many do
	nonstandard_style, // auto-caps does its best, but is not always successful
)]
#![recursion_limit = "512"]

#[cfg(target_os = "fuchsia")]
#[allow(unused_imports)]
use fuchsia_zircon as zx;

#[allow(unused_imports)]
use {
    bitflags::bitflags,
    fidl::{
        client::{decode_transaction_body_fut, QueryResponseFut},
        encoding::{Decodable as _, Encodable as _},
        fidl_bits, fidl_empty_struct, fidl_enum, fidl_struct, fidl_struct_copy, fidl_table,
        fidl_union, wrap_handle_metadata,
    },
    fuchsia_zircon_status as zx_status,
    futures::future::{self, MaybeDone, TryFutureExt},
};

#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct Simple {
    pub f1: u8,
    pub f2: bool,
}

impl fidl::encoding::Persistable for Simple {}

fidl_struct! {
  name: Simple,
  members: [
    f1 {
      ty: u8,
      offset_v1: 0,
      offset_v2: 0,
    },
    f2 {
      ty: bool,
      offset_v1: 1,
      offset_v2: 1,
    },
  ],
  padding_v1: [],
  padding_v2: [],
  size_v1: 2,
  size_v2: 2,
  align_v1: 1,
  align_v2: 1,
}

#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct BasicStruct {
    pub x: u32,
    pub y: String,
}

impl fidl::encoding::Persistable for BasicStruct {}

fidl_struct! {
  name: BasicStruct,
  members: [
    x {
      ty: u32,
      offset_v1: 0,
      offset_v2: 0,
    },
    y {
      ty: String,
      offset_v1: 8,
      offset_v2: 8,
    },
  ],
  padding_v1: [
  {
      ty: u64,
      offset: 0,
      mask: 0xffffffff00000000u64,
  },],
  padding_v2: [
  {
      ty: u64,
      offset: 0,
      mask: 0xffffffff00000000u64,
  },],
  size_v1: 24,
  size_v2: 24,
  align_v1: 8,
  align_v2: 8,
}
