fidl_test_exampletester__common/
fidl_test_exampletester__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12#[repr(C)]
13pub struct SimpleAddRequest {
14    pub augend: u8,
15    pub addend: u8,
16}
17
18impl fidl::Persistable for SimpleAddRequest {}
19
20#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
21#[repr(C)]
22pub struct SimpleAddResponse {
23    pub sum: u16,
24}
25
26impl fidl::Persistable for SimpleAddResponse {}
27
28pub mod simple_ordinals {
29    pub const ADD: u64 = 0x6f3077f69a049823;
30}
31
32mod internal {
33    use super::*;
34
35    impl fidl::encoding::ValueTypeMarker for SimpleAddRequest {
36        type Borrowed<'a> = &'a Self;
37        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
38            value
39        }
40    }
41
42    unsafe impl fidl::encoding::TypeMarker for SimpleAddRequest {
43        type Owned = Self;
44
45        #[inline(always)]
46        fn inline_align(_context: fidl::encoding::Context) -> usize {
47            1
48        }
49
50        #[inline(always)]
51        fn inline_size(_context: fidl::encoding::Context) -> usize {
52            2
53        }
54        #[inline(always)]
55        fn encode_is_copy() -> bool {
56            true
57        }
58
59        #[inline(always)]
60        fn decode_is_copy() -> bool {
61            true
62        }
63    }
64
65    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SimpleAddRequest, D>
66        for &SimpleAddRequest
67    {
68        #[inline]
69        unsafe fn encode(
70            self,
71            encoder: &mut fidl::encoding::Encoder<'_, D>,
72            offset: usize,
73            _depth: fidl::encoding::Depth,
74        ) -> fidl::Result<()> {
75            encoder.debug_check_bounds::<SimpleAddRequest>(offset);
76            unsafe {
77                // Copy the object into the buffer.
78                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
79                (buf_ptr as *mut SimpleAddRequest)
80                    .write_unaligned((self as *const SimpleAddRequest).read());
81                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
82                // done second because the memcpy will write garbage to these bytes.
83            }
84            Ok(())
85        }
86    }
87    unsafe impl<
88            D: fidl::encoding::ResourceDialect,
89            T0: fidl::encoding::Encode<u8, D>,
90            T1: fidl::encoding::Encode<u8, D>,
91        > fidl::encoding::Encode<SimpleAddRequest, D> for (T0, T1)
92    {
93        #[inline]
94        unsafe fn encode(
95            self,
96            encoder: &mut fidl::encoding::Encoder<'_, D>,
97            offset: usize,
98            depth: fidl::encoding::Depth,
99        ) -> fidl::Result<()> {
100            encoder.debug_check_bounds::<SimpleAddRequest>(offset);
101            // Zero out padding regions. There's no need to apply masks
102            // because the unmasked parts will be overwritten by fields.
103            // Write the fields.
104            self.0.encode(encoder, offset + 0, depth)?;
105            self.1.encode(encoder, offset + 1, depth)?;
106            Ok(())
107        }
108    }
109
110    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SimpleAddRequest {
111        #[inline(always)]
112        fn new_empty() -> Self {
113            Self { augend: fidl::new_empty!(u8, D), addend: fidl::new_empty!(u8, D) }
114        }
115
116        #[inline]
117        unsafe fn decode(
118            &mut self,
119            decoder: &mut fidl::encoding::Decoder<'_, D>,
120            offset: usize,
121            _depth: fidl::encoding::Depth,
122        ) -> fidl::Result<()> {
123            decoder.debug_check_bounds::<Self>(offset);
124            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
125            // Verify that padding bytes are zero.
126            // Copy from the buffer into the object.
127            unsafe {
128                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
129            }
130            Ok(())
131        }
132    }
133
134    impl fidl::encoding::ValueTypeMarker for SimpleAddResponse {
135        type Borrowed<'a> = &'a Self;
136        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
137            value
138        }
139    }
140
141    unsafe impl fidl::encoding::TypeMarker for SimpleAddResponse {
142        type Owned = Self;
143
144        #[inline(always)]
145        fn inline_align(_context: fidl::encoding::Context) -> usize {
146            2
147        }
148
149        #[inline(always)]
150        fn inline_size(_context: fidl::encoding::Context) -> usize {
151            2
152        }
153        #[inline(always)]
154        fn encode_is_copy() -> bool {
155            true
156        }
157
158        #[inline(always)]
159        fn decode_is_copy() -> bool {
160            true
161        }
162    }
163
164    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SimpleAddResponse, D>
165        for &SimpleAddResponse
166    {
167        #[inline]
168        unsafe fn encode(
169            self,
170            encoder: &mut fidl::encoding::Encoder<'_, D>,
171            offset: usize,
172            _depth: fidl::encoding::Depth,
173        ) -> fidl::Result<()> {
174            encoder.debug_check_bounds::<SimpleAddResponse>(offset);
175            unsafe {
176                // Copy the object into the buffer.
177                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
178                (buf_ptr as *mut SimpleAddResponse)
179                    .write_unaligned((self as *const SimpleAddResponse).read());
180                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
181                // done second because the memcpy will write garbage to these bytes.
182            }
183            Ok(())
184        }
185    }
186    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u16, D>>
187        fidl::encoding::Encode<SimpleAddResponse, D> for (T0,)
188    {
189        #[inline]
190        unsafe fn encode(
191            self,
192            encoder: &mut fidl::encoding::Encoder<'_, D>,
193            offset: usize,
194            depth: fidl::encoding::Depth,
195        ) -> fidl::Result<()> {
196            encoder.debug_check_bounds::<SimpleAddResponse>(offset);
197            // Zero out padding regions. There's no need to apply masks
198            // because the unmasked parts will be overwritten by fields.
199            // Write the fields.
200            self.0.encode(encoder, offset + 0, depth)?;
201            Ok(())
202        }
203    }
204
205    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SimpleAddResponse {
206        #[inline(always)]
207        fn new_empty() -> Self {
208            Self { sum: fidl::new_empty!(u16, D) }
209        }
210
211        #[inline]
212        unsafe fn decode(
213            &mut self,
214            decoder: &mut fidl::encoding::Decoder<'_, D>,
215            offset: usize,
216            _depth: fidl::encoding::Depth,
217        ) -> fidl::Result<()> {
218            decoder.debug_check_bounds::<Self>(offset);
219            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
220            // Verify that padding bytes are zero.
221            // Copy from the buffer into the object.
222            unsafe {
223                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
224            }
225            Ok(())
226        }
227    }
228}