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
11pub type Mat3 = [f32; 9];
14
15pub type Point2 = [f32; 2];
18
19pub type RelativeMotion = [f32; 2];
23
24pub type RelativeMotionRange = [fidl_fuchsia_input_common::Axis; 2];
25
26pub const MOUSE_MAX_EVENT: u32 = 128;
27
28pub const TOUCH_MAX_EVENT: u32 = 128;
29
30#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
57#[repr(u32)]
58pub enum EventPhase {
59 Add = 1,
61 Change = 2,
63 Remove = 3,
65 Cancel = 4,
67}
68
69impl EventPhase {
70 #[inline]
71 pub fn from_primitive(prim: u32) -> Option<Self> {
72 match prim {
73 1 => Some(Self::Add),
74 2 => Some(Self::Change),
75 3 => Some(Self::Remove),
76 4 => Some(Self::Cancel),
77 _ => None,
78 }
79 }
80
81 #[inline]
82 pub const fn into_primitive(self) -> u32 {
83 self as u32
84 }
85}
86
87#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
89#[repr(u32)]
90pub enum MouseViewStatus {
91 Entered = 1,
93 Exited = 2,
95}
96
97impl MouseViewStatus {
98 #[inline]
99 pub fn from_primitive(prim: u32) -> Option<Self> {
100 match prim {
101 1 => Some(Self::Entered),
102 2 => Some(Self::Exited),
103 _ => None,
104 }
105 }
106
107 #[inline]
108 pub const fn into_primitive(self) -> u32 {
109 self as u32
110 }
111}
112
113#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
115#[repr(u32)]
116pub enum TouchInteractionStatus {
117 Denied = 1,
119 Granted = 2,
121}
122
123impl TouchInteractionStatus {
124 #[inline]
125 pub fn from_primitive(prim: u32) -> Option<Self> {
126 match prim {
127 1 => Some(Self::Denied),
128 2 => Some(Self::Granted),
129 _ => None,
130 }
131 }
132
133 #[inline]
134 pub const fn into_primitive(self) -> u32 {
135 self as u32
136 }
137}
138
139#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
146#[repr(u32)]
147pub enum TouchResponseType {
148 No = 1,
152 Maybe = 2,
156 MaybePrioritize = 3,
161 MaybeSuppress = 4,
166 MaybePrioritizeSuppress = 5,
173 Hold = 6,
178 HoldSuppress = 7,
184 Yes = 8,
189 YesPrioritize = 9,
194}
195
196impl TouchResponseType {
197 #[inline]
198 pub fn from_primitive(prim: u32) -> Option<Self> {
199 match prim {
200 1 => Some(Self::No),
201 2 => Some(Self::Maybe),
202 3 => Some(Self::MaybePrioritize),
203 4 => Some(Self::MaybeSuppress),
204 5 => Some(Self::MaybePrioritizeSuppress),
205 6 => Some(Self::Hold),
206 7 => Some(Self::HoldSuppress),
207 8 => Some(Self::Yes),
208 9 => Some(Self::YesPrioritize),
209 _ => None,
210 }
211 }
212
213 #[inline]
214 pub const fn into_primitive(self) -> u32 {
215 self as u32
216 }
217}
218
219#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
224pub struct MouseEventStreamInfo {
225 pub device_id: u32,
227 pub status: MouseViewStatus,
229}
230
231impl fidl::Persistable for MouseEventStreamInfo {}
232
233#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
236pub struct Rectangle {
237 pub min: [f32; 2],
241 pub max: [f32; 2],
245}
246
247impl fidl::Persistable for Rectangle {}
248
249#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
270#[repr(C)]
271pub struct TouchInteractionId {
272 pub device_id: u32,
275 pub pointer_id: u32,
279 pub interaction_id: u32,
282}
283
284impl fidl::Persistable for TouchInteractionId {}
285
286#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
289pub struct TouchInteractionResult {
290 pub interaction: TouchInteractionId,
292 pub status: TouchInteractionStatus,
294}
295
296impl fidl::Persistable for TouchInteractionResult {}
297
298#[derive(Clone, Debug, PartialEq)]
299pub struct TouchSourceUpdateResponseRequest {
300 pub interaction: TouchInteractionId,
301 pub response: TouchResponse,
302}
303
304impl fidl::Persistable for TouchSourceUpdateResponseRequest {}
305
306#[derive(Clone, Debug, PartialEq)]
307pub struct TouchSourceWatchRequest {
308 pub responses: Vec<TouchResponse>,
309}
310
311impl fidl::Persistable for TouchSourceWatchRequest {}
312
313#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
326pub struct ViewParameters {
327 pub view: Rectangle,
332 pub viewport: Rectangle,
341 pub viewport_to_view_transform: [f32; 9],
344}
345
346impl fidl::Persistable for ViewParameters {}
347
348#[derive(Clone, Debug, Default, PartialEq)]
350pub struct MouseDeviceInfo {
351 pub id: Option<u32>,
354 pub scroll_v_range: Option<fidl_fuchsia_input_common::Axis>,
356 pub scroll_h_range: Option<fidl_fuchsia_input_common::Axis>,
358 pub buttons: Option<Vec<u8>>,
360 pub relative_motion_range: Option<[fidl_fuchsia_input_common::Axis; 2]>,
362 #[doc(hidden)]
363 pub __source_breaking: fidl::marker::SourceBreaking,
364}
365
366impl fidl::Persistable for MouseDeviceInfo {}
367
368#[derive(Clone, Debug, Default, PartialEq)]
376pub struct MousePointerSample {
377 pub device_id: Option<u32>,
380 pub position_in_viewport: Option<[f32; 2]>,
383 pub scroll_v: Option<i64>,
385 pub scroll_h: Option<i64>,
387 pub pressed_buttons: Option<Vec<u8>>,
389 pub relative_motion: Option<[f32; 2]>,
392 pub scroll_v_physical_pixel: Option<f64>,
395 pub scroll_h_physical_pixel: Option<f64>,
398 pub is_precision_scroll: Option<bool>,
402 #[doc(hidden)]
403 pub __source_breaking: fidl::marker::SourceBreaking,
404}
405
406impl fidl::Persistable for MousePointerSample {}
407
408#[derive(Clone, Debug, Default, PartialEq)]
410pub struct TouchDeviceInfo {
411 pub id: Option<u32>,
416 #[doc(hidden)]
417 pub __source_breaking: fidl::marker::SourceBreaking,
418}
419
420impl fidl::Persistable for TouchDeviceInfo {}
421
422#[derive(Clone, Debug, Default, PartialEq)]
425pub struct TouchPointerSample {
426 pub interaction: Option<TouchInteractionId>,
428 pub phase: Option<EventPhase>,
430 pub position_in_viewport: Option<[f32; 2]>,
432 #[doc(hidden)]
433 pub __source_breaking: fidl::marker::SourceBreaking,
434}
435
436impl fidl::Persistable for TouchPointerSample {}
437
438#[derive(Clone, Debug, Default, PartialEq)]
443pub struct TouchResponse {
444 pub response_type: Option<TouchResponseType>,
447 pub trace_flow_id: Option<u64>,
450 #[doc(hidden)]
451 pub __source_breaking: fidl::marker::SourceBreaking,
452}
453
454impl fidl::Persistable for TouchResponse {}
455
456pub mod mouse_source_ordinals {
457 pub const WATCH: u64 = 0x5b1f6e917ac1abb4;
458}
459
460pub mod touch_source_ordinals {
461 pub const WATCH: u64 = 0x38453127dd0fc7d;
462 pub const UPDATE_RESPONSE: u64 = 0x6c746a313b39898a;
463}
464
465mod internal {
466 use super::*;
467 unsafe impl fidl::encoding::TypeMarker for EventPhase {
468 type Owned = Self;
469
470 #[inline(always)]
471 fn inline_align(_context: fidl::encoding::Context) -> usize {
472 std::mem::align_of::<u32>()
473 }
474
475 #[inline(always)]
476 fn inline_size(_context: fidl::encoding::Context) -> usize {
477 std::mem::size_of::<u32>()
478 }
479
480 #[inline(always)]
481 fn encode_is_copy() -> bool {
482 true
483 }
484
485 #[inline(always)]
486 fn decode_is_copy() -> bool {
487 false
488 }
489 }
490
491 impl fidl::encoding::ValueTypeMarker for EventPhase {
492 type Borrowed<'a> = Self;
493 #[inline(always)]
494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
495 *value
496 }
497 }
498
499 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EventPhase {
500 #[inline]
501 unsafe fn encode(
502 self,
503 encoder: &mut fidl::encoding::Encoder<'_, D>,
504 offset: usize,
505 _depth: fidl::encoding::Depth,
506 ) -> fidl::Result<()> {
507 encoder.debug_check_bounds::<Self>(offset);
508 encoder.write_num(self.into_primitive(), offset);
509 Ok(())
510 }
511 }
512
513 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventPhase {
514 #[inline(always)]
515 fn new_empty() -> Self {
516 Self::Add
517 }
518
519 #[inline]
520 unsafe fn decode(
521 &mut self,
522 decoder: &mut fidl::encoding::Decoder<'_, D>,
523 offset: usize,
524 _depth: fidl::encoding::Depth,
525 ) -> fidl::Result<()> {
526 decoder.debug_check_bounds::<Self>(offset);
527 let prim = decoder.read_num::<u32>(offset);
528
529 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
530 Ok(())
531 }
532 }
533 unsafe impl fidl::encoding::TypeMarker for MouseViewStatus {
534 type Owned = Self;
535
536 #[inline(always)]
537 fn inline_align(_context: fidl::encoding::Context) -> usize {
538 std::mem::align_of::<u32>()
539 }
540
541 #[inline(always)]
542 fn inline_size(_context: fidl::encoding::Context) -> usize {
543 std::mem::size_of::<u32>()
544 }
545
546 #[inline(always)]
547 fn encode_is_copy() -> bool {
548 true
549 }
550
551 #[inline(always)]
552 fn decode_is_copy() -> bool {
553 false
554 }
555 }
556
557 impl fidl::encoding::ValueTypeMarker for MouseViewStatus {
558 type Borrowed<'a> = Self;
559 #[inline(always)]
560 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
561 *value
562 }
563 }
564
565 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
566 for MouseViewStatus
567 {
568 #[inline]
569 unsafe fn encode(
570 self,
571 encoder: &mut fidl::encoding::Encoder<'_, D>,
572 offset: usize,
573 _depth: fidl::encoding::Depth,
574 ) -> fidl::Result<()> {
575 encoder.debug_check_bounds::<Self>(offset);
576 encoder.write_num(self.into_primitive(), offset);
577 Ok(())
578 }
579 }
580
581 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseViewStatus {
582 #[inline(always)]
583 fn new_empty() -> Self {
584 Self::Entered
585 }
586
587 #[inline]
588 unsafe fn decode(
589 &mut self,
590 decoder: &mut fidl::encoding::Decoder<'_, D>,
591 offset: usize,
592 _depth: fidl::encoding::Depth,
593 ) -> fidl::Result<()> {
594 decoder.debug_check_bounds::<Self>(offset);
595 let prim = decoder.read_num::<u32>(offset);
596
597 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
598 Ok(())
599 }
600 }
601 unsafe impl fidl::encoding::TypeMarker for TouchInteractionStatus {
602 type Owned = Self;
603
604 #[inline(always)]
605 fn inline_align(_context: fidl::encoding::Context) -> usize {
606 std::mem::align_of::<u32>()
607 }
608
609 #[inline(always)]
610 fn inline_size(_context: fidl::encoding::Context) -> usize {
611 std::mem::size_of::<u32>()
612 }
613
614 #[inline(always)]
615 fn encode_is_copy() -> bool {
616 true
617 }
618
619 #[inline(always)]
620 fn decode_is_copy() -> bool {
621 false
622 }
623 }
624
625 impl fidl::encoding::ValueTypeMarker for TouchInteractionStatus {
626 type Borrowed<'a> = Self;
627 #[inline(always)]
628 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
629 *value
630 }
631 }
632
633 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
634 for TouchInteractionStatus
635 {
636 #[inline]
637 unsafe fn encode(
638 self,
639 encoder: &mut fidl::encoding::Encoder<'_, D>,
640 offset: usize,
641 _depth: fidl::encoding::Depth,
642 ) -> fidl::Result<()> {
643 encoder.debug_check_bounds::<Self>(offset);
644 encoder.write_num(self.into_primitive(), offset);
645 Ok(())
646 }
647 }
648
649 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
650 for TouchInteractionStatus
651 {
652 #[inline(always)]
653 fn new_empty() -> Self {
654 Self::Denied
655 }
656
657 #[inline]
658 unsafe fn decode(
659 &mut self,
660 decoder: &mut fidl::encoding::Decoder<'_, D>,
661 offset: usize,
662 _depth: fidl::encoding::Depth,
663 ) -> fidl::Result<()> {
664 decoder.debug_check_bounds::<Self>(offset);
665 let prim = decoder.read_num::<u32>(offset);
666
667 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
668 Ok(())
669 }
670 }
671 unsafe impl fidl::encoding::TypeMarker for TouchResponseType {
672 type Owned = Self;
673
674 #[inline(always)]
675 fn inline_align(_context: fidl::encoding::Context) -> usize {
676 std::mem::align_of::<u32>()
677 }
678
679 #[inline(always)]
680 fn inline_size(_context: fidl::encoding::Context) -> usize {
681 std::mem::size_of::<u32>()
682 }
683
684 #[inline(always)]
685 fn encode_is_copy() -> bool {
686 true
687 }
688
689 #[inline(always)]
690 fn decode_is_copy() -> bool {
691 false
692 }
693 }
694
695 impl fidl::encoding::ValueTypeMarker for TouchResponseType {
696 type Borrowed<'a> = Self;
697 #[inline(always)]
698 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
699 *value
700 }
701 }
702
703 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
704 for TouchResponseType
705 {
706 #[inline]
707 unsafe fn encode(
708 self,
709 encoder: &mut fidl::encoding::Encoder<'_, D>,
710 offset: usize,
711 _depth: fidl::encoding::Depth,
712 ) -> fidl::Result<()> {
713 encoder.debug_check_bounds::<Self>(offset);
714 encoder.write_num(self.into_primitive(), offset);
715 Ok(())
716 }
717 }
718
719 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchResponseType {
720 #[inline(always)]
721 fn new_empty() -> Self {
722 Self::No
723 }
724
725 #[inline]
726 unsafe fn decode(
727 &mut self,
728 decoder: &mut fidl::encoding::Decoder<'_, D>,
729 offset: usize,
730 _depth: fidl::encoding::Depth,
731 ) -> fidl::Result<()> {
732 decoder.debug_check_bounds::<Self>(offset);
733 let prim = decoder.read_num::<u32>(offset);
734
735 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
736 Ok(())
737 }
738 }
739
740 impl fidl::encoding::ValueTypeMarker for MouseEventStreamInfo {
741 type Borrowed<'a> = &'a Self;
742 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
743 value
744 }
745 }
746
747 unsafe impl fidl::encoding::TypeMarker for MouseEventStreamInfo {
748 type Owned = Self;
749
750 #[inline(always)]
751 fn inline_align(_context: fidl::encoding::Context) -> usize {
752 4
753 }
754
755 #[inline(always)]
756 fn inline_size(_context: fidl::encoding::Context) -> usize {
757 8
758 }
759 }
760
761 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MouseEventStreamInfo, D>
762 for &MouseEventStreamInfo
763 {
764 #[inline]
765 unsafe fn encode(
766 self,
767 encoder: &mut fidl::encoding::Encoder<'_, D>,
768 offset: usize,
769 _depth: fidl::encoding::Depth,
770 ) -> fidl::Result<()> {
771 encoder.debug_check_bounds::<MouseEventStreamInfo>(offset);
772 fidl::encoding::Encode::<MouseEventStreamInfo, D>::encode(
774 (
775 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.device_id),
776 <MouseViewStatus as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
777 ),
778 encoder,
779 offset,
780 _depth,
781 )
782 }
783 }
784 unsafe impl<
785 D: fidl::encoding::ResourceDialect,
786 T0: fidl::encoding::Encode<u32, D>,
787 T1: fidl::encoding::Encode<MouseViewStatus, D>,
788 > fidl::encoding::Encode<MouseEventStreamInfo, D> for (T0, T1)
789 {
790 #[inline]
791 unsafe fn encode(
792 self,
793 encoder: &mut fidl::encoding::Encoder<'_, D>,
794 offset: usize,
795 depth: fidl::encoding::Depth,
796 ) -> fidl::Result<()> {
797 encoder.debug_check_bounds::<MouseEventStreamInfo>(offset);
798 self.0.encode(encoder, offset + 0, depth)?;
802 self.1.encode(encoder, offset + 4, depth)?;
803 Ok(())
804 }
805 }
806
807 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseEventStreamInfo {
808 #[inline(always)]
809 fn new_empty() -> Self {
810 Self {
811 device_id: fidl::new_empty!(u32, D),
812 status: fidl::new_empty!(MouseViewStatus, D),
813 }
814 }
815
816 #[inline]
817 unsafe fn decode(
818 &mut self,
819 decoder: &mut fidl::encoding::Decoder<'_, D>,
820 offset: usize,
821 _depth: fidl::encoding::Depth,
822 ) -> fidl::Result<()> {
823 decoder.debug_check_bounds::<Self>(offset);
824 fidl::decode!(u32, D, &mut self.device_id, decoder, offset + 0, _depth)?;
826 fidl::decode!(MouseViewStatus, D, &mut self.status, decoder, offset + 4, _depth)?;
827 Ok(())
828 }
829 }
830
831 impl fidl::encoding::ValueTypeMarker for Rectangle {
832 type Borrowed<'a> = &'a Self;
833 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
834 value
835 }
836 }
837
838 unsafe impl fidl::encoding::TypeMarker for Rectangle {
839 type Owned = Self;
840
841 #[inline(always)]
842 fn inline_align(_context: fidl::encoding::Context) -> usize {
843 4
844 }
845
846 #[inline(always)]
847 fn inline_size(_context: fidl::encoding::Context) -> usize {
848 16
849 }
850 }
851
852 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Rectangle, D>
853 for &Rectangle
854 {
855 #[inline]
856 unsafe fn encode(
857 self,
858 encoder: &mut fidl::encoding::Encoder<'_, D>,
859 offset: usize,
860 _depth: fidl::encoding::Depth,
861 ) -> fidl::Result<()> {
862 encoder.debug_check_bounds::<Rectangle>(offset);
863 fidl::encoding::Encode::<Rectangle, D>::encode(
865 (
866 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow(
867 &self.min,
868 ),
869 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow(
870 &self.max,
871 ),
872 ),
873 encoder,
874 offset,
875 _depth,
876 )
877 }
878 }
879 unsafe impl<
880 D: fidl::encoding::ResourceDialect,
881 T0: fidl::encoding::Encode<fidl::encoding::Array<f32, 2>, D>,
882 T1: fidl::encoding::Encode<fidl::encoding::Array<f32, 2>, D>,
883 > fidl::encoding::Encode<Rectangle, D> for (T0, T1)
884 {
885 #[inline]
886 unsafe fn encode(
887 self,
888 encoder: &mut fidl::encoding::Encoder<'_, D>,
889 offset: usize,
890 depth: fidl::encoding::Depth,
891 ) -> fidl::Result<()> {
892 encoder.debug_check_bounds::<Rectangle>(offset);
893 self.0.encode(encoder, offset + 0, depth)?;
897 self.1.encode(encoder, offset + 8, depth)?;
898 Ok(())
899 }
900 }
901
902 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Rectangle {
903 #[inline(always)]
904 fn new_empty() -> Self {
905 Self {
906 min: fidl::new_empty!(fidl::encoding::Array<f32, 2>, D),
907 max: fidl::new_empty!(fidl::encoding::Array<f32, 2>, D),
908 }
909 }
910
911 #[inline]
912 unsafe fn decode(
913 &mut self,
914 decoder: &mut fidl::encoding::Decoder<'_, D>,
915 offset: usize,
916 _depth: fidl::encoding::Depth,
917 ) -> fidl::Result<()> {
918 decoder.debug_check_bounds::<Self>(offset);
919 fidl::decode!(fidl::encoding::Array<f32, 2>, D, &mut self.min, decoder, offset + 0, _depth)?;
921 fidl::decode!(fidl::encoding::Array<f32, 2>, D, &mut self.max, decoder, offset + 8, _depth)?;
922 Ok(())
923 }
924 }
925
926 impl fidl::encoding::ValueTypeMarker for TouchInteractionId {
927 type Borrowed<'a> = &'a Self;
928 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
929 value
930 }
931 }
932
933 unsafe impl fidl::encoding::TypeMarker for TouchInteractionId {
934 type Owned = Self;
935
936 #[inline(always)]
937 fn inline_align(_context: fidl::encoding::Context) -> usize {
938 4
939 }
940
941 #[inline(always)]
942 fn inline_size(_context: fidl::encoding::Context) -> usize {
943 12
944 }
945 #[inline(always)]
946 fn encode_is_copy() -> bool {
947 true
948 }
949
950 #[inline(always)]
951 fn decode_is_copy() -> bool {
952 true
953 }
954 }
955
956 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchInteractionId, D>
957 for &TouchInteractionId
958 {
959 #[inline]
960 unsafe fn encode(
961 self,
962 encoder: &mut fidl::encoding::Encoder<'_, D>,
963 offset: usize,
964 _depth: fidl::encoding::Depth,
965 ) -> fidl::Result<()> {
966 encoder.debug_check_bounds::<TouchInteractionId>(offset);
967 unsafe {
968 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
970 (buf_ptr as *mut TouchInteractionId)
971 .write_unaligned((self as *const TouchInteractionId).read());
972 }
975 Ok(())
976 }
977 }
978 unsafe impl<
979 D: fidl::encoding::ResourceDialect,
980 T0: fidl::encoding::Encode<u32, D>,
981 T1: fidl::encoding::Encode<u32, D>,
982 T2: fidl::encoding::Encode<u32, D>,
983 > fidl::encoding::Encode<TouchInteractionId, D> for (T0, T1, T2)
984 {
985 #[inline]
986 unsafe fn encode(
987 self,
988 encoder: &mut fidl::encoding::Encoder<'_, D>,
989 offset: usize,
990 depth: fidl::encoding::Depth,
991 ) -> fidl::Result<()> {
992 encoder.debug_check_bounds::<TouchInteractionId>(offset);
993 self.0.encode(encoder, offset + 0, depth)?;
997 self.1.encode(encoder, offset + 4, depth)?;
998 self.2.encode(encoder, offset + 8, depth)?;
999 Ok(())
1000 }
1001 }
1002
1003 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchInteractionId {
1004 #[inline(always)]
1005 fn new_empty() -> Self {
1006 Self {
1007 device_id: fidl::new_empty!(u32, D),
1008 pointer_id: fidl::new_empty!(u32, D),
1009 interaction_id: fidl::new_empty!(u32, D),
1010 }
1011 }
1012
1013 #[inline]
1014 unsafe fn decode(
1015 &mut self,
1016 decoder: &mut fidl::encoding::Decoder<'_, D>,
1017 offset: usize,
1018 _depth: fidl::encoding::Depth,
1019 ) -> fidl::Result<()> {
1020 decoder.debug_check_bounds::<Self>(offset);
1021 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1022 unsafe {
1025 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1026 }
1027 Ok(())
1028 }
1029 }
1030
1031 impl fidl::encoding::ValueTypeMarker for TouchInteractionResult {
1032 type Borrowed<'a> = &'a Self;
1033 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1034 value
1035 }
1036 }
1037
1038 unsafe impl fidl::encoding::TypeMarker for TouchInteractionResult {
1039 type Owned = Self;
1040
1041 #[inline(always)]
1042 fn inline_align(_context: fidl::encoding::Context) -> usize {
1043 4
1044 }
1045
1046 #[inline(always)]
1047 fn inline_size(_context: fidl::encoding::Context) -> usize {
1048 16
1049 }
1050 }
1051
1052 unsafe impl<D: fidl::encoding::ResourceDialect>
1053 fidl::encoding::Encode<TouchInteractionResult, D> for &TouchInteractionResult
1054 {
1055 #[inline]
1056 unsafe fn encode(
1057 self,
1058 encoder: &mut fidl::encoding::Encoder<'_, D>,
1059 offset: usize,
1060 _depth: fidl::encoding::Depth,
1061 ) -> fidl::Result<()> {
1062 encoder.debug_check_bounds::<TouchInteractionResult>(offset);
1063 fidl::encoding::Encode::<TouchInteractionResult, D>::encode(
1065 (
1066 <TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow(
1067 &self.interaction,
1068 ),
1069 <TouchInteractionStatus as fidl::encoding::ValueTypeMarker>::borrow(
1070 &self.status,
1071 ),
1072 ),
1073 encoder,
1074 offset,
1075 _depth,
1076 )
1077 }
1078 }
1079 unsafe impl<
1080 D: fidl::encoding::ResourceDialect,
1081 T0: fidl::encoding::Encode<TouchInteractionId, D>,
1082 T1: fidl::encoding::Encode<TouchInteractionStatus, D>,
1083 > fidl::encoding::Encode<TouchInteractionResult, D> for (T0, T1)
1084 {
1085 #[inline]
1086 unsafe fn encode(
1087 self,
1088 encoder: &mut fidl::encoding::Encoder<'_, D>,
1089 offset: usize,
1090 depth: fidl::encoding::Depth,
1091 ) -> fidl::Result<()> {
1092 encoder.debug_check_bounds::<TouchInteractionResult>(offset);
1093 self.0.encode(encoder, offset + 0, depth)?;
1097 self.1.encode(encoder, offset + 12, depth)?;
1098 Ok(())
1099 }
1100 }
1101
1102 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1103 for TouchInteractionResult
1104 {
1105 #[inline(always)]
1106 fn new_empty() -> Self {
1107 Self {
1108 interaction: fidl::new_empty!(TouchInteractionId, D),
1109 status: fidl::new_empty!(TouchInteractionStatus, D),
1110 }
1111 }
1112
1113 #[inline]
1114 unsafe fn decode(
1115 &mut self,
1116 decoder: &mut fidl::encoding::Decoder<'_, D>,
1117 offset: usize,
1118 _depth: fidl::encoding::Depth,
1119 ) -> fidl::Result<()> {
1120 decoder.debug_check_bounds::<Self>(offset);
1121 fidl::decode!(
1123 TouchInteractionId,
1124 D,
1125 &mut self.interaction,
1126 decoder,
1127 offset + 0,
1128 _depth
1129 )?;
1130 fidl::decode!(
1131 TouchInteractionStatus,
1132 D,
1133 &mut self.status,
1134 decoder,
1135 offset + 12,
1136 _depth
1137 )?;
1138 Ok(())
1139 }
1140 }
1141
1142 impl fidl::encoding::ValueTypeMarker for TouchSourceUpdateResponseRequest {
1143 type Borrowed<'a> = &'a Self;
1144 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1145 value
1146 }
1147 }
1148
1149 unsafe impl fidl::encoding::TypeMarker for TouchSourceUpdateResponseRequest {
1150 type Owned = Self;
1151
1152 #[inline(always)]
1153 fn inline_align(_context: fidl::encoding::Context) -> usize {
1154 8
1155 }
1156
1157 #[inline(always)]
1158 fn inline_size(_context: fidl::encoding::Context) -> usize {
1159 32
1160 }
1161 }
1162
1163 unsafe impl<D: fidl::encoding::ResourceDialect>
1164 fidl::encoding::Encode<TouchSourceUpdateResponseRequest, D>
1165 for &TouchSourceUpdateResponseRequest
1166 {
1167 #[inline]
1168 unsafe fn encode(
1169 self,
1170 encoder: &mut fidl::encoding::Encoder<'_, D>,
1171 offset: usize,
1172 _depth: fidl::encoding::Depth,
1173 ) -> fidl::Result<()> {
1174 encoder.debug_check_bounds::<TouchSourceUpdateResponseRequest>(offset);
1175 fidl::encoding::Encode::<TouchSourceUpdateResponseRequest, D>::encode(
1177 (
1178 <TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow(
1179 &self.interaction,
1180 ),
1181 <TouchResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.response),
1182 ),
1183 encoder,
1184 offset,
1185 _depth,
1186 )
1187 }
1188 }
1189 unsafe impl<
1190 D: fidl::encoding::ResourceDialect,
1191 T0: fidl::encoding::Encode<TouchInteractionId, D>,
1192 T1: fidl::encoding::Encode<TouchResponse, D>,
1193 > fidl::encoding::Encode<TouchSourceUpdateResponseRequest, D> for (T0, T1)
1194 {
1195 #[inline]
1196 unsafe fn encode(
1197 self,
1198 encoder: &mut fidl::encoding::Encoder<'_, D>,
1199 offset: usize,
1200 depth: fidl::encoding::Depth,
1201 ) -> fidl::Result<()> {
1202 encoder.debug_check_bounds::<TouchSourceUpdateResponseRequest>(offset);
1203 unsafe {
1206 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1207 (ptr as *mut u64).write_unaligned(0);
1208 }
1209 self.0.encode(encoder, offset + 0, depth)?;
1211 self.1.encode(encoder, offset + 16, depth)?;
1212 Ok(())
1213 }
1214 }
1215
1216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1217 for TouchSourceUpdateResponseRequest
1218 {
1219 #[inline(always)]
1220 fn new_empty() -> Self {
1221 Self {
1222 interaction: fidl::new_empty!(TouchInteractionId, D),
1223 response: fidl::new_empty!(TouchResponse, D),
1224 }
1225 }
1226
1227 #[inline]
1228 unsafe fn decode(
1229 &mut self,
1230 decoder: &mut fidl::encoding::Decoder<'_, D>,
1231 offset: usize,
1232 _depth: fidl::encoding::Depth,
1233 ) -> fidl::Result<()> {
1234 decoder.debug_check_bounds::<Self>(offset);
1235 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
1237 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1238 let mask = 0xffffffff00000000u64;
1239 let maskedval = padval & mask;
1240 if maskedval != 0 {
1241 return Err(fidl::Error::NonZeroPadding {
1242 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1243 });
1244 }
1245 fidl::decode!(
1246 TouchInteractionId,
1247 D,
1248 &mut self.interaction,
1249 decoder,
1250 offset + 0,
1251 _depth
1252 )?;
1253 fidl::decode!(TouchResponse, D, &mut self.response, decoder, offset + 16, _depth)?;
1254 Ok(())
1255 }
1256 }
1257
1258 impl fidl::encoding::ValueTypeMarker for TouchSourceWatchRequest {
1259 type Borrowed<'a> = &'a Self;
1260 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1261 value
1262 }
1263 }
1264
1265 unsafe impl fidl::encoding::TypeMarker for TouchSourceWatchRequest {
1266 type Owned = Self;
1267
1268 #[inline(always)]
1269 fn inline_align(_context: fidl::encoding::Context) -> usize {
1270 8
1271 }
1272
1273 #[inline(always)]
1274 fn inline_size(_context: fidl::encoding::Context) -> usize {
1275 16
1276 }
1277 }
1278
1279 unsafe impl<D: fidl::encoding::ResourceDialect>
1280 fidl::encoding::Encode<TouchSourceWatchRequest, D> for &TouchSourceWatchRequest
1281 {
1282 #[inline]
1283 unsafe fn encode(
1284 self,
1285 encoder: &mut fidl::encoding::Encoder<'_, D>,
1286 offset: usize,
1287 _depth: fidl::encoding::Depth,
1288 ) -> fidl::Result<()> {
1289 encoder.debug_check_bounds::<TouchSourceWatchRequest>(offset);
1290 fidl::encoding::Encode::<TouchSourceWatchRequest, D>::encode(
1292 (
1293 <fidl::encoding::Vector<TouchResponse, 128> as fidl::encoding::ValueTypeMarker>::borrow(&self.responses),
1294 ),
1295 encoder, offset, _depth
1296 )
1297 }
1298 }
1299 unsafe impl<
1300 D: fidl::encoding::ResourceDialect,
1301 T0: fidl::encoding::Encode<fidl::encoding::Vector<TouchResponse, 128>, D>,
1302 > fidl::encoding::Encode<TouchSourceWatchRequest, D> for (T0,)
1303 {
1304 #[inline]
1305 unsafe fn encode(
1306 self,
1307 encoder: &mut fidl::encoding::Encoder<'_, D>,
1308 offset: usize,
1309 depth: fidl::encoding::Depth,
1310 ) -> fidl::Result<()> {
1311 encoder.debug_check_bounds::<TouchSourceWatchRequest>(offset);
1312 self.0.encode(encoder, offset + 0, depth)?;
1316 Ok(())
1317 }
1318 }
1319
1320 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1321 for TouchSourceWatchRequest
1322 {
1323 #[inline(always)]
1324 fn new_empty() -> Self {
1325 Self { responses: fidl::new_empty!(fidl::encoding::Vector<TouchResponse, 128>, D) }
1326 }
1327
1328 #[inline]
1329 unsafe fn decode(
1330 &mut self,
1331 decoder: &mut fidl::encoding::Decoder<'_, D>,
1332 offset: usize,
1333 _depth: fidl::encoding::Depth,
1334 ) -> fidl::Result<()> {
1335 decoder.debug_check_bounds::<Self>(offset);
1336 fidl::decode!(fidl::encoding::Vector<TouchResponse, 128>, D, &mut self.responses, decoder, offset + 0, _depth)?;
1338 Ok(())
1339 }
1340 }
1341
1342 impl fidl::encoding::ValueTypeMarker for ViewParameters {
1343 type Borrowed<'a> = &'a Self;
1344 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1345 value
1346 }
1347 }
1348
1349 unsafe impl fidl::encoding::TypeMarker for ViewParameters {
1350 type Owned = Self;
1351
1352 #[inline(always)]
1353 fn inline_align(_context: fidl::encoding::Context) -> usize {
1354 4
1355 }
1356
1357 #[inline(always)]
1358 fn inline_size(_context: fidl::encoding::Context) -> usize {
1359 68
1360 }
1361 }
1362
1363 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ViewParameters, D>
1364 for &ViewParameters
1365 {
1366 #[inline]
1367 unsafe fn encode(
1368 self,
1369 encoder: &mut fidl::encoding::Encoder<'_, D>,
1370 offset: usize,
1371 _depth: fidl::encoding::Depth,
1372 ) -> fidl::Result<()> {
1373 encoder.debug_check_bounds::<ViewParameters>(offset);
1374 fidl::encoding::Encode::<ViewParameters, D>::encode(
1376 (
1377 <Rectangle as fidl::encoding::ValueTypeMarker>::borrow(&self.view),
1378 <Rectangle as fidl::encoding::ValueTypeMarker>::borrow(&self.viewport),
1379 <fidl::encoding::Array<f32, 9> as fidl::encoding::ValueTypeMarker>::borrow(
1380 &self.viewport_to_view_transform,
1381 ),
1382 ),
1383 encoder,
1384 offset,
1385 _depth,
1386 )
1387 }
1388 }
1389 unsafe impl<
1390 D: fidl::encoding::ResourceDialect,
1391 T0: fidl::encoding::Encode<Rectangle, D>,
1392 T1: fidl::encoding::Encode<Rectangle, D>,
1393 T2: fidl::encoding::Encode<fidl::encoding::Array<f32, 9>, D>,
1394 > fidl::encoding::Encode<ViewParameters, D> for (T0, T1, T2)
1395 {
1396 #[inline]
1397 unsafe fn encode(
1398 self,
1399 encoder: &mut fidl::encoding::Encoder<'_, D>,
1400 offset: usize,
1401 depth: fidl::encoding::Depth,
1402 ) -> fidl::Result<()> {
1403 encoder.debug_check_bounds::<ViewParameters>(offset);
1404 self.0.encode(encoder, offset + 0, depth)?;
1408 self.1.encode(encoder, offset + 16, depth)?;
1409 self.2.encode(encoder, offset + 32, depth)?;
1410 Ok(())
1411 }
1412 }
1413
1414 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ViewParameters {
1415 #[inline(always)]
1416 fn new_empty() -> Self {
1417 Self {
1418 view: fidl::new_empty!(Rectangle, D),
1419 viewport: fidl::new_empty!(Rectangle, D),
1420 viewport_to_view_transform: fidl::new_empty!(fidl::encoding::Array<f32, 9>, D),
1421 }
1422 }
1423
1424 #[inline]
1425 unsafe fn decode(
1426 &mut self,
1427 decoder: &mut fidl::encoding::Decoder<'_, D>,
1428 offset: usize,
1429 _depth: fidl::encoding::Depth,
1430 ) -> fidl::Result<()> {
1431 decoder.debug_check_bounds::<Self>(offset);
1432 fidl::decode!(Rectangle, D, &mut self.view, decoder, offset + 0, _depth)?;
1434 fidl::decode!(Rectangle, D, &mut self.viewport, decoder, offset + 16, _depth)?;
1435 fidl::decode!(fidl::encoding::Array<f32, 9>, D, &mut self.viewport_to_view_transform, decoder, offset + 32, _depth)?;
1436 Ok(())
1437 }
1438 }
1439
1440 impl MouseDeviceInfo {
1441 #[inline(always)]
1442 fn max_ordinal_present(&self) -> u64 {
1443 if let Some(_) = self.relative_motion_range {
1444 return 5;
1445 }
1446 if let Some(_) = self.buttons {
1447 return 4;
1448 }
1449 if let Some(_) = self.scroll_h_range {
1450 return 3;
1451 }
1452 if let Some(_) = self.scroll_v_range {
1453 return 2;
1454 }
1455 if let Some(_) = self.id {
1456 return 1;
1457 }
1458 0
1459 }
1460 }
1461
1462 impl fidl::encoding::ValueTypeMarker for MouseDeviceInfo {
1463 type Borrowed<'a> = &'a Self;
1464 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1465 value
1466 }
1467 }
1468
1469 unsafe impl fidl::encoding::TypeMarker for MouseDeviceInfo {
1470 type Owned = Self;
1471
1472 #[inline(always)]
1473 fn inline_align(_context: fidl::encoding::Context) -> usize {
1474 8
1475 }
1476
1477 #[inline(always)]
1478 fn inline_size(_context: fidl::encoding::Context) -> usize {
1479 16
1480 }
1481 }
1482
1483 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MouseDeviceInfo, D>
1484 for &MouseDeviceInfo
1485 {
1486 unsafe fn encode(
1487 self,
1488 encoder: &mut fidl::encoding::Encoder<'_, D>,
1489 offset: usize,
1490 mut depth: fidl::encoding::Depth,
1491 ) -> fidl::Result<()> {
1492 encoder.debug_check_bounds::<MouseDeviceInfo>(offset);
1493 let max_ordinal: u64 = self.max_ordinal_present();
1495 encoder.write_num(max_ordinal, offset);
1496 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1497 if max_ordinal == 0 {
1499 return Ok(());
1500 }
1501 depth.increment()?;
1502 let envelope_size = 8;
1503 let bytes_len = max_ordinal as usize * envelope_size;
1504 #[allow(unused_variables)]
1505 let offset = encoder.out_of_line_offset(bytes_len);
1506 let mut _prev_end_offset: usize = 0;
1507 if 1 > max_ordinal {
1508 return Ok(());
1509 }
1510
1511 let cur_offset: usize = (1 - 1) * envelope_size;
1514
1515 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1517
1518 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1523 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1524 encoder,
1525 offset + cur_offset,
1526 depth,
1527 )?;
1528
1529 _prev_end_offset = cur_offset + envelope_size;
1530 if 2 > max_ordinal {
1531 return Ok(());
1532 }
1533
1534 let cur_offset: usize = (2 - 1) * envelope_size;
1537
1538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1540
1541 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_input_common::Axis, D>(
1546 self.scroll_v_range.as_ref().map(
1547 <fidl_fuchsia_input_common::Axis as fidl::encoding::ValueTypeMarker>::borrow,
1548 ),
1549 encoder,
1550 offset + cur_offset,
1551 depth,
1552 )?;
1553
1554 _prev_end_offset = cur_offset + envelope_size;
1555 if 3 > max_ordinal {
1556 return Ok(());
1557 }
1558
1559 let cur_offset: usize = (3 - 1) * envelope_size;
1562
1563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1565
1566 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_input_common::Axis, D>(
1571 self.scroll_h_range.as_ref().map(
1572 <fidl_fuchsia_input_common::Axis as fidl::encoding::ValueTypeMarker>::borrow,
1573 ),
1574 encoder,
1575 offset + cur_offset,
1576 depth,
1577 )?;
1578
1579 _prev_end_offset = cur_offset + envelope_size;
1580 if 4 > max_ordinal {
1581 return Ok(());
1582 }
1583
1584 let cur_offset: usize = (4 - 1) * envelope_size;
1587
1588 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1590
1591 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
1596 self.buttons.as_ref().map(
1597 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
1598 ),
1599 encoder,
1600 offset + cur_offset,
1601 depth,
1602 )?;
1603
1604 _prev_end_offset = cur_offset + envelope_size;
1605 if 5 > max_ordinal {
1606 return Ok(());
1607 }
1608
1609 let cur_offset: usize = (5 - 1) * envelope_size;
1612
1613 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1615
1616 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<fidl_fuchsia_input_common::Axis, 2>, D>(
1621 self.relative_motion_range.as_ref().map(<fidl::encoding::Array<fidl_fuchsia_input_common::Axis, 2> as fidl::encoding::ValueTypeMarker>::borrow),
1622 encoder, offset + cur_offset, depth
1623 )?;
1624
1625 _prev_end_offset = cur_offset + envelope_size;
1626
1627 Ok(())
1628 }
1629 }
1630
1631 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MouseDeviceInfo {
1632 #[inline(always)]
1633 fn new_empty() -> Self {
1634 Self::default()
1635 }
1636
1637 unsafe fn decode(
1638 &mut self,
1639 decoder: &mut fidl::encoding::Decoder<'_, D>,
1640 offset: usize,
1641 mut depth: fidl::encoding::Depth,
1642 ) -> fidl::Result<()> {
1643 decoder.debug_check_bounds::<Self>(offset);
1644 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1645 None => return Err(fidl::Error::NotNullable),
1646 Some(len) => len,
1647 };
1648 if len == 0 {
1650 return Ok(());
1651 };
1652 depth.increment()?;
1653 let envelope_size = 8;
1654 let bytes_len = len * envelope_size;
1655 let offset = decoder.out_of_line_offset(bytes_len)?;
1656 let mut _next_ordinal_to_read = 0;
1658 let mut next_offset = offset;
1659 let end_offset = offset + bytes_len;
1660 _next_ordinal_to_read += 1;
1661 if next_offset >= end_offset {
1662 return Ok(());
1663 }
1664
1665 while _next_ordinal_to_read < 1 {
1667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1668 _next_ordinal_to_read += 1;
1669 next_offset += envelope_size;
1670 }
1671
1672 let next_out_of_line = decoder.next_out_of_line();
1673 let handles_before = decoder.remaining_handles();
1674 if let Some((inlined, num_bytes, num_handles)) =
1675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1676 {
1677 let member_inline_size =
1678 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1679 if inlined != (member_inline_size <= 4) {
1680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1681 }
1682 let inner_offset;
1683 let mut inner_depth = depth.clone();
1684 if inlined {
1685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1686 inner_offset = next_offset;
1687 } else {
1688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1689 inner_depth.increment()?;
1690 }
1691 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1692 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1694 {
1695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1696 }
1697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1699 }
1700 }
1701
1702 next_offset += envelope_size;
1703 _next_ordinal_to_read += 1;
1704 if next_offset >= end_offset {
1705 return Ok(());
1706 }
1707
1708 while _next_ordinal_to_read < 2 {
1710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1711 _next_ordinal_to_read += 1;
1712 next_offset += envelope_size;
1713 }
1714
1715 let next_out_of_line = decoder.next_out_of_line();
1716 let handles_before = decoder.remaining_handles();
1717 if let Some((inlined, num_bytes, num_handles)) =
1718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1719 {
1720 let member_inline_size =
1721 <fidl_fuchsia_input_common::Axis as fidl::encoding::TypeMarker>::inline_size(
1722 decoder.context,
1723 );
1724 if inlined != (member_inline_size <= 4) {
1725 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1726 }
1727 let inner_offset;
1728 let mut inner_depth = depth.clone();
1729 if inlined {
1730 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1731 inner_offset = next_offset;
1732 } else {
1733 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1734 inner_depth.increment()?;
1735 }
1736 let val_ref = self
1737 .scroll_v_range
1738 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_input_common::Axis, D));
1739 fidl::decode!(
1740 fidl_fuchsia_input_common::Axis,
1741 D,
1742 val_ref,
1743 decoder,
1744 inner_offset,
1745 inner_depth
1746 )?;
1747 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1748 {
1749 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1750 }
1751 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1752 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1753 }
1754 }
1755
1756 next_offset += envelope_size;
1757 _next_ordinal_to_read += 1;
1758 if next_offset >= end_offset {
1759 return Ok(());
1760 }
1761
1762 while _next_ordinal_to_read < 3 {
1764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1765 _next_ordinal_to_read += 1;
1766 next_offset += envelope_size;
1767 }
1768
1769 let next_out_of_line = decoder.next_out_of_line();
1770 let handles_before = decoder.remaining_handles();
1771 if let Some((inlined, num_bytes, num_handles)) =
1772 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1773 {
1774 let member_inline_size =
1775 <fidl_fuchsia_input_common::Axis as fidl::encoding::TypeMarker>::inline_size(
1776 decoder.context,
1777 );
1778 if inlined != (member_inline_size <= 4) {
1779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1780 }
1781 let inner_offset;
1782 let mut inner_depth = depth.clone();
1783 if inlined {
1784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1785 inner_offset = next_offset;
1786 } else {
1787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1788 inner_depth.increment()?;
1789 }
1790 let val_ref = self
1791 .scroll_h_range
1792 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_input_common::Axis, D));
1793 fidl::decode!(
1794 fidl_fuchsia_input_common::Axis,
1795 D,
1796 val_ref,
1797 decoder,
1798 inner_offset,
1799 inner_depth
1800 )?;
1801 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1802 {
1803 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1804 }
1805 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1806 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1807 }
1808 }
1809
1810 next_offset += envelope_size;
1811 _next_ordinal_to_read += 1;
1812 if next_offset >= end_offset {
1813 return Ok(());
1814 }
1815
1816 while _next_ordinal_to_read < 4 {
1818 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1819 _next_ordinal_to_read += 1;
1820 next_offset += envelope_size;
1821 }
1822
1823 let next_out_of_line = decoder.next_out_of_line();
1824 let handles_before = decoder.remaining_handles();
1825 if let Some((inlined, num_bytes, num_handles)) =
1826 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1827 {
1828 let member_inline_size =
1829 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1830 decoder.context,
1831 );
1832 if inlined != (member_inline_size <= 4) {
1833 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1834 }
1835 let inner_offset;
1836 let mut inner_depth = depth.clone();
1837 if inlined {
1838 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1839 inner_offset = next_offset;
1840 } else {
1841 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1842 inner_depth.increment()?;
1843 }
1844 let val_ref = self
1845 .buttons
1846 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1847 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1849 {
1850 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1851 }
1852 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1853 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1854 }
1855 }
1856
1857 next_offset += envelope_size;
1858 _next_ordinal_to_read += 1;
1859 if next_offset >= end_offset {
1860 return Ok(());
1861 }
1862
1863 while _next_ordinal_to_read < 5 {
1865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1866 _next_ordinal_to_read += 1;
1867 next_offset += envelope_size;
1868 }
1869
1870 let next_out_of_line = decoder.next_out_of_line();
1871 let handles_before = decoder.remaining_handles();
1872 if let Some((inlined, num_bytes, num_handles)) =
1873 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1874 {
1875 let member_inline_size = <fidl::encoding::Array<fidl_fuchsia_input_common::Axis, 2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1876 if inlined != (member_inline_size <= 4) {
1877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1878 }
1879 let inner_offset;
1880 let mut inner_depth = depth.clone();
1881 if inlined {
1882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1883 inner_offset = next_offset;
1884 } else {
1885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1886 inner_depth.increment()?;
1887 }
1888 let val_ref =
1889 self.relative_motion_range.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<fidl_fuchsia_input_common::Axis, 2>, D));
1890 fidl::decode!(fidl::encoding::Array<fidl_fuchsia_input_common::Axis, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
1891 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1892 {
1893 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1894 }
1895 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1896 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1897 }
1898 }
1899
1900 next_offset += envelope_size;
1901
1902 while next_offset < end_offset {
1904 _next_ordinal_to_read += 1;
1905 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1906 next_offset += envelope_size;
1907 }
1908
1909 Ok(())
1910 }
1911 }
1912
1913 impl MousePointerSample {
1914 #[inline(always)]
1915 fn max_ordinal_present(&self) -> u64 {
1916 if let Some(_) = self.is_precision_scroll {
1917 return 9;
1918 }
1919 if let Some(_) = self.scroll_h_physical_pixel {
1920 return 8;
1921 }
1922 if let Some(_) = self.scroll_v_physical_pixel {
1923 return 7;
1924 }
1925 if let Some(_) = self.relative_motion {
1926 return 6;
1927 }
1928 if let Some(_) = self.pressed_buttons {
1929 return 5;
1930 }
1931 if let Some(_) = self.scroll_h {
1932 return 4;
1933 }
1934 if let Some(_) = self.scroll_v {
1935 return 3;
1936 }
1937 if let Some(_) = self.position_in_viewport {
1938 return 2;
1939 }
1940 if let Some(_) = self.device_id {
1941 return 1;
1942 }
1943 0
1944 }
1945 }
1946
1947 impl fidl::encoding::ValueTypeMarker for MousePointerSample {
1948 type Borrowed<'a> = &'a Self;
1949 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1950 value
1951 }
1952 }
1953
1954 unsafe impl fidl::encoding::TypeMarker for MousePointerSample {
1955 type Owned = Self;
1956
1957 #[inline(always)]
1958 fn inline_align(_context: fidl::encoding::Context) -> usize {
1959 8
1960 }
1961
1962 #[inline(always)]
1963 fn inline_size(_context: fidl::encoding::Context) -> usize {
1964 16
1965 }
1966 }
1967
1968 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MousePointerSample, D>
1969 for &MousePointerSample
1970 {
1971 unsafe fn encode(
1972 self,
1973 encoder: &mut fidl::encoding::Encoder<'_, D>,
1974 offset: usize,
1975 mut depth: fidl::encoding::Depth,
1976 ) -> fidl::Result<()> {
1977 encoder.debug_check_bounds::<MousePointerSample>(offset);
1978 let max_ordinal: u64 = self.max_ordinal_present();
1980 encoder.write_num(max_ordinal, offset);
1981 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1982 if max_ordinal == 0 {
1984 return Ok(());
1985 }
1986 depth.increment()?;
1987 let envelope_size = 8;
1988 let bytes_len = max_ordinal as usize * envelope_size;
1989 #[allow(unused_variables)]
1990 let offset = encoder.out_of_line_offset(bytes_len);
1991 let mut _prev_end_offset: usize = 0;
1992 if 1 > max_ordinal {
1993 return Ok(());
1994 }
1995
1996 let cur_offset: usize = (1 - 1) * envelope_size;
1999
2000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2002
2003 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2008 self.device_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2009 encoder,
2010 offset + cur_offset,
2011 depth,
2012 )?;
2013
2014 _prev_end_offset = cur_offset + envelope_size;
2015 if 2 > max_ordinal {
2016 return Ok(());
2017 }
2018
2019 let cur_offset: usize = (2 - 1) * envelope_size;
2022
2023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2025
2026 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2031 self.position_in_viewport.as_ref().map(
2032 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2033 ),
2034 encoder,
2035 offset + cur_offset,
2036 depth,
2037 )?;
2038
2039 _prev_end_offset = cur_offset + envelope_size;
2040 if 3 > max_ordinal {
2041 return Ok(());
2042 }
2043
2044 let cur_offset: usize = (3 - 1) * envelope_size;
2047
2048 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2050
2051 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2056 self.scroll_v.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2057 encoder,
2058 offset + cur_offset,
2059 depth,
2060 )?;
2061
2062 _prev_end_offset = cur_offset + envelope_size;
2063 if 4 > max_ordinal {
2064 return Ok(());
2065 }
2066
2067 let cur_offset: usize = (4 - 1) * envelope_size;
2070
2071 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2073
2074 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2079 self.scroll_h.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2080 encoder,
2081 offset + cur_offset,
2082 depth,
2083 )?;
2084
2085 _prev_end_offset = cur_offset + envelope_size;
2086 if 5 > max_ordinal {
2087 return Ok(());
2088 }
2089
2090 let cur_offset: usize = (5 - 1) * envelope_size;
2093
2094 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2096
2097 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
2102 self.pressed_buttons.as_ref().map(
2103 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
2104 ),
2105 encoder,
2106 offset + cur_offset,
2107 depth,
2108 )?;
2109
2110 _prev_end_offset = cur_offset + envelope_size;
2111 if 6 > max_ordinal {
2112 return Ok(());
2113 }
2114
2115 let cur_offset: usize = (6 - 1) * envelope_size;
2118
2119 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2121
2122 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2127 self.relative_motion.as_ref().map(
2128 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2129 ),
2130 encoder,
2131 offset + cur_offset,
2132 depth,
2133 )?;
2134
2135 _prev_end_offset = cur_offset + envelope_size;
2136 if 7 > max_ordinal {
2137 return Ok(());
2138 }
2139
2140 let cur_offset: usize = (7 - 1) * envelope_size;
2143
2144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2146
2147 fidl::encoding::encode_in_envelope_optional::<f64, D>(
2152 self.scroll_v_physical_pixel
2153 .as_ref()
2154 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
2155 encoder,
2156 offset + cur_offset,
2157 depth,
2158 )?;
2159
2160 _prev_end_offset = cur_offset + envelope_size;
2161 if 8 > max_ordinal {
2162 return Ok(());
2163 }
2164
2165 let cur_offset: usize = (8 - 1) * envelope_size;
2168
2169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2171
2172 fidl::encoding::encode_in_envelope_optional::<f64, D>(
2177 self.scroll_h_physical_pixel
2178 .as_ref()
2179 .map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
2180 encoder,
2181 offset + cur_offset,
2182 depth,
2183 )?;
2184
2185 _prev_end_offset = cur_offset + envelope_size;
2186 if 9 > max_ordinal {
2187 return Ok(());
2188 }
2189
2190 let cur_offset: usize = (9 - 1) * envelope_size;
2193
2194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2196
2197 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2202 self.is_precision_scroll
2203 .as_ref()
2204 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2205 encoder,
2206 offset + cur_offset,
2207 depth,
2208 )?;
2209
2210 _prev_end_offset = cur_offset + envelope_size;
2211
2212 Ok(())
2213 }
2214 }
2215
2216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MousePointerSample {
2217 #[inline(always)]
2218 fn new_empty() -> Self {
2219 Self::default()
2220 }
2221
2222 unsafe fn decode(
2223 &mut self,
2224 decoder: &mut fidl::encoding::Decoder<'_, D>,
2225 offset: usize,
2226 mut depth: fidl::encoding::Depth,
2227 ) -> fidl::Result<()> {
2228 decoder.debug_check_bounds::<Self>(offset);
2229 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2230 None => return Err(fidl::Error::NotNullable),
2231 Some(len) => len,
2232 };
2233 if len == 0 {
2235 return Ok(());
2236 };
2237 depth.increment()?;
2238 let envelope_size = 8;
2239 let bytes_len = len * envelope_size;
2240 let offset = decoder.out_of_line_offset(bytes_len)?;
2241 let mut _next_ordinal_to_read = 0;
2243 let mut next_offset = offset;
2244 let end_offset = offset + bytes_len;
2245 _next_ordinal_to_read += 1;
2246 if next_offset >= end_offset {
2247 return Ok(());
2248 }
2249
2250 while _next_ordinal_to_read < 1 {
2252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2253 _next_ordinal_to_read += 1;
2254 next_offset += envelope_size;
2255 }
2256
2257 let next_out_of_line = decoder.next_out_of_line();
2258 let handles_before = decoder.remaining_handles();
2259 if let Some((inlined, num_bytes, num_handles)) =
2260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2261 {
2262 let member_inline_size =
2263 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2264 if inlined != (member_inline_size <= 4) {
2265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2266 }
2267 let inner_offset;
2268 let mut inner_depth = depth.clone();
2269 if inlined {
2270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2271 inner_offset = next_offset;
2272 } else {
2273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2274 inner_depth.increment()?;
2275 }
2276 let val_ref = self.device_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2277 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2278 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2279 {
2280 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2281 }
2282 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2283 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2284 }
2285 }
2286
2287 next_offset += envelope_size;
2288 _next_ordinal_to_read += 1;
2289 if next_offset >= end_offset {
2290 return Ok(());
2291 }
2292
2293 while _next_ordinal_to_read < 2 {
2295 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2296 _next_ordinal_to_read += 1;
2297 next_offset += envelope_size;
2298 }
2299
2300 let next_out_of_line = decoder.next_out_of_line();
2301 let handles_before = decoder.remaining_handles();
2302 if let Some((inlined, num_bytes, num_handles)) =
2303 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2304 {
2305 let member_inline_size =
2306 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
2307 decoder.context,
2308 );
2309 if inlined != (member_inline_size <= 4) {
2310 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2311 }
2312 let inner_offset;
2313 let mut inner_depth = depth.clone();
2314 if inlined {
2315 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2316 inner_offset = next_offset;
2317 } else {
2318 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2319 inner_depth.increment()?;
2320 }
2321 let val_ref = self
2322 .position_in_viewport
2323 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
2324 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
2325 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2326 {
2327 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2328 }
2329 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2330 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2331 }
2332 }
2333
2334 next_offset += envelope_size;
2335 _next_ordinal_to_read += 1;
2336 if next_offset >= end_offset {
2337 return Ok(());
2338 }
2339
2340 while _next_ordinal_to_read < 3 {
2342 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2343 _next_ordinal_to_read += 1;
2344 next_offset += envelope_size;
2345 }
2346
2347 let next_out_of_line = decoder.next_out_of_line();
2348 let handles_before = decoder.remaining_handles();
2349 if let Some((inlined, num_bytes, num_handles)) =
2350 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2351 {
2352 let member_inline_size =
2353 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2354 if inlined != (member_inline_size <= 4) {
2355 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2356 }
2357 let inner_offset;
2358 let mut inner_depth = depth.clone();
2359 if inlined {
2360 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2361 inner_offset = next_offset;
2362 } else {
2363 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2364 inner_depth.increment()?;
2365 }
2366 let val_ref = self.scroll_v.get_or_insert_with(|| fidl::new_empty!(i64, D));
2367 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2369 {
2370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2371 }
2372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2374 }
2375 }
2376
2377 next_offset += envelope_size;
2378 _next_ordinal_to_read += 1;
2379 if next_offset >= end_offset {
2380 return Ok(());
2381 }
2382
2383 while _next_ordinal_to_read < 4 {
2385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2386 _next_ordinal_to_read += 1;
2387 next_offset += envelope_size;
2388 }
2389
2390 let next_out_of_line = decoder.next_out_of_line();
2391 let handles_before = decoder.remaining_handles();
2392 if let Some((inlined, num_bytes, num_handles)) =
2393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2394 {
2395 let member_inline_size =
2396 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2397 if inlined != (member_inline_size <= 4) {
2398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2399 }
2400 let inner_offset;
2401 let mut inner_depth = depth.clone();
2402 if inlined {
2403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2404 inner_offset = next_offset;
2405 } else {
2406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2407 inner_depth.increment()?;
2408 }
2409 let val_ref = self.scroll_h.get_or_insert_with(|| fidl::new_empty!(i64, D));
2410 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2411 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2412 {
2413 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2414 }
2415 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2416 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2417 }
2418 }
2419
2420 next_offset += envelope_size;
2421 _next_ordinal_to_read += 1;
2422 if next_offset >= end_offset {
2423 return Ok(());
2424 }
2425
2426 while _next_ordinal_to_read < 5 {
2428 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2429 _next_ordinal_to_read += 1;
2430 next_offset += envelope_size;
2431 }
2432
2433 let next_out_of_line = decoder.next_out_of_line();
2434 let handles_before = decoder.remaining_handles();
2435 if let Some((inlined, num_bytes, num_handles)) =
2436 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2437 {
2438 let member_inline_size =
2439 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
2440 decoder.context,
2441 );
2442 if inlined != (member_inline_size <= 4) {
2443 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2444 }
2445 let inner_offset;
2446 let mut inner_depth = depth.clone();
2447 if inlined {
2448 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2449 inner_offset = next_offset;
2450 } else {
2451 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2452 inner_depth.increment()?;
2453 }
2454 let val_ref = self
2455 .pressed_buttons
2456 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
2457 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2458 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2459 {
2460 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2461 }
2462 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2463 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2464 }
2465 }
2466
2467 next_offset += envelope_size;
2468 _next_ordinal_to_read += 1;
2469 if next_offset >= end_offset {
2470 return Ok(());
2471 }
2472
2473 while _next_ordinal_to_read < 6 {
2475 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2476 _next_ordinal_to_read += 1;
2477 next_offset += envelope_size;
2478 }
2479
2480 let next_out_of_line = decoder.next_out_of_line();
2481 let handles_before = decoder.remaining_handles();
2482 if let Some((inlined, num_bytes, num_handles)) =
2483 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2484 {
2485 let member_inline_size =
2486 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
2487 decoder.context,
2488 );
2489 if inlined != (member_inline_size <= 4) {
2490 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2491 }
2492 let inner_offset;
2493 let mut inner_depth = depth.clone();
2494 if inlined {
2495 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2496 inner_offset = next_offset;
2497 } else {
2498 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2499 inner_depth.increment()?;
2500 }
2501 let val_ref = self
2502 .relative_motion
2503 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
2504 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
2505 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2506 {
2507 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2508 }
2509 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2510 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2511 }
2512 }
2513
2514 next_offset += envelope_size;
2515 _next_ordinal_to_read += 1;
2516 if next_offset >= end_offset {
2517 return Ok(());
2518 }
2519
2520 while _next_ordinal_to_read < 7 {
2522 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2523 _next_ordinal_to_read += 1;
2524 next_offset += envelope_size;
2525 }
2526
2527 let next_out_of_line = decoder.next_out_of_line();
2528 let handles_before = decoder.remaining_handles();
2529 if let Some((inlined, num_bytes, num_handles)) =
2530 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2531 {
2532 let member_inline_size =
2533 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2534 if inlined != (member_inline_size <= 4) {
2535 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2536 }
2537 let inner_offset;
2538 let mut inner_depth = depth.clone();
2539 if inlined {
2540 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2541 inner_offset = next_offset;
2542 } else {
2543 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2544 inner_depth.increment()?;
2545 }
2546 let val_ref =
2547 self.scroll_v_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
2548 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
2549 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2550 {
2551 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2552 }
2553 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2554 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2555 }
2556 }
2557
2558 next_offset += envelope_size;
2559 _next_ordinal_to_read += 1;
2560 if next_offset >= end_offset {
2561 return Ok(());
2562 }
2563
2564 while _next_ordinal_to_read < 8 {
2566 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2567 _next_ordinal_to_read += 1;
2568 next_offset += envelope_size;
2569 }
2570
2571 let next_out_of_line = decoder.next_out_of_line();
2572 let handles_before = decoder.remaining_handles();
2573 if let Some((inlined, num_bytes, num_handles)) =
2574 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2575 {
2576 let member_inline_size =
2577 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2578 if inlined != (member_inline_size <= 4) {
2579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2580 }
2581 let inner_offset;
2582 let mut inner_depth = depth.clone();
2583 if inlined {
2584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2585 inner_offset = next_offset;
2586 } else {
2587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2588 inner_depth.increment()?;
2589 }
2590 let val_ref =
2591 self.scroll_h_physical_pixel.get_or_insert_with(|| fidl::new_empty!(f64, D));
2592 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
2593 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2594 {
2595 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2596 }
2597 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2598 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2599 }
2600 }
2601
2602 next_offset += envelope_size;
2603 _next_ordinal_to_read += 1;
2604 if next_offset >= end_offset {
2605 return Ok(());
2606 }
2607
2608 while _next_ordinal_to_read < 9 {
2610 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2611 _next_ordinal_to_read += 1;
2612 next_offset += envelope_size;
2613 }
2614
2615 let next_out_of_line = decoder.next_out_of_line();
2616 let handles_before = decoder.remaining_handles();
2617 if let Some((inlined, num_bytes, num_handles)) =
2618 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2619 {
2620 let member_inline_size =
2621 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2622 if inlined != (member_inline_size <= 4) {
2623 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2624 }
2625 let inner_offset;
2626 let mut inner_depth = depth.clone();
2627 if inlined {
2628 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2629 inner_offset = next_offset;
2630 } else {
2631 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2632 inner_depth.increment()?;
2633 }
2634 let val_ref =
2635 self.is_precision_scroll.get_or_insert_with(|| fidl::new_empty!(bool, D));
2636 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2637 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2638 {
2639 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2640 }
2641 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2642 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2643 }
2644 }
2645
2646 next_offset += envelope_size;
2647
2648 while next_offset < end_offset {
2650 _next_ordinal_to_read += 1;
2651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2652 next_offset += envelope_size;
2653 }
2654
2655 Ok(())
2656 }
2657 }
2658
2659 impl TouchDeviceInfo {
2660 #[inline(always)]
2661 fn max_ordinal_present(&self) -> u64 {
2662 if let Some(_) = self.id {
2663 return 1;
2664 }
2665 0
2666 }
2667 }
2668
2669 impl fidl::encoding::ValueTypeMarker for TouchDeviceInfo {
2670 type Borrowed<'a> = &'a Self;
2671 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2672 value
2673 }
2674 }
2675
2676 unsafe impl fidl::encoding::TypeMarker for TouchDeviceInfo {
2677 type Owned = Self;
2678
2679 #[inline(always)]
2680 fn inline_align(_context: fidl::encoding::Context) -> usize {
2681 8
2682 }
2683
2684 #[inline(always)]
2685 fn inline_size(_context: fidl::encoding::Context) -> usize {
2686 16
2687 }
2688 }
2689
2690 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchDeviceInfo, D>
2691 for &TouchDeviceInfo
2692 {
2693 unsafe fn encode(
2694 self,
2695 encoder: &mut fidl::encoding::Encoder<'_, D>,
2696 offset: usize,
2697 mut depth: fidl::encoding::Depth,
2698 ) -> fidl::Result<()> {
2699 encoder.debug_check_bounds::<TouchDeviceInfo>(offset);
2700 let max_ordinal: u64 = self.max_ordinal_present();
2702 encoder.write_num(max_ordinal, offset);
2703 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2704 if max_ordinal == 0 {
2706 return Ok(());
2707 }
2708 depth.increment()?;
2709 let envelope_size = 8;
2710 let bytes_len = max_ordinal as usize * envelope_size;
2711 #[allow(unused_variables)]
2712 let offset = encoder.out_of_line_offset(bytes_len);
2713 let mut _prev_end_offset: usize = 0;
2714 if 1 > max_ordinal {
2715 return Ok(());
2716 }
2717
2718 let cur_offset: usize = (1 - 1) * envelope_size;
2721
2722 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2724
2725 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2730 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2731 encoder,
2732 offset + cur_offset,
2733 depth,
2734 )?;
2735
2736 _prev_end_offset = cur_offset + envelope_size;
2737
2738 Ok(())
2739 }
2740 }
2741
2742 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchDeviceInfo {
2743 #[inline(always)]
2744 fn new_empty() -> Self {
2745 Self::default()
2746 }
2747
2748 unsafe fn decode(
2749 &mut self,
2750 decoder: &mut fidl::encoding::Decoder<'_, D>,
2751 offset: usize,
2752 mut depth: fidl::encoding::Depth,
2753 ) -> fidl::Result<()> {
2754 decoder.debug_check_bounds::<Self>(offset);
2755 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2756 None => return Err(fidl::Error::NotNullable),
2757 Some(len) => len,
2758 };
2759 if len == 0 {
2761 return Ok(());
2762 };
2763 depth.increment()?;
2764 let envelope_size = 8;
2765 let bytes_len = len * envelope_size;
2766 let offset = decoder.out_of_line_offset(bytes_len)?;
2767 let mut _next_ordinal_to_read = 0;
2769 let mut next_offset = offset;
2770 let end_offset = offset + bytes_len;
2771 _next_ordinal_to_read += 1;
2772 if next_offset >= end_offset {
2773 return Ok(());
2774 }
2775
2776 while _next_ordinal_to_read < 1 {
2778 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2779 _next_ordinal_to_read += 1;
2780 next_offset += envelope_size;
2781 }
2782
2783 let next_out_of_line = decoder.next_out_of_line();
2784 let handles_before = decoder.remaining_handles();
2785 if let Some((inlined, num_bytes, num_handles)) =
2786 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2787 {
2788 let member_inline_size =
2789 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2790 if inlined != (member_inline_size <= 4) {
2791 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2792 }
2793 let inner_offset;
2794 let mut inner_depth = depth.clone();
2795 if inlined {
2796 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2797 inner_offset = next_offset;
2798 } else {
2799 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2800 inner_depth.increment()?;
2801 }
2802 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2803 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2805 {
2806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2807 }
2808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2810 }
2811 }
2812
2813 next_offset += envelope_size;
2814
2815 while next_offset < end_offset {
2817 _next_ordinal_to_read += 1;
2818 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2819 next_offset += envelope_size;
2820 }
2821
2822 Ok(())
2823 }
2824 }
2825
2826 impl TouchPointerSample {
2827 #[inline(always)]
2828 fn max_ordinal_present(&self) -> u64 {
2829 if let Some(_) = self.position_in_viewport {
2830 return 3;
2831 }
2832 if let Some(_) = self.phase {
2833 return 2;
2834 }
2835 if let Some(_) = self.interaction {
2836 return 1;
2837 }
2838 0
2839 }
2840 }
2841
2842 impl fidl::encoding::ValueTypeMarker for TouchPointerSample {
2843 type Borrowed<'a> = &'a Self;
2844 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2845 value
2846 }
2847 }
2848
2849 unsafe impl fidl::encoding::TypeMarker for TouchPointerSample {
2850 type Owned = Self;
2851
2852 #[inline(always)]
2853 fn inline_align(_context: fidl::encoding::Context) -> usize {
2854 8
2855 }
2856
2857 #[inline(always)]
2858 fn inline_size(_context: fidl::encoding::Context) -> usize {
2859 16
2860 }
2861 }
2862
2863 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchPointerSample, D>
2864 for &TouchPointerSample
2865 {
2866 unsafe fn encode(
2867 self,
2868 encoder: &mut fidl::encoding::Encoder<'_, D>,
2869 offset: usize,
2870 mut depth: fidl::encoding::Depth,
2871 ) -> fidl::Result<()> {
2872 encoder.debug_check_bounds::<TouchPointerSample>(offset);
2873 let max_ordinal: u64 = self.max_ordinal_present();
2875 encoder.write_num(max_ordinal, offset);
2876 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2877 if max_ordinal == 0 {
2879 return Ok(());
2880 }
2881 depth.increment()?;
2882 let envelope_size = 8;
2883 let bytes_len = max_ordinal as usize * envelope_size;
2884 #[allow(unused_variables)]
2885 let offset = encoder.out_of_line_offset(bytes_len);
2886 let mut _prev_end_offset: usize = 0;
2887 if 1 > max_ordinal {
2888 return Ok(());
2889 }
2890
2891 let cur_offset: usize = (1 - 1) * envelope_size;
2894
2895 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2897
2898 fidl::encoding::encode_in_envelope_optional::<TouchInteractionId, D>(
2903 self.interaction
2904 .as_ref()
2905 .map(<TouchInteractionId as fidl::encoding::ValueTypeMarker>::borrow),
2906 encoder,
2907 offset + cur_offset,
2908 depth,
2909 )?;
2910
2911 _prev_end_offset = cur_offset + envelope_size;
2912 if 2 > max_ordinal {
2913 return Ok(());
2914 }
2915
2916 let cur_offset: usize = (2 - 1) * envelope_size;
2919
2920 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2922
2923 fidl::encoding::encode_in_envelope_optional::<EventPhase, D>(
2928 self.phase.as_ref().map(<EventPhase as fidl::encoding::ValueTypeMarker>::borrow),
2929 encoder,
2930 offset + cur_offset,
2931 depth,
2932 )?;
2933
2934 _prev_end_offset = cur_offset + envelope_size;
2935 if 3 > max_ordinal {
2936 return Ok(());
2937 }
2938
2939 let cur_offset: usize = (3 - 1) * envelope_size;
2942
2943 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2945
2946 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<f32, 2>, D>(
2951 self.position_in_viewport.as_ref().map(
2952 <fidl::encoding::Array<f32, 2> as fidl::encoding::ValueTypeMarker>::borrow,
2953 ),
2954 encoder,
2955 offset + cur_offset,
2956 depth,
2957 )?;
2958
2959 _prev_end_offset = cur_offset + envelope_size;
2960
2961 Ok(())
2962 }
2963 }
2964
2965 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchPointerSample {
2966 #[inline(always)]
2967 fn new_empty() -> Self {
2968 Self::default()
2969 }
2970
2971 unsafe fn decode(
2972 &mut self,
2973 decoder: &mut fidl::encoding::Decoder<'_, D>,
2974 offset: usize,
2975 mut depth: fidl::encoding::Depth,
2976 ) -> fidl::Result<()> {
2977 decoder.debug_check_bounds::<Self>(offset);
2978 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2979 None => return Err(fidl::Error::NotNullable),
2980 Some(len) => len,
2981 };
2982 if len == 0 {
2984 return Ok(());
2985 };
2986 depth.increment()?;
2987 let envelope_size = 8;
2988 let bytes_len = len * envelope_size;
2989 let offset = decoder.out_of_line_offset(bytes_len)?;
2990 let mut _next_ordinal_to_read = 0;
2992 let mut next_offset = offset;
2993 let end_offset = offset + bytes_len;
2994 _next_ordinal_to_read += 1;
2995 if next_offset >= end_offset {
2996 return Ok(());
2997 }
2998
2999 while _next_ordinal_to_read < 1 {
3001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3002 _next_ordinal_to_read += 1;
3003 next_offset += envelope_size;
3004 }
3005
3006 let next_out_of_line = decoder.next_out_of_line();
3007 let handles_before = decoder.remaining_handles();
3008 if let Some((inlined, num_bytes, num_handles)) =
3009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3010 {
3011 let member_inline_size =
3012 <TouchInteractionId as fidl::encoding::TypeMarker>::inline_size(
3013 decoder.context,
3014 );
3015 if inlined != (member_inline_size <= 4) {
3016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3017 }
3018 let inner_offset;
3019 let mut inner_depth = depth.clone();
3020 if inlined {
3021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3022 inner_offset = next_offset;
3023 } else {
3024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3025 inner_depth.increment()?;
3026 }
3027 let val_ref =
3028 self.interaction.get_or_insert_with(|| fidl::new_empty!(TouchInteractionId, D));
3029 fidl::decode!(TouchInteractionId, D, val_ref, decoder, inner_offset, inner_depth)?;
3030 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3031 {
3032 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3033 }
3034 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3035 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3036 }
3037 }
3038
3039 next_offset += envelope_size;
3040 _next_ordinal_to_read += 1;
3041 if next_offset >= end_offset {
3042 return Ok(());
3043 }
3044
3045 while _next_ordinal_to_read < 2 {
3047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3048 _next_ordinal_to_read += 1;
3049 next_offset += envelope_size;
3050 }
3051
3052 let next_out_of_line = decoder.next_out_of_line();
3053 let handles_before = decoder.remaining_handles();
3054 if let Some((inlined, num_bytes, num_handles)) =
3055 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3056 {
3057 let member_inline_size =
3058 <EventPhase as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3059 if inlined != (member_inline_size <= 4) {
3060 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3061 }
3062 let inner_offset;
3063 let mut inner_depth = depth.clone();
3064 if inlined {
3065 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3066 inner_offset = next_offset;
3067 } else {
3068 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3069 inner_depth.increment()?;
3070 }
3071 let val_ref = self.phase.get_or_insert_with(|| fidl::new_empty!(EventPhase, D));
3072 fidl::decode!(EventPhase, D, val_ref, decoder, inner_offset, inner_depth)?;
3073 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3074 {
3075 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3076 }
3077 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3078 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3079 }
3080 }
3081
3082 next_offset += envelope_size;
3083 _next_ordinal_to_read += 1;
3084 if next_offset >= end_offset {
3085 return Ok(());
3086 }
3087
3088 while _next_ordinal_to_read < 3 {
3090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3091 _next_ordinal_to_read += 1;
3092 next_offset += envelope_size;
3093 }
3094
3095 let next_out_of_line = decoder.next_out_of_line();
3096 let handles_before = decoder.remaining_handles();
3097 if let Some((inlined, num_bytes, num_handles)) =
3098 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3099 {
3100 let member_inline_size =
3101 <fidl::encoding::Array<f32, 2> as fidl::encoding::TypeMarker>::inline_size(
3102 decoder.context,
3103 );
3104 if inlined != (member_inline_size <= 4) {
3105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3106 }
3107 let inner_offset;
3108 let mut inner_depth = depth.clone();
3109 if inlined {
3110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3111 inner_offset = next_offset;
3112 } else {
3113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3114 inner_depth.increment()?;
3115 }
3116 let val_ref = self
3117 .position_in_viewport
3118 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<f32, 2>, D));
3119 fidl::decode!(fidl::encoding::Array<f32, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
3120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3121 {
3122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3123 }
3124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3126 }
3127 }
3128
3129 next_offset += envelope_size;
3130
3131 while next_offset < end_offset {
3133 _next_ordinal_to_read += 1;
3134 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3135 next_offset += envelope_size;
3136 }
3137
3138 Ok(())
3139 }
3140 }
3141
3142 impl TouchResponse {
3143 #[inline(always)]
3144 fn max_ordinal_present(&self) -> u64 {
3145 if let Some(_) = self.trace_flow_id {
3146 return 2;
3147 }
3148 if let Some(_) = self.response_type {
3149 return 1;
3150 }
3151 0
3152 }
3153 }
3154
3155 impl fidl::encoding::ValueTypeMarker for TouchResponse {
3156 type Borrowed<'a> = &'a Self;
3157 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3158 value
3159 }
3160 }
3161
3162 unsafe impl fidl::encoding::TypeMarker for TouchResponse {
3163 type Owned = Self;
3164
3165 #[inline(always)]
3166 fn inline_align(_context: fidl::encoding::Context) -> usize {
3167 8
3168 }
3169
3170 #[inline(always)]
3171 fn inline_size(_context: fidl::encoding::Context) -> usize {
3172 16
3173 }
3174 }
3175
3176 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TouchResponse, D>
3177 for &TouchResponse
3178 {
3179 unsafe fn encode(
3180 self,
3181 encoder: &mut fidl::encoding::Encoder<'_, D>,
3182 offset: usize,
3183 mut depth: fidl::encoding::Depth,
3184 ) -> fidl::Result<()> {
3185 encoder.debug_check_bounds::<TouchResponse>(offset);
3186 let max_ordinal: u64 = self.max_ordinal_present();
3188 encoder.write_num(max_ordinal, offset);
3189 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3190 if max_ordinal == 0 {
3192 return Ok(());
3193 }
3194 depth.increment()?;
3195 let envelope_size = 8;
3196 let bytes_len = max_ordinal as usize * envelope_size;
3197 #[allow(unused_variables)]
3198 let offset = encoder.out_of_line_offset(bytes_len);
3199 let mut _prev_end_offset: usize = 0;
3200 if 1 > max_ordinal {
3201 return Ok(());
3202 }
3203
3204 let cur_offset: usize = (1 - 1) * envelope_size;
3207
3208 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3210
3211 fidl::encoding::encode_in_envelope_optional::<TouchResponseType, D>(
3216 self.response_type
3217 .as_ref()
3218 .map(<TouchResponseType as fidl::encoding::ValueTypeMarker>::borrow),
3219 encoder,
3220 offset + cur_offset,
3221 depth,
3222 )?;
3223
3224 _prev_end_offset = cur_offset + envelope_size;
3225 if 2 > max_ordinal {
3226 return Ok(());
3227 }
3228
3229 let cur_offset: usize = (2 - 1) * envelope_size;
3232
3233 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3235
3236 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3241 self.trace_flow_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3242 encoder,
3243 offset + cur_offset,
3244 depth,
3245 )?;
3246
3247 _prev_end_offset = cur_offset + envelope_size;
3248
3249 Ok(())
3250 }
3251 }
3252
3253 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TouchResponse {
3254 #[inline(always)]
3255 fn new_empty() -> Self {
3256 Self::default()
3257 }
3258
3259 unsafe fn decode(
3260 &mut self,
3261 decoder: &mut fidl::encoding::Decoder<'_, D>,
3262 offset: usize,
3263 mut depth: fidl::encoding::Depth,
3264 ) -> fidl::Result<()> {
3265 decoder.debug_check_bounds::<Self>(offset);
3266 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3267 None => return Err(fidl::Error::NotNullable),
3268 Some(len) => len,
3269 };
3270 if len == 0 {
3272 return Ok(());
3273 };
3274 depth.increment()?;
3275 let envelope_size = 8;
3276 let bytes_len = len * envelope_size;
3277 let offset = decoder.out_of_line_offset(bytes_len)?;
3278 let mut _next_ordinal_to_read = 0;
3280 let mut next_offset = offset;
3281 let end_offset = offset + bytes_len;
3282 _next_ordinal_to_read += 1;
3283 if next_offset >= end_offset {
3284 return Ok(());
3285 }
3286
3287 while _next_ordinal_to_read < 1 {
3289 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3290 _next_ordinal_to_read += 1;
3291 next_offset += envelope_size;
3292 }
3293
3294 let next_out_of_line = decoder.next_out_of_line();
3295 let handles_before = decoder.remaining_handles();
3296 if let Some((inlined, num_bytes, num_handles)) =
3297 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3298 {
3299 let member_inline_size =
3300 <TouchResponseType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3301 if inlined != (member_inline_size <= 4) {
3302 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3303 }
3304 let inner_offset;
3305 let mut inner_depth = depth.clone();
3306 if inlined {
3307 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3308 inner_offset = next_offset;
3309 } else {
3310 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3311 inner_depth.increment()?;
3312 }
3313 let val_ref = self
3314 .response_type
3315 .get_or_insert_with(|| fidl::new_empty!(TouchResponseType, D));
3316 fidl::decode!(TouchResponseType, D, val_ref, decoder, inner_offset, inner_depth)?;
3317 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3318 {
3319 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3320 }
3321 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3322 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3323 }
3324 }
3325
3326 next_offset += envelope_size;
3327 _next_ordinal_to_read += 1;
3328 if next_offset >= end_offset {
3329 return Ok(());
3330 }
3331
3332 while _next_ordinal_to_read < 2 {
3334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3335 _next_ordinal_to_read += 1;
3336 next_offset += envelope_size;
3337 }
3338
3339 let next_out_of_line = decoder.next_out_of_line();
3340 let handles_before = decoder.remaining_handles();
3341 if let Some((inlined, num_bytes, num_handles)) =
3342 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3343 {
3344 let member_inline_size =
3345 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3346 if inlined != (member_inline_size <= 4) {
3347 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3348 }
3349 let inner_offset;
3350 let mut inner_depth = depth.clone();
3351 if inlined {
3352 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3353 inner_offset = next_offset;
3354 } else {
3355 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3356 inner_depth.increment()?;
3357 }
3358 let val_ref = self.trace_flow_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3359 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3360 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3361 {
3362 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3363 }
3364 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3365 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3366 }
3367 }
3368
3369 next_offset += envelope_size;
3370
3371 while next_offset < end_offset {
3373 _next_ordinal_to_read += 1;
3374 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3375 next_offset += envelope_size;
3376 }
3377
3378 Ok(())
3379 }
3380 }
3381}