fidl_cf_sc_internal_starnixcontainerstructuredconfig__common/
fidl_cf_sc_internal_starnixcontainerstructuredconfig__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, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct Config {
13    pub enable_utc_time_adjustment: bool,
14    pub enable_wake_alarms: bool,
15    pub extra_features: Vec<String>,
16    pub mlock_always_onfault: bool,
17    pub mlock_pin_flavor: String,
18    pub selinux_exceptions: Vec<String>,
19    pub ui_visual_debugging_level: u8,
20}
21
22impl fidl::Persistable for Config {}
23
24mod internal {
25    use super::*;
26
27    impl fidl::encoding::ValueTypeMarker for Config {
28        type Borrowed<'a> = &'a Self;
29        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
30            value
31        }
32    }
33
34    unsafe impl fidl::encoding::TypeMarker for Config {
35        type Owned = Self;
36
37        #[inline(always)]
38        fn inline_align(_context: fidl::encoding::Context) -> usize {
39            8
40        }
41
42        #[inline(always)]
43        fn inline_size(_context: fidl::encoding::Context) -> usize {
44            72
45        }
46    }
47
48    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
49        #[inline]
50        unsafe fn encode(
51            self,
52            encoder: &mut fidl::encoding::Encoder<'_, D>,
53            offset: usize,
54            _depth: fidl::encoding::Depth,
55        ) -> fidl::Result<()> {
56            encoder.debug_check_bounds::<Config>(offset);
57            // Delegate to tuple encoding.
58            fidl::encoding::Encode::<Config, D>::encode(
59                (
60                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_utc_time_adjustment),
61                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_wake_alarms),
62                    <fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.extra_features),
63                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.mlock_always_onfault),
64                    <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow(&self.mlock_pin_flavor),
65                    <fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024> as fidl::encoding::ValueTypeMarker>::borrow(&self.selinux_exceptions),
66                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ui_visual_debugging_level),
67                ),
68                encoder, offset, _depth
69            )
70        }
71    }
72    unsafe impl<
73            D: fidl::encoding::ResourceDialect,
74            T0: fidl::encoding::Encode<bool, D>,
75            T1: fidl::encoding::Encode<bool, D>,
76            T2: fidl::encoding::Encode<
77                fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
78                D,
79            >,
80            T3: fidl::encoding::Encode<bool, D>,
81            T4: fidl::encoding::Encode<fidl::encoding::BoundedString<100>, D>,
82            T5: fidl::encoding::Encode<
83                fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
84                D,
85            >,
86            T6: fidl::encoding::Encode<u8, D>,
87        > fidl::encoding::Encode<Config, D> for (T0, T1, T2, T3, T4, T5, T6)
88    {
89        #[inline]
90        unsafe fn encode(
91            self,
92            encoder: &mut fidl::encoding::Encoder<'_, D>,
93            offset: usize,
94            depth: fidl::encoding::Depth,
95        ) -> fidl::Result<()> {
96            encoder.debug_check_bounds::<Config>(offset);
97            // Zero out padding regions. There's no need to apply masks
98            // because the unmasked parts will be overwritten by fields.
99            unsafe {
100                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
101                (ptr as *mut u64).write_unaligned(0);
102            }
103            unsafe {
104                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
105                (ptr as *mut u64).write_unaligned(0);
106            }
107            unsafe {
108                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(64);
109                (ptr as *mut u64).write_unaligned(0);
110            }
111            // Write the fields.
112            self.0.encode(encoder, offset + 0, depth)?;
113            self.1.encode(encoder, offset + 1, depth)?;
114            self.2.encode(encoder, offset + 8, depth)?;
115            self.3.encode(encoder, offset + 24, depth)?;
116            self.4.encode(encoder, offset + 32, depth)?;
117            self.5.encode(encoder, offset + 48, depth)?;
118            self.6.encode(encoder, offset + 64, depth)?;
119            Ok(())
120        }
121    }
122
123    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
124        #[inline(always)]
125        fn new_empty() -> Self {
126            Self {
127                enable_utc_time_adjustment: fidl::new_empty!(bool, D),
128                enable_wake_alarms: fidl::new_empty!(bool, D),
129                extra_features: fidl::new_empty!(
130                    fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
131                    D
132                ),
133                mlock_always_onfault: fidl::new_empty!(bool, D),
134                mlock_pin_flavor: fidl::new_empty!(fidl::encoding::BoundedString<100>, D),
135                selinux_exceptions: fidl::new_empty!(
136                    fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
137                    D
138                ),
139                ui_visual_debugging_level: fidl::new_empty!(u8, D),
140            }
141        }
142
143        #[inline]
144        unsafe fn decode(
145            &mut self,
146            decoder: &mut fidl::encoding::Decoder<'_, D>,
147            offset: usize,
148            _depth: fidl::encoding::Depth,
149        ) -> fidl::Result<()> {
150            decoder.debug_check_bounds::<Self>(offset);
151            // Verify that padding bytes are zero.
152            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
153            let padval = unsafe { (ptr as *const u64).read_unaligned() };
154            let mask = 0xffffffffffff0000u64;
155            let maskedval = padval & mask;
156            if maskedval != 0 {
157                return Err(fidl::Error::NonZeroPadding {
158                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
159                });
160            }
161            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
162            let padval = unsafe { (ptr as *const u64).read_unaligned() };
163            let mask = 0xffffffffffffff00u64;
164            let maskedval = padval & mask;
165            if maskedval != 0 {
166                return Err(fidl::Error::NonZeroPadding {
167                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
168                });
169            }
170            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(64) };
171            let padval = unsafe { (ptr as *const u64).read_unaligned() };
172            let mask = 0xffffffffffffff00u64;
173            let maskedval = padval & mask;
174            if maskedval != 0 {
175                return Err(fidl::Error::NonZeroPadding {
176                    padding_start: offset + 64 + ((mask as u64).trailing_zeros() / 8) as usize,
177                });
178            }
179            fidl::decode!(
180                bool,
181                D,
182                &mut self.enable_utc_time_adjustment,
183                decoder,
184                offset + 0,
185                _depth
186            )?;
187            fidl::decode!(bool, D, &mut self.enable_wake_alarms, decoder, offset + 1, _depth)?;
188            fidl::decode!(
189                fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
190                D,
191                &mut self.extra_features,
192                decoder,
193                offset + 8,
194                _depth
195            )?;
196            fidl::decode!(bool, D, &mut self.mlock_always_onfault, decoder, offset + 24, _depth)?;
197            fidl::decode!(
198                fidl::encoding::BoundedString<100>,
199                D,
200                &mut self.mlock_pin_flavor,
201                decoder,
202                offset + 32,
203                _depth
204            )?;
205            fidl::decode!(
206                fidl::encoding::Vector<fidl::encoding::BoundedString<1024>, 1024>,
207                D,
208                &mut self.selinux_exceptions,
209                decoder,
210                offset + 48,
211                _depth
212            )?;
213            fidl::decode!(
214                u8,
215                D,
216                &mut self.ui_visual_debugging_level,
217                decoder,
218                offset + 64,
219                _depth
220            )?;
221            Ok(())
222        }
223    }
224}