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