1#![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 ConverterSetMinimumRgbRequest {
14 pub minimum_rgb: u8,
15}
16
17impl fidl::Persistable for ConverterSetMinimumRgbRequest {}
18
19#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
20pub struct ConverterSetMinimumRgbResponse {
21 pub supported: bool,
22}
23
24impl fidl::Persistable for ConverterSetMinimumRgbResponse {}
25
26#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27#[repr(C)]
28pub struct ConverterSetValuesResponse {
29 pub res: i32,
30}
31
32impl fidl::Persistable for ConverterSetValuesResponse {}
33
34#[derive(Clone, Debug, Default, PartialEq)]
41pub struct ConversionProperties {
42 pub coefficients: Option<[f32; 9]>,
49 pub preoffsets: Option<[f32; 3]>,
51 pub postoffsets: Option<[f32; 3]>,
52 #[doc(hidden)]
53 pub __source_breaking: fidl::marker::SourceBreaking,
54}
55
56impl fidl::Persistable for ConversionProperties {}
57
58pub mod converter_ordinals {
59 pub const SET_VALUES: u64 = 0x64131a672b34af8d;
60 pub const SET_MINIMUM_RGB: u64 = 0x45dd02bf82f653d1;
61}
62
63mod internal {
64 use super::*;
65
66 impl fidl::encoding::ValueTypeMarker for ConverterSetMinimumRgbRequest {
67 type Borrowed<'a> = &'a Self;
68 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
69 value
70 }
71 }
72
73 unsafe impl fidl::encoding::TypeMarker for ConverterSetMinimumRgbRequest {
74 type Owned = Self;
75
76 #[inline(always)]
77 fn inline_align(_context: fidl::encoding::Context) -> usize {
78 1
79 }
80
81 #[inline(always)]
82 fn inline_size(_context: fidl::encoding::Context) -> usize {
83 1
84 }
85 #[inline(always)]
86 fn encode_is_copy() -> bool {
87 true
88 }
89
90 #[inline(always)]
91 fn decode_is_copy() -> bool {
92 true
93 }
94 }
95
96 unsafe impl<D: fidl::encoding::ResourceDialect>
97 fidl::encoding::Encode<ConverterSetMinimumRgbRequest, D>
98 for &ConverterSetMinimumRgbRequest
99 {
100 #[inline]
101 unsafe fn encode(
102 self,
103 encoder: &mut fidl::encoding::Encoder<'_, D>,
104 offset: usize,
105 _depth: fidl::encoding::Depth,
106 ) -> fidl::Result<()> {
107 encoder.debug_check_bounds::<ConverterSetMinimumRgbRequest>(offset);
108 unsafe {
109 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
111 (buf_ptr as *mut ConverterSetMinimumRgbRequest)
112 .write_unaligned((self as *const ConverterSetMinimumRgbRequest).read());
113 }
116 Ok(())
117 }
118 }
119 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
120 fidl::encoding::Encode<ConverterSetMinimumRgbRequest, D> for (T0,)
121 {
122 #[inline]
123 unsafe fn encode(
124 self,
125 encoder: &mut fidl::encoding::Encoder<'_, D>,
126 offset: usize,
127 depth: fidl::encoding::Depth,
128 ) -> fidl::Result<()> {
129 encoder.debug_check_bounds::<ConverterSetMinimumRgbRequest>(offset);
130 self.0.encode(encoder, offset + 0, depth)?;
134 Ok(())
135 }
136 }
137
138 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
139 for ConverterSetMinimumRgbRequest
140 {
141 #[inline(always)]
142 fn new_empty() -> Self {
143 Self { minimum_rgb: fidl::new_empty!(u8, D) }
144 }
145
146 #[inline]
147 unsafe fn decode(
148 &mut self,
149 decoder: &mut fidl::encoding::Decoder<'_, D>,
150 offset: usize,
151 _depth: fidl::encoding::Depth,
152 ) -> fidl::Result<()> {
153 decoder.debug_check_bounds::<Self>(offset);
154 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
155 unsafe {
158 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
159 }
160 Ok(())
161 }
162 }
163
164 impl fidl::encoding::ValueTypeMarker for ConverterSetMinimumRgbResponse {
165 type Borrowed<'a> = &'a Self;
166 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
167 value
168 }
169 }
170
171 unsafe impl fidl::encoding::TypeMarker for ConverterSetMinimumRgbResponse {
172 type Owned = Self;
173
174 #[inline(always)]
175 fn inline_align(_context: fidl::encoding::Context) -> usize {
176 1
177 }
178
179 #[inline(always)]
180 fn inline_size(_context: fidl::encoding::Context) -> usize {
181 1
182 }
183 }
184
185 unsafe impl<D: fidl::encoding::ResourceDialect>
186 fidl::encoding::Encode<ConverterSetMinimumRgbResponse, D>
187 for &ConverterSetMinimumRgbResponse
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::<ConverterSetMinimumRgbResponse>(offset);
197 fidl::encoding::Encode::<ConverterSetMinimumRgbResponse, D>::encode(
199 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.supported),),
200 encoder,
201 offset,
202 _depth,
203 )
204 }
205 }
206 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
207 fidl::encoding::Encode<ConverterSetMinimumRgbResponse, D> for (T0,)
208 {
209 #[inline]
210 unsafe fn encode(
211 self,
212 encoder: &mut fidl::encoding::Encoder<'_, D>,
213 offset: usize,
214 depth: fidl::encoding::Depth,
215 ) -> fidl::Result<()> {
216 encoder.debug_check_bounds::<ConverterSetMinimumRgbResponse>(offset);
217 self.0.encode(encoder, offset + 0, depth)?;
221 Ok(())
222 }
223 }
224
225 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
226 for ConverterSetMinimumRgbResponse
227 {
228 #[inline(always)]
229 fn new_empty() -> Self {
230 Self { supported: fidl::new_empty!(bool, D) }
231 }
232
233 #[inline]
234 unsafe fn decode(
235 &mut self,
236 decoder: &mut fidl::encoding::Decoder<'_, D>,
237 offset: usize,
238 _depth: fidl::encoding::Depth,
239 ) -> fidl::Result<()> {
240 decoder.debug_check_bounds::<Self>(offset);
241 fidl::decode!(bool, D, &mut self.supported, decoder, offset + 0, _depth)?;
243 Ok(())
244 }
245 }
246
247 impl fidl::encoding::ValueTypeMarker for ConverterSetValuesResponse {
248 type Borrowed<'a> = &'a Self;
249 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
250 value
251 }
252 }
253
254 unsafe impl fidl::encoding::TypeMarker for ConverterSetValuesResponse {
255 type Owned = Self;
256
257 #[inline(always)]
258 fn inline_align(_context: fidl::encoding::Context) -> usize {
259 4
260 }
261
262 #[inline(always)]
263 fn inline_size(_context: fidl::encoding::Context) -> usize {
264 4
265 }
266 #[inline(always)]
267 fn encode_is_copy() -> bool {
268 true
269 }
270
271 #[inline(always)]
272 fn decode_is_copy() -> bool {
273 true
274 }
275 }
276
277 unsafe impl<D: fidl::encoding::ResourceDialect>
278 fidl::encoding::Encode<ConverterSetValuesResponse, D> for &ConverterSetValuesResponse
279 {
280 #[inline]
281 unsafe fn encode(
282 self,
283 encoder: &mut fidl::encoding::Encoder<'_, D>,
284 offset: usize,
285 _depth: fidl::encoding::Depth,
286 ) -> fidl::Result<()> {
287 encoder.debug_check_bounds::<ConverterSetValuesResponse>(offset);
288 unsafe {
289 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
291 (buf_ptr as *mut ConverterSetValuesResponse)
292 .write_unaligned((self as *const ConverterSetValuesResponse).read());
293 }
296 Ok(())
297 }
298 }
299 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
300 fidl::encoding::Encode<ConverterSetValuesResponse, D> for (T0,)
301 {
302 #[inline]
303 unsafe fn encode(
304 self,
305 encoder: &mut fidl::encoding::Encoder<'_, D>,
306 offset: usize,
307 depth: fidl::encoding::Depth,
308 ) -> fidl::Result<()> {
309 encoder.debug_check_bounds::<ConverterSetValuesResponse>(offset);
310 self.0.encode(encoder, offset + 0, depth)?;
314 Ok(())
315 }
316 }
317
318 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
319 for ConverterSetValuesResponse
320 {
321 #[inline(always)]
322 fn new_empty() -> Self {
323 Self { res: fidl::new_empty!(i32, D) }
324 }
325
326 #[inline]
327 unsafe fn decode(
328 &mut self,
329 decoder: &mut fidl::encoding::Decoder<'_, D>,
330 offset: usize,
331 _depth: fidl::encoding::Depth,
332 ) -> fidl::Result<()> {
333 decoder.debug_check_bounds::<Self>(offset);
334 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
335 unsafe {
338 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
339 }
340 Ok(())
341 }
342 }
343
344 impl ConversionProperties {
345 #[inline(always)]
346 fn max_ordinal_present(&self) -> u64 {
347 if let Some(_) = self.postoffsets {
348 return 3;
349 }
350 if let Some(_) = self.preoffsets {
351 return 2;
352 }
353 if let Some(_) = self.coefficients {
354 return 1;
355 }
356 0
357 }
358 }
359
360 impl fidl::encoding::ValueTypeMarker for ConversionProperties {
361 type Borrowed<'a> = &'a Self;
362 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
363 value
364 }
365 }
366
367 unsafe impl fidl::encoding::TypeMarker for ConversionProperties {
368 type Owned = Self;
369
370 #[inline(always)]
371 fn inline_align(_context: fidl::encoding::Context) -> usize {
372 8
373 }
374
375 #[inline(always)]
376 fn inline_size(_context: fidl::encoding::Context) -> usize {
377 16
378 }
379 }
380
381 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConversionProperties, D>
382 for &ConversionProperties
383 {
384 unsafe fn encode(
385 self,
386 encoder: &mut fidl::encoding::Encoder<'_, D>,
387 offset: usize,
388 mut depth: fidl::encoding::Depth,
389 ) -> fidl::Result<()> {
390 encoder.debug_check_bounds::<ConversionProperties>(offset);
391 let max_ordinal: u64 = self.max_ordinal_present();
393 encoder.write_num(max_ordinal, offset);
394 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
395 if max_ordinal == 0 {
397 return Ok(());
398 }
399 depth.increment()?;
400 let envelope_size = 8;
401 let bytes_len = max_ordinal as usize * envelope_size;
402 #[allow(unused_variables)]
403 let offset = encoder.out_of_line_offset(bytes_len);
404 let mut _prev_end_offset: usize = 0;
405 if 1 > max_ordinal {
406 return Ok(());
407 }
408
409 let cur_offset: usize = (1 - 1) * envelope_size;
412
413 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
415
416 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 9>, D>(
421 self.coefficients.as_ref().map(
422 <fidl::encoding::Array<f32, 9> as fidl::encoding::ValueTypeMarker>::borrow,
423 ),
424 encoder,
425 offset + cur_offset,
426 depth,
427 )?;
428
429 _prev_end_offset = cur_offset + envelope_size;
430 if 2 > max_ordinal {
431 return Ok(());
432 }
433
434 let cur_offset: usize = (2 - 1) * envelope_size;
437
438 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
440
441 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 3>, D>(
446 self.preoffsets.as_ref().map(
447 <fidl::encoding::Array<f32, 3> as fidl::encoding::ValueTypeMarker>::borrow,
448 ),
449 encoder,
450 offset + cur_offset,
451 depth,
452 )?;
453
454 _prev_end_offset = cur_offset + envelope_size;
455 if 3 > max_ordinal {
456 return Ok(());
457 }
458
459 let cur_offset: usize = (3 - 1) * envelope_size;
462
463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
465
466 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 3>, D>(
471 self.postoffsets.as_ref().map(
472 <fidl::encoding::Array<f32, 3> as fidl::encoding::ValueTypeMarker>::borrow,
473 ),
474 encoder,
475 offset + cur_offset,
476 depth,
477 )?;
478
479 _prev_end_offset = cur_offset + envelope_size;
480
481 Ok(())
482 }
483 }
484
485 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConversionProperties {
486 #[inline(always)]
487 fn new_empty() -> Self {
488 Self::default()
489 }
490
491 unsafe fn decode(
492 &mut self,
493 decoder: &mut fidl::encoding::Decoder<'_, D>,
494 offset: usize,
495 mut depth: fidl::encoding::Depth,
496 ) -> fidl::Result<()> {
497 decoder.debug_check_bounds::<Self>(offset);
498 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
499 None => return Err(fidl::Error::NotNullable),
500 Some(len) => len,
501 };
502 if len == 0 {
504 return Ok(());
505 };
506 depth.increment()?;
507 let envelope_size = 8;
508 let bytes_len = len * envelope_size;
509 let offset = decoder.out_of_line_offset(bytes_len)?;
510 let mut _next_ordinal_to_read = 0;
512 let mut next_offset = offset;
513 let end_offset = offset + bytes_len;
514 _next_ordinal_to_read += 1;
515 if next_offset >= end_offset {
516 return Ok(());
517 }
518
519 while _next_ordinal_to_read < 1 {
521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
522 _next_ordinal_to_read += 1;
523 next_offset += envelope_size;
524 }
525
526 let next_out_of_line = decoder.next_out_of_line();
527 let handles_before = decoder.remaining_handles();
528 if let Some((inlined, num_bytes, num_handles)) =
529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
530 {
531 let member_inline_size =
532 <fidl::encoding::Array<f32, 9> as fidl::encoding::TypeMarker>::inline_size(
533 decoder.context,
534 );
535 if inlined != (member_inline_size <= 4) {
536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
537 }
538 let inner_offset;
539 let mut inner_depth = depth.clone();
540 if inlined {
541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
542 inner_offset = next_offset;
543 } else {
544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
545 inner_depth.increment()?;
546 }
547 let val_ref = self
548 .coefficients
549 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 9>, D));
550 fidl::decode!(fidl::encoding::Array<f32, 9>, D, val_ref, decoder, inner_offset, inner_depth)?;
551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
552 {
553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
554 }
555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
557 }
558 }
559
560 next_offset += envelope_size;
561 _next_ordinal_to_read += 1;
562 if next_offset >= end_offset {
563 return Ok(());
564 }
565
566 while _next_ordinal_to_read < 2 {
568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
569 _next_ordinal_to_read += 1;
570 next_offset += envelope_size;
571 }
572
573 let next_out_of_line = decoder.next_out_of_line();
574 let handles_before = decoder.remaining_handles();
575 if let Some((inlined, num_bytes, num_handles)) =
576 fidl::encoding::decode_envelope_header(decoder, next_offset)?
577 {
578 let member_inline_size =
579 <fidl::encoding::Array<f32, 3> as fidl::encoding::TypeMarker>::inline_size(
580 decoder.context,
581 );
582 if inlined != (member_inline_size <= 4) {
583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
584 }
585 let inner_offset;
586 let mut inner_depth = depth.clone();
587 if inlined {
588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
589 inner_offset = next_offset;
590 } else {
591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
592 inner_depth.increment()?;
593 }
594 let val_ref = self
595 .preoffsets
596 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 3>, D));
597 fidl::decode!(fidl::encoding::Array<f32, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
599 {
600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
601 }
602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
604 }
605 }
606
607 next_offset += envelope_size;
608 _next_ordinal_to_read += 1;
609 if next_offset >= end_offset {
610 return Ok(());
611 }
612
613 while _next_ordinal_to_read < 3 {
615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
616 _next_ordinal_to_read += 1;
617 next_offset += envelope_size;
618 }
619
620 let next_out_of_line = decoder.next_out_of_line();
621 let handles_before = decoder.remaining_handles();
622 if let Some((inlined, num_bytes, num_handles)) =
623 fidl::encoding::decode_envelope_header(decoder, next_offset)?
624 {
625 let member_inline_size =
626 <fidl::encoding::Array<f32, 3> as fidl::encoding::TypeMarker>::inline_size(
627 decoder.context,
628 );
629 if inlined != (member_inline_size <= 4) {
630 return Err(fidl::Error::InvalidInlineBitInEnvelope);
631 }
632 let inner_offset;
633 let mut inner_depth = depth.clone();
634 if inlined {
635 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
636 inner_offset = next_offset;
637 } else {
638 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
639 inner_depth.increment()?;
640 }
641 let val_ref = self
642 .postoffsets
643 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 3>, D));
644 fidl::decode!(fidl::encoding::Array<f32, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
645 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
646 {
647 return Err(fidl::Error::InvalidNumBytesInEnvelope);
648 }
649 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
650 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
651 }
652 }
653
654 next_offset += envelope_size;
655
656 while next_offset < end_offset {
658 _next_ordinal_to_read += 1;
659 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
660 next_offset += envelope_size;
661 }
662
663 Ok(())
664 }
665 }
666}