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 NodeName = String;
12
13pub type NodeOffersVector = Vec<Offer>;
14
15pub type NodeProperties = Vec<NodeProperty2>;
16
17pub type NodePropertyDictionary = Vec<NodePropertyEntry>;
18
19pub type NodePropertyDictionary2 = Vec<NodePropertyEntry2>;
20
21pub type NodePropertyKeyString = String;
22
23pub type NodePropertyKeyUint = u32;
24
25pub type NodePropertyValueBool = bool;
26
27pub type NodePropertyValueEnum = String;
28
29pub type NodePropertyValueString = String;
30
31pub type NodePropertyValueUint = u32;
32
33pub type NodePropertyVector = Vec<NodeProperty>;
34
35pub const MAX_DEVICE_ADDRESS_ARRAY_LEN: u32 = 10;
36
37pub const MAX_DEVICE_ADDRESS_STR_LEN: u32 = 32;
38
39pub const MAX_DRIVER_HOST_LENGTH: u8 = 128;
40
41pub const MAX_MODULE_NAME_LENGTH: u8 = 128;
42
43pub const MAX_NAMESPACE_COUNT: u32 =
44 fidl_fuchsia_component_runner__common::MAX_NAMESPACE_COUNT as u32;
45
46pub const MAX_NODE_NAME_LENGTH: u8 = 128;
47
48pub const MAX_OFFER_COUNT: u32 = fidl_fuchsia_component__common::MAX_DYNAMIC_OFFER_COUNT as u32;
49
50pub const MAX_PROPERTY_COUNT: u8 = 64;
51
52pub const MAX_RESOURCE_NAME_LENGTH: u8 = 128;
53
54pub const MAX_SYMBOL_COUNT: u8 = 64;
55
56pub const MAX_SYMBOL_NAME_LENGTH: u8 = 128;
57
58#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
59pub enum BusType {
60 Platform,
61 Acpi,
62 DeviceTree,
63 Pci,
64 Usb,
65 Gpio,
66 I2C,
67 Spi,
68 Sdio,
69 Uart,
70 Spmi,
71 #[doc(hidden)]
72 __SourceBreaking {
73 unknown_ordinal: u32,
74 },
75}
76
77#[macro_export]
79macro_rules! BusTypeUnknown {
80 () => {
81 _
82 };
83}
84
85impl BusType {
86 #[inline]
87 pub fn from_primitive(prim: u32) -> Option<Self> {
88 match prim {
89 1 => Some(Self::Platform),
90 2 => Some(Self::Acpi),
91 3 => Some(Self::DeviceTree),
92 4 => Some(Self::Pci),
93 5 => Some(Self::Usb),
94 6 => Some(Self::Gpio),
95 7 => Some(Self::I2C),
96 8 => Some(Self::Spi),
97 9 => Some(Self::Sdio),
98 10 => Some(Self::Uart),
99 11 => Some(Self::Spmi),
100 _ => None,
101 }
102 }
103
104 #[inline]
105 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
106 match prim {
107 1 => Self::Platform,
108 2 => Self::Acpi,
109 3 => Self::DeviceTree,
110 4 => Self::Pci,
111 5 => Self::Usb,
112 6 => Self::Gpio,
113 7 => Self::I2C,
114 8 => Self::Spi,
115 9 => Self::Sdio,
116 10 => Self::Uart,
117 11 => Self::Spmi,
118 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
119 }
120 }
121
122 #[inline]
123 pub fn unknown() -> Self {
124 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
125 }
126
127 #[inline]
128 pub const fn into_primitive(self) -> u32 {
129 match self {
130 Self::Platform => 1,
131 Self::Acpi => 2,
132 Self::DeviceTree => 3,
133 Self::Pci => 4,
134 Self::Usb => 5,
135 Self::Gpio => 6,
136 Self::I2C => 7,
137 Self::Spi => 8,
138 Self::Sdio => 9,
139 Self::Uart => 10,
140 Self::Spmi => 11,
141 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
142 }
143 }
144
145 #[inline]
146 pub fn is_unknown(&self) -> bool {
147 match self {
148 Self::__SourceBreaking { unknown_ordinal: _ } => true,
149 _ => false,
150 }
151 }
152}
153
154#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
156pub enum CompositeNodeSpecError {
157 MissingArgs,
159 EmptyNodes,
161 AlreadyExists,
164 DriverIndexFailure,
166 DuplicateParents,
168 #[doc(hidden)]
169 __SourceBreaking { unknown_ordinal: u32 },
170}
171
172#[macro_export]
174macro_rules! CompositeNodeSpecErrorUnknown {
175 () => {
176 _
177 };
178}
179
180impl CompositeNodeSpecError {
181 #[inline]
182 pub fn from_primitive(prim: u32) -> Option<Self> {
183 match prim {
184 1 => Some(Self::MissingArgs),
185 2 => Some(Self::EmptyNodes),
186 3 => Some(Self::AlreadyExists),
187 4 => Some(Self::DriverIndexFailure),
188 5 => Some(Self::DuplicateParents),
189 _ => None,
190 }
191 }
192
193 #[inline]
194 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
195 match prim {
196 1 => Self::MissingArgs,
197 2 => Self::EmptyNodes,
198 3 => Self::AlreadyExists,
199 4 => Self::DriverIndexFailure,
200 5 => Self::DuplicateParents,
201 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
202 }
203 }
204
205 #[inline]
206 pub fn unknown() -> Self {
207 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
208 }
209
210 #[inline]
211 pub const fn into_primitive(self) -> u32 {
212 match self {
213 Self::MissingArgs => 1,
214 Self::EmptyNodes => 2,
215 Self::AlreadyExists => 3,
216 Self::DriverIndexFailure => 4,
217 Self::DuplicateParents => 5,
218 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
219 }
220 }
221
222 #[inline]
223 pub fn is_unknown(&self) -> bool {
224 match self {
225 Self::__SourceBreaking { unknown_ordinal: _ } => true,
226 _ => false,
227 }
228 }
229}
230
231#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
233#[repr(u32)]
234pub enum Condition {
235 Unknown = 0,
236 Accept = 1,
237 Reject = 2,
238}
239
240impl Condition {
241 #[inline]
242 pub fn from_primitive(prim: u32) -> Option<Self> {
243 match prim {
244 0 => Some(Self::Unknown),
245 1 => Some(Self::Accept),
246 2 => Some(Self::Reject),
247 _ => None,
248 }
249 }
250
251 #[inline]
252 pub const fn into_primitive(self) -> u32 {
253 self as u32
254 }
255}
256
257#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
258pub enum DeviceAddressStability {
259 UnstableBetweenDriverRestart,
261 UnstableBetweenBoot,
263 UnstableBetweenSoftwareUpdate,
265 Stable,
267 #[doc(hidden)]
268 __SourceBreaking { unknown_ordinal: u32 },
269}
270
271#[macro_export]
273macro_rules! DeviceAddressStabilityUnknown {
274 () => {
275 _
276 };
277}
278
279impl DeviceAddressStability {
280 #[inline]
281 pub fn from_primitive(prim: u32) -> Option<Self> {
282 match prim {
283 0 => Some(Self::UnstableBetweenDriverRestart),
284 1 => Some(Self::UnstableBetweenBoot),
285 2 => Some(Self::UnstableBetweenSoftwareUpdate),
286 3 => Some(Self::Stable),
287 _ => None,
288 }
289 }
290
291 #[inline]
292 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
293 match prim {
294 0 => Self::UnstableBetweenDriverRestart,
295 1 => Self::UnstableBetweenBoot,
296 2 => Self::UnstableBetweenSoftwareUpdate,
297 3 => Self::Stable,
298 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
299 }
300 }
301
302 #[inline]
303 pub fn unknown() -> Self {
304 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
305 }
306
307 #[inline]
308 pub const fn into_primitive(self) -> u32 {
309 match self {
310 Self::UnstableBetweenDriverRestart => 0,
311 Self::UnstableBetweenBoot => 1,
312 Self::UnstableBetweenSoftwareUpdate => 2,
313 Self::Stable => 3,
314 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
315 }
316 }
317
318 #[inline]
319 pub fn is_unknown(&self) -> bool {
320 match self {
321 Self::__SourceBreaking { unknown_ordinal: _ } => true,
322 _ => false,
323 }
324 }
325}
326
327#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
331pub enum DriverPackageType {
332 Boot,
334 Base,
336 Cached,
339 Universe,
341 #[doc(hidden)]
342 __SourceBreaking { unknown_ordinal: u8 },
343}
344
345#[macro_export]
347macro_rules! DriverPackageTypeUnknown {
348 () => {
349 _
350 };
351}
352
353impl DriverPackageType {
354 #[inline]
355 pub fn from_primitive(prim: u8) -> Option<Self> {
356 match prim {
357 0 => Some(Self::Boot),
358 1 => Some(Self::Base),
359 2 => Some(Self::Cached),
360 3 => Some(Self::Universe),
361 _ => None,
362 }
363 }
364
365 #[inline]
366 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
367 match prim {
368 0 => Self::Boot,
369 1 => Self::Base,
370 2 => Self::Cached,
371 3 => Self::Universe,
372 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
373 }
374 }
375
376 #[inline]
377 pub fn unknown() -> Self {
378 Self::__SourceBreaking { unknown_ordinal: 0xff }
379 }
380
381 #[inline]
382 pub const fn into_primitive(self) -> u8 {
383 match self {
384 Self::Boot => 0,
385 Self::Base => 1,
386 Self::Cached => 2,
387 Self::Universe => 3,
388 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
389 }
390 }
391
392 #[inline]
393 pub fn is_unknown(&self) -> bool {
394 match self {
395 Self::__SourceBreaking { unknown_ordinal: _ } => true,
396 _ => false,
397 }
398 }
399}
400
401#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
403pub enum NodeError {
404 Internal,
405 NodeRemoved,
406 NameMissing,
407 NameInvalid,
410 NameAlreadyExists,
412 OfferSourceNameMissing,
414 OfferRefExists,
416 SymbolNameMissing,
418 SymbolAddressMissing,
420 SymbolAlreadyExists,
422 UnbindChildrenInProgress,
424 UnsupportedArgs,
426 DuplicatePropertyKeys,
428 OfferSourceInstanceFilterMissing,
430 OfferRenamedInstancesMissing,
432 #[doc(hidden)]
433 __SourceBreaking {
434 unknown_ordinal: u32,
435 },
436}
437
438#[macro_export]
440macro_rules! NodeErrorUnknown {
441 () => {
442 _
443 };
444}
445
446impl NodeError {
447 #[inline]
448 pub fn from_primitive(prim: u32) -> Option<Self> {
449 match prim {
450 1 => Some(Self::Internal),
451 2 => Some(Self::NodeRemoved),
452 3 => Some(Self::NameMissing),
453 4 => Some(Self::NameInvalid),
454 5 => Some(Self::NameAlreadyExists),
455 6 => Some(Self::OfferSourceNameMissing),
456 7 => Some(Self::OfferRefExists),
457 8 => Some(Self::SymbolNameMissing),
458 9 => Some(Self::SymbolAddressMissing),
459 10 => Some(Self::SymbolAlreadyExists),
460 11 => Some(Self::UnbindChildrenInProgress),
461 12 => Some(Self::UnsupportedArgs),
462 13 => Some(Self::DuplicatePropertyKeys),
463 14 => Some(Self::OfferSourceInstanceFilterMissing),
464 15 => Some(Self::OfferRenamedInstancesMissing),
465 _ => None,
466 }
467 }
468
469 #[inline]
470 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
471 match prim {
472 1 => Self::Internal,
473 2 => Self::NodeRemoved,
474 3 => Self::NameMissing,
475 4 => Self::NameInvalid,
476 5 => Self::NameAlreadyExists,
477 6 => Self::OfferSourceNameMissing,
478 7 => Self::OfferRefExists,
479 8 => Self::SymbolNameMissing,
480 9 => Self::SymbolAddressMissing,
481 10 => Self::SymbolAlreadyExists,
482 11 => Self::UnbindChildrenInProgress,
483 12 => Self::UnsupportedArgs,
484 13 => Self::DuplicatePropertyKeys,
485 14 => Self::OfferSourceInstanceFilterMissing,
486 15 => Self::OfferRenamedInstancesMissing,
487 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
488 }
489 }
490
491 #[inline]
492 pub fn unknown() -> Self {
493 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
494 }
495
496 #[inline]
497 pub const fn into_primitive(self) -> u32 {
498 match self {
499 Self::Internal => 1,
500 Self::NodeRemoved => 2,
501 Self::NameMissing => 3,
502 Self::NameInvalid => 4,
503 Self::NameAlreadyExists => 5,
504 Self::OfferSourceNameMissing => 6,
505 Self::OfferRefExists => 7,
506 Self::SymbolNameMissing => 8,
507 Self::SymbolAddressMissing => 9,
508 Self::SymbolAlreadyExists => 10,
509 Self::UnbindChildrenInProgress => 11,
510 Self::UnsupportedArgs => 12,
511 Self::DuplicatePropertyKeys => 13,
512 Self::OfferSourceInstanceFilterMissing => 14,
513 Self::OfferRenamedInstancesMissing => 15,
514 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
515 }
516 }
517
518 #[inline]
519 pub fn is_unknown(&self) -> bool {
520 match self {
521 Self::__SourceBreaking { unknown_ordinal: _ } => true,
522 _ => false,
523 }
524 }
525}
526
527#[derive(Clone, Debug, PartialEq)]
529pub struct BindRule {
530 pub key: NodePropertyKey,
532 pub condition: Condition,
536 pub values: Vec<NodePropertyValue>,
539}
540
541impl fidl::Persistable for BindRule {}
542
543#[derive(Clone, Debug, PartialEq)]
545pub struct BindRule2 {
546 pub key: String,
548 pub condition: Condition,
552 pub values: Vec<NodePropertyValue>,
555}
556
557impl fidl::Persistable for BindRule2 {}
558
559#[derive(Clone, Debug, PartialEq)]
562pub struct NodeProperty {
563 pub key: NodePropertyKey,
566 pub value: NodePropertyValue,
568}
569
570impl fidl::Persistable for NodeProperty {}
571
572#[derive(Clone, Debug, PartialEq)]
573pub struct NodeProperty2 {
574 pub key: String,
576 pub value: NodePropertyValue,
578}
579
580impl fidl::Persistable for NodeProperty2 {}
581
582#[derive(Clone, Debug, PartialEq)]
584pub struct NodePropertyEntry {
585 pub name: String,
587 pub properties: Vec<NodeProperty>,
591}
592
593impl fidl::Persistable for NodePropertyEntry {}
594
595#[derive(Clone, Debug, PartialEq)]
597pub struct NodePropertyEntry2 {
598 pub name: String,
600 pub properties: Vec<NodeProperty2>,
604}
605
606impl fidl::Persistable for NodePropertyEntry2 {}
607
608#[derive(Clone, Debug, PartialEq)]
611pub struct ParentSpec {
612 pub bind_rules: Vec<BindRule>,
614 pub properties: Vec<NodeProperty>,
617}
618
619impl fidl::Persistable for ParentSpec {}
620
621#[derive(Clone, Debug, PartialEq)]
624pub struct ParentSpec2 {
625 pub bind_rules: Vec<BindRule2>,
627 pub properties: Vec<NodeProperty2>,
630}
631
632impl fidl::Persistable for ParentSpec2 {}
633
634#[derive(Clone, Debug, Default, PartialEq)]
635pub struct BusInfo {
636 pub bus: Option<BusType>,
638 pub address: Option<DeviceAddress>,
640 pub address_stability: Option<DeviceAddressStability>,
642 #[doc(hidden)]
643 pub __source_breaking: fidl::marker::SourceBreaking,
644}
645
646impl fidl::Persistable for BusInfo {}
647
648#[derive(Clone, Debug, Default, PartialEq)]
650pub struct CompositeDriverInfo {
651 pub composite_name: Option<String>,
653 pub driver_info: Option<DriverInfo>,
655 #[doc(hidden)]
656 pub __source_breaking: fidl::marker::SourceBreaking,
657}
658
659impl fidl::Persistable for CompositeDriverInfo {}
660
661#[derive(Clone, Debug, Default, PartialEq)]
663pub struct CompositeDriverMatch {
664 pub composite_driver: Option<CompositeDriverInfo>,
666 pub parent_names: Option<Vec<String>>,
669 pub primary_parent_index: Option<u32>,
672 #[doc(hidden)]
673 pub __source_breaking: fidl::marker::SourceBreaking,
674}
675
676impl fidl::Persistable for CompositeDriverMatch {}
677
678#[derive(Clone, Debug, Default, PartialEq)]
680pub struct CompositeInfo {
681 pub spec: Option<CompositeNodeSpec>,
683 pub matched_driver: Option<CompositeDriverMatch>,
686 #[doc(hidden)]
687 pub __source_breaking: fidl::marker::SourceBreaking,
688}
689
690impl fidl::Persistable for CompositeInfo {}
691
692#[derive(Clone, Debug, Default, PartialEq)]
694pub struct CompositeNodeSpec {
695 pub name: Option<String>,
697 pub parents: Option<Vec<ParentSpec>>,
700 pub parents2: Option<Vec<ParentSpec2>>,
703 pub driver_host: Option<String>,
708 #[doc(hidden)]
709 pub __source_breaking: fidl::marker::SourceBreaking,
710}
711
712impl fidl::Persistable for CompositeNodeSpec {}
713
714#[derive(Clone, Debug, Default, PartialEq)]
716pub struct CompositeParent {
717 pub composite: Option<CompositeInfo>,
719 pub index: Option<u32>,
721 #[doc(hidden)]
722 pub __source_breaking: fidl::marker::SourceBreaking,
723}
724
725impl fidl::Persistable for CompositeParent {}
726
727#[derive(Clone, Debug, Default, PartialEq)]
729pub struct DeviceCategory {
730 pub category: Option<String>,
731 pub subcategory: Option<String>,
732 #[doc(hidden)]
733 pub __source_breaking: fidl::marker::SourceBreaking,
734}
735
736impl fidl::Persistable for DeviceCategory {}
737
738#[derive(Clone, Debug, Default, PartialEq)]
740pub struct DriverInfo {
741 pub url: Option<String>,
743 pub name: Option<String>,
746 pub colocate: Option<bool>,
748 pub package_type: Option<DriverPackageType>,
750 pub is_fallback: Option<bool>,
754 pub device_categories: Option<Vec<DeviceCategory>>,
756 pub bind_rules_bytecode: Option<Vec<u8>>,
760 pub driver_framework_version: Option<u8>,
764 pub is_disabled: Option<bool>,
766 #[doc(hidden)]
767 pub __source_breaking: fidl::marker::SourceBreaking,
768}
769
770impl fidl::Persistable for DriverInfo {}
771
772#[derive(Clone, Debug, Default, PartialEq)]
773pub struct NodeControllerRequestBindRequest {
774 pub force_rebind: Option<bool>,
777 pub driver_url_suffix: Option<String>,
781 #[doc(hidden)]
782 pub __source_breaking: fidl::marker::SourceBreaking,
783}
784
785impl fidl::Persistable for NodeControllerRequestBindRequest {}
786
787#[derive(Clone, Debug, Default, PartialEq)]
790pub struct NodeSymbol {
791 pub name: Option<String>,
793 pub address: Option<u64>,
795 pub module_name: Option<String>,
798 #[doc(hidden)]
799 pub __source_breaking: fidl::marker::SourceBreaking,
800}
801
802impl fidl::Persistable for NodeSymbol {}
803
804#[derive(Clone, Debug)]
805pub enum DeviceAddress {
806 IntValue(u8),
808 ArrayIntValue(Vec<u8>),
810 CharIntValue(String),
812 ArrayCharIntValue(Vec<String>),
814 StringValue(String),
816 #[doc(hidden)]
817 __SourceBreaking { unknown_ordinal: u64 },
818}
819
820#[macro_export]
822macro_rules! DeviceAddressUnknown {
823 () => {
824 _
825 };
826}
827
828impl PartialEq for DeviceAddress {
830 fn eq(&self, other: &Self) -> bool {
831 match (self, other) {
832 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
833 (Self::ArrayIntValue(x), Self::ArrayIntValue(y)) => *x == *y,
834 (Self::CharIntValue(x), Self::CharIntValue(y)) => *x == *y,
835 (Self::ArrayCharIntValue(x), Self::ArrayCharIntValue(y)) => *x == *y,
836 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
837 _ => false,
838 }
839 }
840}
841
842impl DeviceAddress {
843 #[inline]
844 pub fn ordinal(&self) -> u64 {
845 match *self {
846 Self::IntValue(_) => 1,
847 Self::ArrayIntValue(_) => 2,
848 Self::CharIntValue(_) => 3,
849 Self::ArrayCharIntValue(_) => 4,
850 Self::StringValue(_) => 5,
851 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
852 }
853 }
854
855 #[inline]
856 pub fn unknown_variant_for_testing() -> Self {
857 Self::__SourceBreaking { unknown_ordinal: 0 }
858 }
859
860 #[inline]
861 pub fn is_unknown(&self) -> bool {
862 match self {
863 Self::__SourceBreaking { .. } => true,
864 _ => false,
865 }
866 }
867}
868
869impl fidl::Persistable for DeviceAddress {}
870
871#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
872pub enum NodePropertyKey {
873 IntValue(u32),
875 StringValue(String),
876}
877
878impl NodePropertyKey {
879 #[inline]
880 pub fn ordinal(&self) -> u64 {
881 match *self {
882 Self::IntValue(_) => 1,
883 Self::StringValue(_) => 2,
884 }
885 }
886}
887
888impl fidl::Persistable for NodePropertyKey {}
889
890#[derive(Clone, Debug)]
891pub enum NodePropertyValue {
892 IntValue(u32),
893 StringValue(String),
894 BoolValue(bool),
895 EnumValue(String),
896 #[doc(hidden)]
897 __SourceBreaking {
898 unknown_ordinal: u64,
899 },
900}
901
902#[macro_export]
904macro_rules! NodePropertyValueUnknown {
905 () => {
906 _
907 };
908}
909
910impl PartialEq for NodePropertyValue {
912 fn eq(&self, other: &Self) -> bool {
913 match (self, other) {
914 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
915 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
916 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
917 (Self::EnumValue(x), Self::EnumValue(y)) => *x == *y,
918 _ => false,
919 }
920 }
921}
922
923impl NodePropertyValue {
924 #[inline]
925 pub fn ordinal(&self) -> u64 {
926 match *self {
927 Self::IntValue(_) => 1,
928 Self::StringValue(_) => 2,
929 Self::BoolValue(_) => 3,
930 Self::EnumValue(_) => 4,
931 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
932 }
933 }
934
935 #[inline]
936 pub fn unknown_variant_for_testing() -> Self {
937 Self::__SourceBreaking { unknown_ordinal: 0 }
938 }
939
940 #[inline]
941 pub fn is_unknown(&self) -> bool {
942 match self {
943 Self::__SourceBreaking { .. } => true,
944 _ => false,
945 }
946 }
947}
948
949impl fidl::Persistable for NodePropertyValue {}
950
951#[derive(Clone, Debug)]
952pub enum Offer {
953 ZirconTransport(fidl_fuchsia_component_decl__common::Offer),
954 DriverTransport(fidl_fuchsia_component_decl__common::Offer),
955 DictionaryOffer(fidl_fuchsia_component_decl__common::Offer),
958 #[doc(hidden)]
959 __SourceBreaking {
960 unknown_ordinal: u64,
961 },
962}
963
964#[macro_export]
966macro_rules! OfferUnknown {
967 () => {
968 _
969 };
970}
971
972impl PartialEq for Offer {
974 fn eq(&self, other: &Self) -> bool {
975 match (self, other) {
976 (Self::ZirconTransport(x), Self::ZirconTransport(y)) => *x == *y,
977 (Self::DriverTransport(x), Self::DriverTransport(y)) => *x == *y,
978 (Self::DictionaryOffer(x), Self::DictionaryOffer(y)) => *x == *y,
979 _ => false,
980 }
981 }
982}
983
984impl Offer {
985 #[inline]
986 pub fn ordinal(&self) -> u64 {
987 match *self {
988 Self::ZirconTransport(_) => 1,
989 Self::DriverTransport(_) => 2,
990 Self::DictionaryOffer(_) => 3,
991 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
992 }
993 }
994
995 #[inline]
996 pub fn unknown_variant_for_testing() -> Self {
997 Self::__SourceBreaking { unknown_ordinal: 0 }
998 }
999
1000 #[inline]
1001 pub fn is_unknown(&self) -> bool {
1002 match self {
1003 Self::__SourceBreaking { .. } => true,
1004 _ => false,
1005 }
1006 }
1007}
1008
1009impl fidl::Persistable for Offer {}
1010
1011pub mod composite_node_manager_ordinals {
1012 pub const ADD_SPEC: u64 = 0x524e353c8130cc74;
1013}
1014
1015pub mod driver_ordinals {
1016 pub const START: u64 = 0x27be00ae42aa60c2;
1017 pub const STOP: u64 = 0x4b96c67e29b3843d;
1018}
1019
1020pub mod node_ordinals {
1021 pub const ADD_CHILD: u64 = 0x77d10dff3c1ea129;
1022}
1023
1024pub mod node_controller_ordinals {
1025 pub const REMOVE: u64 = 0x54fa8b3dfe7bb341;
1026 pub const REQUEST_BIND: u64 = 0x41b954726b13508f;
1027 pub const ON_BIND: u64 = 0x51f4165bc5ea202a;
1028 pub const WAIT_FOR_DRIVER: u64 = 0x69f7106e47d81387;
1029}
1030
1031mod internal {
1032 use super::*;
1033 unsafe impl fidl::encoding::TypeMarker for BusType {
1034 type Owned = Self;
1035
1036 #[inline(always)]
1037 fn inline_align(_context: fidl::encoding::Context) -> usize {
1038 std::mem::align_of::<u32>()
1039 }
1040
1041 #[inline(always)]
1042 fn inline_size(_context: fidl::encoding::Context) -> usize {
1043 std::mem::size_of::<u32>()
1044 }
1045
1046 #[inline(always)]
1047 fn encode_is_copy() -> bool {
1048 false
1049 }
1050
1051 #[inline(always)]
1052 fn decode_is_copy() -> bool {
1053 false
1054 }
1055 }
1056
1057 impl fidl::encoding::ValueTypeMarker for BusType {
1058 type Borrowed<'a> = Self;
1059 #[inline(always)]
1060 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1061 *value
1062 }
1063 }
1064
1065 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
1066 #[inline]
1067 unsafe fn encode(
1068 self,
1069 encoder: &mut fidl::encoding::Encoder<'_, D>,
1070 offset: usize,
1071 _depth: fidl::encoding::Depth,
1072 ) -> fidl::Result<()> {
1073 encoder.debug_check_bounds::<Self>(offset);
1074 encoder.write_num(self.into_primitive(), offset);
1075 Ok(())
1076 }
1077 }
1078
1079 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
1080 #[inline(always)]
1081 fn new_empty() -> Self {
1082 Self::unknown()
1083 }
1084
1085 #[inline]
1086 unsafe fn decode(
1087 &mut self,
1088 decoder: &mut fidl::encoding::Decoder<'_, D>,
1089 offset: usize,
1090 _depth: fidl::encoding::Depth,
1091 ) -> fidl::Result<()> {
1092 decoder.debug_check_bounds::<Self>(offset);
1093 let prim = decoder.read_num::<u32>(offset);
1094
1095 *self = Self::from_primitive_allow_unknown(prim);
1096 Ok(())
1097 }
1098 }
1099 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
1100 type Owned = Self;
1101
1102 #[inline(always)]
1103 fn inline_align(_context: fidl::encoding::Context) -> usize {
1104 std::mem::align_of::<u32>()
1105 }
1106
1107 #[inline(always)]
1108 fn inline_size(_context: fidl::encoding::Context) -> usize {
1109 std::mem::size_of::<u32>()
1110 }
1111
1112 #[inline(always)]
1113 fn encode_is_copy() -> bool {
1114 false
1115 }
1116
1117 #[inline(always)]
1118 fn decode_is_copy() -> bool {
1119 false
1120 }
1121 }
1122
1123 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
1124 type Borrowed<'a> = Self;
1125 #[inline(always)]
1126 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1127 *value
1128 }
1129 }
1130
1131 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1132 for CompositeNodeSpecError
1133 {
1134 #[inline]
1135 unsafe fn encode(
1136 self,
1137 encoder: &mut fidl::encoding::Encoder<'_, D>,
1138 offset: usize,
1139 _depth: fidl::encoding::Depth,
1140 ) -> fidl::Result<()> {
1141 encoder.debug_check_bounds::<Self>(offset);
1142 encoder.write_num(self.into_primitive(), offset);
1143 Ok(())
1144 }
1145 }
1146
1147 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1148 for CompositeNodeSpecError
1149 {
1150 #[inline(always)]
1151 fn new_empty() -> Self {
1152 Self::unknown()
1153 }
1154
1155 #[inline]
1156 unsafe fn decode(
1157 &mut self,
1158 decoder: &mut fidl::encoding::Decoder<'_, D>,
1159 offset: usize,
1160 _depth: fidl::encoding::Depth,
1161 ) -> fidl::Result<()> {
1162 decoder.debug_check_bounds::<Self>(offset);
1163 let prim = decoder.read_num::<u32>(offset);
1164
1165 *self = Self::from_primitive_allow_unknown(prim);
1166 Ok(())
1167 }
1168 }
1169 unsafe impl fidl::encoding::TypeMarker for Condition {
1170 type Owned = Self;
1171
1172 #[inline(always)]
1173 fn inline_align(_context: fidl::encoding::Context) -> usize {
1174 std::mem::align_of::<u32>()
1175 }
1176
1177 #[inline(always)]
1178 fn inline_size(_context: fidl::encoding::Context) -> usize {
1179 std::mem::size_of::<u32>()
1180 }
1181
1182 #[inline(always)]
1183 fn encode_is_copy() -> bool {
1184 true
1185 }
1186
1187 #[inline(always)]
1188 fn decode_is_copy() -> bool {
1189 false
1190 }
1191 }
1192
1193 impl fidl::encoding::ValueTypeMarker for Condition {
1194 type Borrowed<'a> = Self;
1195 #[inline(always)]
1196 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1197 *value
1198 }
1199 }
1200
1201 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
1202 #[inline]
1203 unsafe fn encode(
1204 self,
1205 encoder: &mut fidl::encoding::Encoder<'_, D>,
1206 offset: usize,
1207 _depth: fidl::encoding::Depth,
1208 ) -> fidl::Result<()> {
1209 encoder.debug_check_bounds::<Self>(offset);
1210 encoder.write_num(self.into_primitive(), offset);
1211 Ok(())
1212 }
1213 }
1214
1215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
1216 #[inline(always)]
1217 fn new_empty() -> Self {
1218 Self::Unknown
1219 }
1220
1221 #[inline]
1222 unsafe fn decode(
1223 &mut self,
1224 decoder: &mut fidl::encoding::Decoder<'_, D>,
1225 offset: usize,
1226 _depth: fidl::encoding::Depth,
1227 ) -> fidl::Result<()> {
1228 decoder.debug_check_bounds::<Self>(offset);
1229 let prim = decoder.read_num::<u32>(offset);
1230
1231 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1232 Ok(())
1233 }
1234 }
1235 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
1236 type Owned = Self;
1237
1238 #[inline(always)]
1239 fn inline_align(_context: fidl::encoding::Context) -> usize {
1240 std::mem::align_of::<u32>()
1241 }
1242
1243 #[inline(always)]
1244 fn inline_size(_context: fidl::encoding::Context) -> usize {
1245 std::mem::size_of::<u32>()
1246 }
1247
1248 #[inline(always)]
1249 fn encode_is_copy() -> bool {
1250 false
1251 }
1252
1253 #[inline(always)]
1254 fn decode_is_copy() -> bool {
1255 false
1256 }
1257 }
1258
1259 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
1260 type Borrowed<'a> = Self;
1261 #[inline(always)]
1262 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1263 *value
1264 }
1265 }
1266
1267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1268 for DeviceAddressStability
1269 {
1270 #[inline]
1271 unsafe fn encode(
1272 self,
1273 encoder: &mut fidl::encoding::Encoder<'_, D>,
1274 offset: usize,
1275 _depth: fidl::encoding::Depth,
1276 ) -> fidl::Result<()> {
1277 encoder.debug_check_bounds::<Self>(offset);
1278 encoder.write_num(self.into_primitive(), offset);
1279 Ok(())
1280 }
1281 }
1282
1283 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1284 for DeviceAddressStability
1285 {
1286 #[inline(always)]
1287 fn new_empty() -> Self {
1288 Self::unknown()
1289 }
1290
1291 #[inline]
1292 unsafe fn decode(
1293 &mut self,
1294 decoder: &mut fidl::encoding::Decoder<'_, D>,
1295 offset: usize,
1296 _depth: fidl::encoding::Depth,
1297 ) -> fidl::Result<()> {
1298 decoder.debug_check_bounds::<Self>(offset);
1299 let prim = decoder.read_num::<u32>(offset);
1300
1301 *self = Self::from_primitive_allow_unknown(prim);
1302 Ok(())
1303 }
1304 }
1305 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
1306 type Owned = Self;
1307
1308 #[inline(always)]
1309 fn inline_align(_context: fidl::encoding::Context) -> usize {
1310 std::mem::align_of::<u8>()
1311 }
1312
1313 #[inline(always)]
1314 fn inline_size(_context: fidl::encoding::Context) -> usize {
1315 std::mem::size_of::<u8>()
1316 }
1317
1318 #[inline(always)]
1319 fn encode_is_copy() -> bool {
1320 false
1321 }
1322
1323 #[inline(always)]
1324 fn decode_is_copy() -> bool {
1325 false
1326 }
1327 }
1328
1329 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
1330 type Borrowed<'a> = Self;
1331 #[inline(always)]
1332 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1333 *value
1334 }
1335 }
1336
1337 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1338 for DriverPackageType
1339 {
1340 #[inline]
1341 unsafe fn encode(
1342 self,
1343 encoder: &mut fidl::encoding::Encoder<'_, D>,
1344 offset: usize,
1345 _depth: fidl::encoding::Depth,
1346 ) -> fidl::Result<()> {
1347 encoder.debug_check_bounds::<Self>(offset);
1348 encoder.write_num(self.into_primitive(), offset);
1349 Ok(())
1350 }
1351 }
1352
1353 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
1354 #[inline(always)]
1355 fn new_empty() -> Self {
1356 Self::unknown()
1357 }
1358
1359 #[inline]
1360 unsafe fn decode(
1361 &mut self,
1362 decoder: &mut fidl::encoding::Decoder<'_, D>,
1363 offset: usize,
1364 _depth: fidl::encoding::Depth,
1365 ) -> fidl::Result<()> {
1366 decoder.debug_check_bounds::<Self>(offset);
1367 let prim = decoder.read_num::<u8>(offset);
1368
1369 *self = Self::from_primitive_allow_unknown(prim);
1370 Ok(())
1371 }
1372 }
1373 unsafe impl fidl::encoding::TypeMarker for NodeError {
1374 type Owned = Self;
1375
1376 #[inline(always)]
1377 fn inline_align(_context: fidl::encoding::Context) -> usize {
1378 std::mem::align_of::<u32>()
1379 }
1380
1381 #[inline(always)]
1382 fn inline_size(_context: fidl::encoding::Context) -> usize {
1383 std::mem::size_of::<u32>()
1384 }
1385
1386 #[inline(always)]
1387 fn encode_is_copy() -> bool {
1388 false
1389 }
1390
1391 #[inline(always)]
1392 fn decode_is_copy() -> bool {
1393 false
1394 }
1395 }
1396
1397 impl fidl::encoding::ValueTypeMarker for NodeError {
1398 type Borrowed<'a> = Self;
1399 #[inline(always)]
1400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1401 *value
1402 }
1403 }
1404
1405 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
1406 #[inline]
1407 unsafe fn encode(
1408 self,
1409 encoder: &mut fidl::encoding::Encoder<'_, D>,
1410 offset: usize,
1411 _depth: fidl::encoding::Depth,
1412 ) -> fidl::Result<()> {
1413 encoder.debug_check_bounds::<Self>(offset);
1414 encoder.write_num(self.into_primitive(), offset);
1415 Ok(())
1416 }
1417 }
1418
1419 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
1420 #[inline(always)]
1421 fn new_empty() -> Self {
1422 Self::unknown()
1423 }
1424
1425 #[inline]
1426 unsafe fn decode(
1427 &mut self,
1428 decoder: &mut fidl::encoding::Decoder<'_, D>,
1429 offset: usize,
1430 _depth: fidl::encoding::Depth,
1431 ) -> fidl::Result<()> {
1432 decoder.debug_check_bounds::<Self>(offset);
1433 let prim = decoder.read_num::<u32>(offset);
1434
1435 *self = Self::from_primitive_allow_unknown(prim);
1436 Ok(())
1437 }
1438 }
1439
1440 impl fidl::encoding::ValueTypeMarker for BindRule {
1441 type Borrowed<'a> = &'a Self;
1442 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1443 value
1444 }
1445 }
1446
1447 unsafe impl fidl::encoding::TypeMarker for BindRule {
1448 type Owned = Self;
1449
1450 #[inline(always)]
1451 fn inline_align(_context: fidl::encoding::Context) -> usize {
1452 8
1453 }
1454
1455 #[inline(always)]
1456 fn inline_size(_context: fidl::encoding::Context) -> usize {
1457 40
1458 }
1459 }
1460
1461 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule, D> for &BindRule {
1462 #[inline]
1463 unsafe fn encode(
1464 self,
1465 encoder: &mut fidl::encoding::Encoder<'_, D>,
1466 offset: usize,
1467 _depth: fidl::encoding::Depth,
1468 ) -> fidl::Result<()> {
1469 encoder.debug_check_bounds::<BindRule>(offset);
1470 fidl::encoding::Encode::<BindRule, D>::encode(
1472 (
1473 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1474 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1475 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1476 ),
1477 encoder, offset, _depth
1478 )
1479 }
1480 }
1481 unsafe impl<
1482 D: fidl::encoding::ResourceDialect,
1483 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1484 T1: fidl::encoding::Encode<Condition, D>,
1485 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1486 > fidl::encoding::Encode<BindRule, D> for (T0, T1, T2)
1487 {
1488 #[inline]
1489 unsafe fn encode(
1490 self,
1491 encoder: &mut fidl::encoding::Encoder<'_, D>,
1492 offset: usize,
1493 depth: fidl::encoding::Depth,
1494 ) -> fidl::Result<()> {
1495 encoder.debug_check_bounds::<BindRule>(offset);
1496 unsafe {
1499 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1500 (ptr as *mut u64).write_unaligned(0);
1501 }
1502 self.0.encode(encoder, offset + 0, depth)?;
1504 self.1.encode(encoder, offset + 16, depth)?;
1505 self.2.encode(encoder, offset + 24, depth)?;
1506 Ok(())
1507 }
1508 }
1509
1510 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule {
1511 #[inline(always)]
1512 fn new_empty() -> Self {
1513 Self {
1514 key: fidl::new_empty!(NodePropertyKey, D),
1515 condition: fidl::new_empty!(Condition, D),
1516 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1517 }
1518 }
1519
1520 #[inline]
1521 unsafe fn decode(
1522 &mut self,
1523 decoder: &mut fidl::encoding::Decoder<'_, D>,
1524 offset: usize,
1525 _depth: fidl::encoding::Depth,
1526 ) -> fidl::Result<()> {
1527 decoder.debug_check_bounds::<Self>(offset);
1528 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1530 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1531 let mask = 0xffffffff00000000u64;
1532 let maskedval = padval & mask;
1533 if maskedval != 0 {
1534 return Err(fidl::Error::NonZeroPadding {
1535 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1536 });
1537 }
1538 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1539 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1540 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1541 Ok(())
1542 }
1543 }
1544
1545 impl fidl::encoding::ValueTypeMarker for BindRule2 {
1546 type Borrowed<'a> = &'a Self;
1547 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1548 value
1549 }
1550 }
1551
1552 unsafe impl fidl::encoding::TypeMarker for BindRule2 {
1553 type Owned = Self;
1554
1555 #[inline(always)]
1556 fn inline_align(_context: fidl::encoding::Context) -> usize {
1557 8
1558 }
1559
1560 #[inline(always)]
1561 fn inline_size(_context: fidl::encoding::Context) -> usize {
1562 40
1563 }
1564 }
1565
1566 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule2, D>
1567 for &BindRule2
1568 {
1569 #[inline]
1570 unsafe fn encode(
1571 self,
1572 encoder: &mut fidl::encoding::Encoder<'_, D>,
1573 offset: usize,
1574 _depth: fidl::encoding::Depth,
1575 ) -> fidl::Result<()> {
1576 encoder.debug_check_bounds::<BindRule2>(offset);
1577 fidl::encoding::Encode::<BindRule2, D>::encode(
1579 (
1580 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1581 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1582 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1583 ),
1584 encoder, offset, _depth
1585 )
1586 }
1587 }
1588 unsafe impl<
1589 D: fidl::encoding::ResourceDialect,
1590 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1591 T1: fidl::encoding::Encode<Condition, D>,
1592 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1593 > fidl::encoding::Encode<BindRule2, D> for (T0, T1, T2)
1594 {
1595 #[inline]
1596 unsafe fn encode(
1597 self,
1598 encoder: &mut fidl::encoding::Encoder<'_, D>,
1599 offset: usize,
1600 depth: fidl::encoding::Depth,
1601 ) -> fidl::Result<()> {
1602 encoder.debug_check_bounds::<BindRule2>(offset);
1603 unsafe {
1606 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1607 (ptr as *mut u64).write_unaligned(0);
1608 }
1609 self.0.encode(encoder, offset + 0, depth)?;
1611 self.1.encode(encoder, offset + 16, depth)?;
1612 self.2.encode(encoder, offset + 24, depth)?;
1613 Ok(())
1614 }
1615 }
1616
1617 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule2 {
1618 #[inline(always)]
1619 fn new_empty() -> Self {
1620 Self {
1621 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1622 condition: fidl::new_empty!(Condition, D),
1623 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1624 }
1625 }
1626
1627 #[inline]
1628 unsafe fn decode(
1629 &mut self,
1630 decoder: &mut fidl::encoding::Decoder<'_, D>,
1631 offset: usize,
1632 _depth: fidl::encoding::Depth,
1633 ) -> fidl::Result<()> {
1634 decoder.debug_check_bounds::<Self>(offset);
1635 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1637 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1638 let mask = 0xffffffff00000000u64;
1639 let maskedval = padval & mask;
1640 if maskedval != 0 {
1641 return Err(fidl::Error::NonZeroPadding {
1642 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1643 });
1644 }
1645 fidl::decode!(
1646 fidl::encoding::BoundedString<256>,
1647 D,
1648 &mut self.key,
1649 decoder,
1650 offset + 0,
1651 _depth
1652 )?;
1653 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1654 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1655 Ok(())
1656 }
1657 }
1658
1659 impl fidl::encoding::ValueTypeMarker for NodeProperty {
1660 type Borrowed<'a> = &'a Self;
1661 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1662 value
1663 }
1664 }
1665
1666 unsafe impl fidl::encoding::TypeMarker for NodeProperty {
1667 type Owned = Self;
1668
1669 #[inline(always)]
1670 fn inline_align(_context: fidl::encoding::Context) -> usize {
1671 8
1672 }
1673
1674 #[inline(always)]
1675 fn inline_size(_context: fidl::encoding::Context) -> usize {
1676 32
1677 }
1678 }
1679
1680 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty, D>
1681 for &NodeProperty
1682 {
1683 #[inline]
1684 unsafe fn encode(
1685 self,
1686 encoder: &mut fidl::encoding::Encoder<'_, D>,
1687 offset: usize,
1688 _depth: fidl::encoding::Depth,
1689 ) -> fidl::Result<()> {
1690 encoder.debug_check_bounds::<NodeProperty>(offset);
1691 fidl::encoding::Encode::<NodeProperty, D>::encode(
1693 (
1694 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1695 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1696 ),
1697 encoder,
1698 offset,
1699 _depth,
1700 )
1701 }
1702 }
1703 unsafe impl<
1704 D: fidl::encoding::ResourceDialect,
1705 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1706 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1707 > fidl::encoding::Encode<NodeProperty, D> for (T0, T1)
1708 {
1709 #[inline]
1710 unsafe fn encode(
1711 self,
1712 encoder: &mut fidl::encoding::Encoder<'_, D>,
1713 offset: usize,
1714 depth: fidl::encoding::Depth,
1715 ) -> fidl::Result<()> {
1716 encoder.debug_check_bounds::<NodeProperty>(offset);
1717 self.0.encode(encoder, offset + 0, depth)?;
1721 self.1.encode(encoder, offset + 16, depth)?;
1722 Ok(())
1723 }
1724 }
1725
1726 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty {
1727 #[inline(always)]
1728 fn new_empty() -> Self {
1729 Self {
1730 key: fidl::new_empty!(NodePropertyKey, D),
1731 value: fidl::new_empty!(NodePropertyValue, D),
1732 }
1733 }
1734
1735 #[inline]
1736 unsafe fn decode(
1737 &mut self,
1738 decoder: &mut fidl::encoding::Decoder<'_, D>,
1739 offset: usize,
1740 _depth: fidl::encoding::Depth,
1741 ) -> fidl::Result<()> {
1742 decoder.debug_check_bounds::<Self>(offset);
1743 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1745 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1746 Ok(())
1747 }
1748 }
1749
1750 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
1751 type Borrowed<'a> = &'a Self;
1752 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1753 value
1754 }
1755 }
1756
1757 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
1758 type Owned = Self;
1759
1760 #[inline(always)]
1761 fn inline_align(_context: fidl::encoding::Context) -> usize {
1762 8
1763 }
1764
1765 #[inline(always)]
1766 fn inline_size(_context: fidl::encoding::Context) -> usize {
1767 32
1768 }
1769 }
1770
1771 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
1772 for &NodeProperty2
1773 {
1774 #[inline]
1775 unsafe fn encode(
1776 self,
1777 encoder: &mut fidl::encoding::Encoder<'_, D>,
1778 offset: usize,
1779 _depth: fidl::encoding::Depth,
1780 ) -> fidl::Result<()> {
1781 encoder.debug_check_bounds::<NodeProperty2>(offset);
1782 fidl::encoding::Encode::<NodeProperty2, D>::encode(
1784 (
1785 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
1786 &self.key,
1787 ),
1788 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1789 ),
1790 encoder,
1791 offset,
1792 _depth,
1793 )
1794 }
1795 }
1796 unsafe impl<
1797 D: fidl::encoding::ResourceDialect,
1798 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1799 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1800 > fidl::encoding::Encode<NodeProperty2, D> for (T0, T1)
1801 {
1802 #[inline]
1803 unsafe fn encode(
1804 self,
1805 encoder: &mut fidl::encoding::Encoder<'_, D>,
1806 offset: usize,
1807 depth: fidl::encoding::Depth,
1808 ) -> fidl::Result<()> {
1809 encoder.debug_check_bounds::<NodeProperty2>(offset);
1810 self.0.encode(encoder, offset + 0, depth)?;
1814 self.1.encode(encoder, offset + 16, depth)?;
1815 Ok(())
1816 }
1817 }
1818
1819 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty2 {
1820 #[inline(always)]
1821 fn new_empty() -> Self {
1822 Self {
1823 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1824 value: fidl::new_empty!(NodePropertyValue, D),
1825 }
1826 }
1827
1828 #[inline]
1829 unsafe fn decode(
1830 &mut self,
1831 decoder: &mut fidl::encoding::Decoder<'_, D>,
1832 offset: usize,
1833 _depth: fidl::encoding::Depth,
1834 ) -> fidl::Result<()> {
1835 decoder.debug_check_bounds::<Self>(offset);
1836 fidl::decode!(
1838 fidl::encoding::BoundedString<256>,
1839 D,
1840 &mut self.key,
1841 decoder,
1842 offset + 0,
1843 _depth
1844 )?;
1845 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1846 Ok(())
1847 }
1848 }
1849
1850 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry {
1851 type Borrowed<'a> = &'a Self;
1852 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1853 value
1854 }
1855 }
1856
1857 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry {
1858 type Owned = Self;
1859
1860 #[inline(always)]
1861 fn inline_align(_context: fidl::encoding::Context) -> usize {
1862 8
1863 }
1864
1865 #[inline(always)]
1866 fn inline_size(_context: fidl::encoding::Context) -> usize {
1867 32
1868 }
1869 }
1870
1871 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry, D>
1872 for &NodePropertyEntry
1873 {
1874 #[inline]
1875 unsafe fn encode(
1876 self,
1877 encoder: &mut fidl::encoding::Encoder<'_, D>,
1878 offset: usize,
1879 _depth: fidl::encoding::Depth,
1880 ) -> fidl::Result<()> {
1881 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1882 fidl::encoding::Encode::<NodePropertyEntry, D>::encode(
1884 (
1885 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1886 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
1887 ),
1888 encoder, offset, _depth
1889 )
1890 }
1891 }
1892 unsafe impl<
1893 D: fidl::encoding::ResourceDialect,
1894 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
1895 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
1896 > fidl::encoding::Encode<NodePropertyEntry, D> for (T0, T1)
1897 {
1898 #[inline]
1899 unsafe fn encode(
1900 self,
1901 encoder: &mut fidl::encoding::Encoder<'_, D>,
1902 offset: usize,
1903 depth: fidl::encoding::Depth,
1904 ) -> fidl::Result<()> {
1905 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1906 self.0.encode(encoder, offset + 0, depth)?;
1910 self.1.encode(encoder, offset + 16, depth)?;
1911 Ok(())
1912 }
1913 }
1914
1915 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry {
1916 #[inline(always)]
1917 fn new_empty() -> Self {
1918 Self {
1919 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
1920 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
1921 }
1922 }
1923
1924 #[inline]
1925 unsafe fn decode(
1926 &mut self,
1927 decoder: &mut fidl::encoding::Decoder<'_, D>,
1928 offset: usize,
1929 _depth: fidl::encoding::Depth,
1930 ) -> fidl::Result<()> {
1931 decoder.debug_check_bounds::<Self>(offset);
1932 fidl::decode!(
1934 fidl::encoding::BoundedString<128>,
1935 D,
1936 &mut self.name,
1937 decoder,
1938 offset + 0,
1939 _depth
1940 )?;
1941 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
1942 Ok(())
1943 }
1944 }
1945
1946 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
1947 type Borrowed<'a> = &'a Self;
1948 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1949 value
1950 }
1951 }
1952
1953 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
1954 type Owned = Self;
1955
1956 #[inline(always)]
1957 fn inline_align(_context: fidl::encoding::Context) -> usize {
1958 8
1959 }
1960
1961 #[inline(always)]
1962 fn inline_size(_context: fidl::encoding::Context) -> usize {
1963 32
1964 }
1965 }
1966
1967 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
1968 for &NodePropertyEntry2
1969 {
1970 #[inline]
1971 unsafe fn encode(
1972 self,
1973 encoder: &mut fidl::encoding::Encoder<'_, D>,
1974 offset: usize,
1975 _depth: fidl::encoding::Depth,
1976 ) -> fidl::Result<()> {
1977 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
1978 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
1980 (
1981 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1982 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
1983 ),
1984 encoder, offset, _depth
1985 )
1986 }
1987 }
1988 unsafe impl<
1989 D: fidl::encoding::ResourceDialect,
1990 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
1991 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
1992 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
1993 {
1994 #[inline]
1995 unsafe fn encode(
1996 self,
1997 encoder: &mut fidl::encoding::Encoder<'_, D>,
1998 offset: usize,
1999 depth: fidl::encoding::Depth,
2000 ) -> fidl::Result<()> {
2001 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2002 self.0.encode(encoder, offset + 0, depth)?;
2006 self.1.encode(encoder, offset + 16, depth)?;
2007 Ok(())
2008 }
2009 }
2010
2011 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
2012 #[inline(always)]
2013 fn new_empty() -> Self {
2014 Self {
2015 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2016 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2017 }
2018 }
2019
2020 #[inline]
2021 unsafe fn decode(
2022 &mut self,
2023 decoder: &mut fidl::encoding::Decoder<'_, D>,
2024 offset: usize,
2025 _depth: fidl::encoding::Depth,
2026 ) -> fidl::Result<()> {
2027 decoder.debug_check_bounds::<Self>(offset);
2028 fidl::decode!(
2030 fidl::encoding::BoundedString<128>,
2031 D,
2032 &mut self.name,
2033 decoder,
2034 offset + 0,
2035 _depth
2036 )?;
2037 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2038 Ok(())
2039 }
2040 }
2041
2042 impl fidl::encoding::ValueTypeMarker for ParentSpec {
2043 type Borrowed<'a> = &'a Self;
2044 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2045 value
2046 }
2047 }
2048
2049 unsafe impl fidl::encoding::TypeMarker for ParentSpec {
2050 type Owned = Self;
2051
2052 #[inline(always)]
2053 fn inline_align(_context: fidl::encoding::Context) -> usize {
2054 8
2055 }
2056
2057 #[inline(always)]
2058 fn inline_size(_context: fidl::encoding::Context) -> usize {
2059 32
2060 }
2061 }
2062
2063 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec, D>
2064 for &ParentSpec
2065 {
2066 #[inline]
2067 unsafe fn encode(
2068 self,
2069 encoder: &mut fidl::encoding::Encoder<'_, D>,
2070 offset: usize,
2071 _depth: fidl::encoding::Depth,
2072 ) -> fidl::Result<()> {
2073 encoder.debug_check_bounds::<ParentSpec>(offset);
2074 fidl::encoding::Encode::<ParentSpec, D>::encode(
2076 (
2077 <fidl::encoding::Vector<BindRule, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2078 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2079 ),
2080 encoder, offset, _depth
2081 )
2082 }
2083 }
2084 unsafe impl<
2085 D: fidl::encoding::ResourceDialect,
2086 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule, 64>, D>,
2087 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
2088 > fidl::encoding::Encode<ParentSpec, D> for (T0, T1)
2089 {
2090 #[inline]
2091 unsafe fn encode(
2092 self,
2093 encoder: &mut fidl::encoding::Encoder<'_, D>,
2094 offset: usize,
2095 depth: fidl::encoding::Depth,
2096 ) -> fidl::Result<()> {
2097 encoder.debug_check_bounds::<ParentSpec>(offset);
2098 self.0.encode(encoder, offset + 0, depth)?;
2102 self.1.encode(encoder, offset + 16, depth)?;
2103 Ok(())
2104 }
2105 }
2106
2107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec {
2108 #[inline(always)]
2109 fn new_empty() -> Self {
2110 Self {
2111 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule, 64>, D),
2112 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
2113 }
2114 }
2115
2116 #[inline]
2117 unsafe fn decode(
2118 &mut self,
2119 decoder: &mut fidl::encoding::Decoder<'_, D>,
2120 offset: usize,
2121 _depth: fidl::encoding::Depth,
2122 ) -> fidl::Result<()> {
2123 decoder.debug_check_bounds::<Self>(offset);
2124 fidl::decode!(fidl::encoding::Vector<BindRule, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2126 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2127 Ok(())
2128 }
2129 }
2130
2131 impl fidl::encoding::ValueTypeMarker for ParentSpec2 {
2132 type Borrowed<'a> = &'a Self;
2133 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2134 value
2135 }
2136 }
2137
2138 unsafe impl fidl::encoding::TypeMarker for ParentSpec2 {
2139 type Owned = Self;
2140
2141 #[inline(always)]
2142 fn inline_align(_context: fidl::encoding::Context) -> usize {
2143 8
2144 }
2145
2146 #[inline(always)]
2147 fn inline_size(_context: fidl::encoding::Context) -> usize {
2148 32
2149 }
2150 }
2151
2152 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec2, D>
2153 for &ParentSpec2
2154 {
2155 #[inline]
2156 unsafe fn encode(
2157 self,
2158 encoder: &mut fidl::encoding::Encoder<'_, D>,
2159 offset: usize,
2160 _depth: fidl::encoding::Depth,
2161 ) -> fidl::Result<()> {
2162 encoder.debug_check_bounds::<ParentSpec2>(offset);
2163 fidl::encoding::Encode::<ParentSpec2, D>::encode(
2165 (
2166 <fidl::encoding::Vector<BindRule2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2167 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2168 ),
2169 encoder, offset, _depth
2170 )
2171 }
2172 }
2173 unsafe impl<
2174 D: fidl::encoding::ResourceDialect,
2175 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule2, 64>, D>,
2176 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2177 > fidl::encoding::Encode<ParentSpec2, D> for (T0, T1)
2178 {
2179 #[inline]
2180 unsafe fn encode(
2181 self,
2182 encoder: &mut fidl::encoding::Encoder<'_, D>,
2183 offset: usize,
2184 depth: fidl::encoding::Depth,
2185 ) -> fidl::Result<()> {
2186 encoder.debug_check_bounds::<ParentSpec2>(offset);
2187 self.0.encode(encoder, offset + 0, depth)?;
2191 self.1.encode(encoder, offset + 16, depth)?;
2192 Ok(())
2193 }
2194 }
2195
2196 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec2 {
2197 #[inline(always)]
2198 fn new_empty() -> Self {
2199 Self {
2200 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule2, 64>, D),
2201 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2202 }
2203 }
2204
2205 #[inline]
2206 unsafe fn decode(
2207 &mut self,
2208 decoder: &mut fidl::encoding::Decoder<'_, D>,
2209 offset: usize,
2210 _depth: fidl::encoding::Depth,
2211 ) -> fidl::Result<()> {
2212 decoder.debug_check_bounds::<Self>(offset);
2213 fidl::decode!(fidl::encoding::Vector<BindRule2, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2215 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2216 Ok(())
2217 }
2218 }
2219
2220 impl BusInfo {
2221 #[inline(always)]
2222 fn max_ordinal_present(&self) -> u64 {
2223 if let Some(_) = self.address_stability {
2224 return 3;
2225 }
2226 if let Some(_) = self.address {
2227 return 2;
2228 }
2229 if let Some(_) = self.bus {
2230 return 1;
2231 }
2232 0
2233 }
2234 }
2235
2236 impl fidl::encoding::ValueTypeMarker for BusInfo {
2237 type Borrowed<'a> = &'a Self;
2238 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2239 value
2240 }
2241 }
2242
2243 unsafe impl fidl::encoding::TypeMarker for BusInfo {
2244 type Owned = Self;
2245
2246 #[inline(always)]
2247 fn inline_align(_context: fidl::encoding::Context) -> usize {
2248 8
2249 }
2250
2251 #[inline(always)]
2252 fn inline_size(_context: fidl::encoding::Context) -> usize {
2253 16
2254 }
2255 }
2256
2257 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
2258 unsafe fn encode(
2259 self,
2260 encoder: &mut fidl::encoding::Encoder<'_, D>,
2261 offset: usize,
2262 mut depth: fidl::encoding::Depth,
2263 ) -> fidl::Result<()> {
2264 encoder.debug_check_bounds::<BusInfo>(offset);
2265 let max_ordinal: u64 = self.max_ordinal_present();
2267 encoder.write_num(max_ordinal, offset);
2268 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2269 if max_ordinal == 0 {
2271 return Ok(());
2272 }
2273 depth.increment()?;
2274 let envelope_size = 8;
2275 let bytes_len = max_ordinal as usize * envelope_size;
2276 #[allow(unused_variables)]
2277 let offset = encoder.out_of_line_offset(bytes_len);
2278 let mut _prev_end_offset: usize = 0;
2279 if 1 > max_ordinal {
2280 return Ok(());
2281 }
2282
2283 let cur_offset: usize = (1 - 1) * envelope_size;
2286
2287 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2289
2290 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
2295 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
2296 encoder,
2297 offset + cur_offset,
2298 depth,
2299 )?;
2300
2301 _prev_end_offset = cur_offset + envelope_size;
2302 if 2 > max_ordinal {
2303 return Ok(());
2304 }
2305
2306 let cur_offset: usize = (2 - 1) * envelope_size;
2309
2310 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2312
2313 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
2318 self.address
2319 .as_ref()
2320 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
2321 encoder,
2322 offset + cur_offset,
2323 depth,
2324 )?;
2325
2326 _prev_end_offset = cur_offset + envelope_size;
2327 if 3 > max_ordinal {
2328 return Ok(());
2329 }
2330
2331 let cur_offset: usize = (3 - 1) * envelope_size;
2334
2335 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2337
2338 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
2343 self.address_stability
2344 .as_ref()
2345 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
2346 encoder,
2347 offset + cur_offset,
2348 depth,
2349 )?;
2350
2351 _prev_end_offset = cur_offset + envelope_size;
2352
2353 Ok(())
2354 }
2355 }
2356
2357 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
2358 #[inline(always)]
2359 fn new_empty() -> Self {
2360 Self::default()
2361 }
2362
2363 unsafe fn decode(
2364 &mut self,
2365 decoder: &mut fidl::encoding::Decoder<'_, D>,
2366 offset: usize,
2367 mut depth: fidl::encoding::Depth,
2368 ) -> fidl::Result<()> {
2369 decoder.debug_check_bounds::<Self>(offset);
2370 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2371 None => return Err(fidl::Error::NotNullable),
2372 Some(len) => len,
2373 };
2374 if len == 0 {
2376 return Ok(());
2377 };
2378 depth.increment()?;
2379 let envelope_size = 8;
2380 let bytes_len = len * envelope_size;
2381 let offset = decoder.out_of_line_offset(bytes_len)?;
2382 let mut _next_ordinal_to_read = 0;
2384 let mut next_offset = offset;
2385 let end_offset = offset + bytes_len;
2386 _next_ordinal_to_read += 1;
2387 if next_offset >= end_offset {
2388 return Ok(());
2389 }
2390
2391 while _next_ordinal_to_read < 1 {
2393 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2394 _next_ordinal_to_read += 1;
2395 next_offset += envelope_size;
2396 }
2397
2398 let next_out_of_line = decoder.next_out_of_line();
2399 let handles_before = decoder.remaining_handles();
2400 if let Some((inlined, num_bytes, num_handles)) =
2401 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2402 {
2403 let member_inline_size =
2404 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2405 if inlined != (member_inline_size <= 4) {
2406 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2407 }
2408 let inner_offset;
2409 let mut inner_depth = depth.clone();
2410 if inlined {
2411 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2412 inner_offset = next_offset;
2413 } else {
2414 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2415 inner_depth.increment()?;
2416 }
2417 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
2418 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
2419 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2420 {
2421 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2422 }
2423 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2424 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2425 }
2426 }
2427
2428 next_offset += envelope_size;
2429 _next_ordinal_to_read += 1;
2430 if next_offset >= end_offset {
2431 return Ok(());
2432 }
2433
2434 while _next_ordinal_to_read < 2 {
2436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2437 _next_ordinal_to_read += 1;
2438 next_offset += envelope_size;
2439 }
2440
2441 let next_out_of_line = decoder.next_out_of_line();
2442 let handles_before = decoder.remaining_handles();
2443 if let Some((inlined, num_bytes, num_handles)) =
2444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2445 {
2446 let member_inline_size =
2447 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2448 if inlined != (member_inline_size <= 4) {
2449 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2450 }
2451 let inner_offset;
2452 let mut inner_depth = depth.clone();
2453 if inlined {
2454 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2455 inner_offset = next_offset;
2456 } else {
2457 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2458 inner_depth.increment()?;
2459 }
2460 let val_ref =
2461 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
2462 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
2463 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2464 {
2465 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2466 }
2467 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2468 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2469 }
2470 }
2471
2472 next_offset += envelope_size;
2473 _next_ordinal_to_read += 1;
2474 if next_offset >= end_offset {
2475 return Ok(());
2476 }
2477
2478 while _next_ordinal_to_read < 3 {
2480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2481 _next_ordinal_to_read += 1;
2482 next_offset += envelope_size;
2483 }
2484
2485 let next_out_of_line = decoder.next_out_of_line();
2486 let handles_before = decoder.remaining_handles();
2487 if let Some((inlined, num_bytes, num_handles)) =
2488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2489 {
2490 let member_inline_size =
2491 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
2492 decoder.context,
2493 );
2494 if inlined != (member_inline_size <= 4) {
2495 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2496 }
2497 let inner_offset;
2498 let mut inner_depth = depth.clone();
2499 if inlined {
2500 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2501 inner_offset = next_offset;
2502 } else {
2503 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2504 inner_depth.increment()?;
2505 }
2506 let val_ref = self
2507 .address_stability
2508 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
2509 fidl::decode!(
2510 DeviceAddressStability,
2511 D,
2512 val_ref,
2513 decoder,
2514 inner_offset,
2515 inner_depth
2516 )?;
2517 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2518 {
2519 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2520 }
2521 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2522 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2523 }
2524 }
2525
2526 next_offset += envelope_size;
2527
2528 while next_offset < end_offset {
2530 _next_ordinal_to_read += 1;
2531 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2532 next_offset += envelope_size;
2533 }
2534
2535 Ok(())
2536 }
2537 }
2538
2539 impl CompositeDriverInfo {
2540 #[inline(always)]
2541 fn max_ordinal_present(&self) -> u64 {
2542 if let Some(_) = self.driver_info {
2543 return 2;
2544 }
2545 if let Some(_) = self.composite_name {
2546 return 1;
2547 }
2548 0
2549 }
2550 }
2551
2552 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
2553 type Borrowed<'a> = &'a Self;
2554 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2555 value
2556 }
2557 }
2558
2559 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
2560 type Owned = Self;
2561
2562 #[inline(always)]
2563 fn inline_align(_context: fidl::encoding::Context) -> usize {
2564 8
2565 }
2566
2567 #[inline(always)]
2568 fn inline_size(_context: fidl::encoding::Context) -> usize {
2569 16
2570 }
2571 }
2572
2573 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
2574 for &CompositeDriverInfo
2575 {
2576 unsafe fn encode(
2577 self,
2578 encoder: &mut fidl::encoding::Encoder<'_, D>,
2579 offset: usize,
2580 mut depth: fidl::encoding::Depth,
2581 ) -> fidl::Result<()> {
2582 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
2583 let max_ordinal: u64 = self.max_ordinal_present();
2585 encoder.write_num(max_ordinal, offset);
2586 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2587 if max_ordinal == 0 {
2589 return Ok(());
2590 }
2591 depth.increment()?;
2592 let envelope_size = 8;
2593 let bytes_len = max_ordinal as usize * envelope_size;
2594 #[allow(unused_variables)]
2595 let offset = encoder.out_of_line_offset(bytes_len);
2596 let mut _prev_end_offset: usize = 0;
2597 if 1 > max_ordinal {
2598 return Ok(());
2599 }
2600
2601 let cur_offset: usize = (1 - 1) * envelope_size;
2604
2605 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2607
2608 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2613 self.composite_name.as_ref().map(
2614 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2615 ),
2616 encoder,
2617 offset + cur_offset,
2618 depth,
2619 )?;
2620
2621 _prev_end_offset = cur_offset + envelope_size;
2622 if 2 > max_ordinal {
2623 return Ok(());
2624 }
2625
2626 let cur_offset: usize = (2 - 1) * envelope_size;
2629
2630 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2632
2633 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
2638 self.driver_info
2639 .as_ref()
2640 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
2641 encoder,
2642 offset + cur_offset,
2643 depth,
2644 )?;
2645
2646 _prev_end_offset = cur_offset + envelope_size;
2647
2648 Ok(())
2649 }
2650 }
2651
2652 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
2653 #[inline(always)]
2654 fn new_empty() -> Self {
2655 Self::default()
2656 }
2657
2658 unsafe fn decode(
2659 &mut self,
2660 decoder: &mut fidl::encoding::Decoder<'_, D>,
2661 offset: usize,
2662 mut depth: fidl::encoding::Depth,
2663 ) -> fidl::Result<()> {
2664 decoder.debug_check_bounds::<Self>(offset);
2665 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2666 None => return Err(fidl::Error::NotNullable),
2667 Some(len) => len,
2668 };
2669 if len == 0 {
2671 return Ok(());
2672 };
2673 depth.increment()?;
2674 let envelope_size = 8;
2675 let bytes_len = len * envelope_size;
2676 let offset = decoder.out_of_line_offset(bytes_len)?;
2677 let mut _next_ordinal_to_read = 0;
2679 let mut next_offset = offset;
2680 let end_offset = offset + bytes_len;
2681 _next_ordinal_to_read += 1;
2682 if next_offset >= end_offset {
2683 return Ok(());
2684 }
2685
2686 while _next_ordinal_to_read < 1 {
2688 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2689 _next_ordinal_to_read += 1;
2690 next_offset += envelope_size;
2691 }
2692
2693 let next_out_of_line = decoder.next_out_of_line();
2694 let handles_before = decoder.remaining_handles();
2695 if let Some((inlined, num_bytes, num_handles)) =
2696 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2697 {
2698 let member_inline_size =
2699 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2700 decoder.context,
2701 );
2702 if inlined != (member_inline_size <= 4) {
2703 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2704 }
2705 let inner_offset;
2706 let mut inner_depth = depth.clone();
2707 if inlined {
2708 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2709 inner_offset = next_offset;
2710 } else {
2711 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2712 inner_depth.increment()?;
2713 }
2714 let val_ref = self
2715 .composite_name
2716 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2717 fidl::decode!(
2718 fidl::encoding::UnboundedString,
2719 D,
2720 val_ref,
2721 decoder,
2722 inner_offset,
2723 inner_depth
2724 )?;
2725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2726 {
2727 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2728 }
2729 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2730 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2731 }
2732 }
2733
2734 next_offset += envelope_size;
2735 _next_ordinal_to_read += 1;
2736 if next_offset >= end_offset {
2737 return Ok(());
2738 }
2739
2740 while _next_ordinal_to_read < 2 {
2742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2743 _next_ordinal_to_read += 1;
2744 next_offset += envelope_size;
2745 }
2746
2747 let next_out_of_line = decoder.next_out_of_line();
2748 let handles_before = decoder.remaining_handles();
2749 if let Some((inlined, num_bytes, num_handles)) =
2750 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2751 {
2752 let member_inline_size =
2753 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2754 if inlined != (member_inline_size <= 4) {
2755 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2756 }
2757 let inner_offset;
2758 let mut inner_depth = depth.clone();
2759 if inlined {
2760 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2761 inner_offset = next_offset;
2762 } else {
2763 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2764 inner_depth.increment()?;
2765 }
2766 let val_ref =
2767 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
2768 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2769 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2770 {
2771 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2772 }
2773 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2774 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2775 }
2776 }
2777
2778 next_offset += envelope_size;
2779
2780 while next_offset < end_offset {
2782 _next_ordinal_to_read += 1;
2783 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2784 next_offset += envelope_size;
2785 }
2786
2787 Ok(())
2788 }
2789 }
2790
2791 impl CompositeDriverMatch {
2792 #[inline(always)]
2793 fn max_ordinal_present(&self) -> u64 {
2794 if let Some(_) = self.primary_parent_index {
2795 return 3;
2796 }
2797 if let Some(_) = self.parent_names {
2798 return 2;
2799 }
2800 if let Some(_) = self.composite_driver {
2801 return 1;
2802 }
2803 0
2804 }
2805 }
2806
2807 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
2808 type Borrowed<'a> = &'a Self;
2809 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2810 value
2811 }
2812 }
2813
2814 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
2815 type Owned = Self;
2816
2817 #[inline(always)]
2818 fn inline_align(_context: fidl::encoding::Context) -> usize {
2819 8
2820 }
2821
2822 #[inline(always)]
2823 fn inline_size(_context: fidl::encoding::Context) -> usize {
2824 16
2825 }
2826 }
2827
2828 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
2829 for &CompositeDriverMatch
2830 {
2831 unsafe fn encode(
2832 self,
2833 encoder: &mut fidl::encoding::Encoder<'_, D>,
2834 offset: usize,
2835 mut depth: fidl::encoding::Depth,
2836 ) -> fidl::Result<()> {
2837 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
2838 let max_ordinal: u64 = self.max_ordinal_present();
2840 encoder.write_num(max_ordinal, offset);
2841 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2842 if max_ordinal == 0 {
2844 return Ok(());
2845 }
2846 depth.increment()?;
2847 let envelope_size = 8;
2848 let bytes_len = max_ordinal as usize * envelope_size;
2849 #[allow(unused_variables)]
2850 let offset = encoder.out_of_line_offset(bytes_len);
2851 let mut _prev_end_offset: usize = 0;
2852 if 1 > max_ordinal {
2853 return Ok(());
2854 }
2855
2856 let cur_offset: usize = (1 - 1) * envelope_size;
2859
2860 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2862
2863 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
2868 self.composite_driver
2869 .as_ref()
2870 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
2871 encoder,
2872 offset + cur_offset,
2873 depth,
2874 )?;
2875
2876 _prev_end_offset = cur_offset + envelope_size;
2877 if 2 > max_ordinal {
2878 return Ok(());
2879 }
2880
2881 let cur_offset: usize = (2 - 1) * envelope_size;
2884
2885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2887
2888 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
2893 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
2894 encoder, offset + cur_offset, depth
2895 )?;
2896
2897 _prev_end_offset = cur_offset + envelope_size;
2898 if 3 > max_ordinal {
2899 return Ok(());
2900 }
2901
2902 let cur_offset: usize = (3 - 1) * envelope_size;
2905
2906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2908
2909 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2914 self.primary_parent_index
2915 .as_ref()
2916 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2917 encoder,
2918 offset + cur_offset,
2919 depth,
2920 )?;
2921
2922 _prev_end_offset = cur_offset + envelope_size;
2923
2924 Ok(())
2925 }
2926 }
2927
2928 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
2929 #[inline(always)]
2930 fn new_empty() -> Self {
2931 Self::default()
2932 }
2933
2934 unsafe fn decode(
2935 &mut self,
2936 decoder: &mut fidl::encoding::Decoder<'_, D>,
2937 offset: usize,
2938 mut depth: fidl::encoding::Depth,
2939 ) -> fidl::Result<()> {
2940 decoder.debug_check_bounds::<Self>(offset);
2941 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2942 None => return Err(fidl::Error::NotNullable),
2943 Some(len) => len,
2944 };
2945 if len == 0 {
2947 return Ok(());
2948 };
2949 depth.increment()?;
2950 let envelope_size = 8;
2951 let bytes_len = len * envelope_size;
2952 let offset = decoder.out_of_line_offset(bytes_len)?;
2953 let mut _next_ordinal_to_read = 0;
2955 let mut next_offset = offset;
2956 let end_offset = offset + bytes_len;
2957 _next_ordinal_to_read += 1;
2958 if next_offset >= end_offset {
2959 return Ok(());
2960 }
2961
2962 while _next_ordinal_to_read < 1 {
2964 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2965 _next_ordinal_to_read += 1;
2966 next_offset += envelope_size;
2967 }
2968
2969 let next_out_of_line = decoder.next_out_of_line();
2970 let handles_before = decoder.remaining_handles();
2971 if let Some((inlined, num_bytes, num_handles)) =
2972 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2973 {
2974 let member_inline_size =
2975 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
2976 decoder.context,
2977 );
2978 if inlined != (member_inline_size <= 4) {
2979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2980 }
2981 let inner_offset;
2982 let mut inner_depth = depth.clone();
2983 if inlined {
2984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2985 inner_offset = next_offset;
2986 } else {
2987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2988 inner_depth.increment()?;
2989 }
2990 let val_ref = self
2991 .composite_driver
2992 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
2993 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2994 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2995 {
2996 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2997 }
2998 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2999 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3000 }
3001 }
3002
3003 next_offset += envelope_size;
3004 _next_ordinal_to_read += 1;
3005 if next_offset >= end_offset {
3006 return Ok(());
3007 }
3008
3009 while _next_ordinal_to_read < 2 {
3011 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3012 _next_ordinal_to_read += 1;
3013 next_offset += envelope_size;
3014 }
3015
3016 let next_out_of_line = decoder.next_out_of_line();
3017 let handles_before = decoder.remaining_handles();
3018 if let Some((inlined, num_bytes, num_handles)) =
3019 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3020 {
3021 let member_inline_size = <fidl::encoding::UnboundedVector<
3022 fidl::encoding::UnboundedString,
3023 > as fidl::encoding::TypeMarker>::inline_size(
3024 decoder.context
3025 );
3026 if inlined != (member_inline_size <= 4) {
3027 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3028 }
3029 let inner_offset;
3030 let mut inner_depth = depth.clone();
3031 if inlined {
3032 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3033 inner_offset = next_offset;
3034 } else {
3035 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3036 inner_depth.increment()?;
3037 }
3038 let val_ref = self.parent_names.get_or_insert_with(|| {
3039 fidl::new_empty!(
3040 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3041 D
3042 )
3043 });
3044 fidl::decode!(
3045 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3046 D,
3047 val_ref,
3048 decoder,
3049 inner_offset,
3050 inner_depth
3051 )?;
3052 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3053 {
3054 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3055 }
3056 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3057 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3058 }
3059 }
3060
3061 next_offset += envelope_size;
3062 _next_ordinal_to_read += 1;
3063 if next_offset >= end_offset {
3064 return Ok(());
3065 }
3066
3067 while _next_ordinal_to_read < 3 {
3069 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3070 _next_ordinal_to_read += 1;
3071 next_offset += envelope_size;
3072 }
3073
3074 let next_out_of_line = decoder.next_out_of_line();
3075 let handles_before = decoder.remaining_handles();
3076 if let Some((inlined, num_bytes, num_handles)) =
3077 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3078 {
3079 let member_inline_size =
3080 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3081 if inlined != (member_inline_size <= 4) {
3082 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3083 }
3084 let inner_offset;
3085 let mut inner_depth = depth.clone();
3086 if inlined {
3087 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3088 inner_offset = next_offset;
3089 } else {
3090 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3091 inner_depth.increment()?;
3092 }
3093 let val_ref =
3094 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3095 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3096 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3097 {
3098 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3099 }
3100 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3101 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3102 }
3103 }
3104
3105 next_offset += envelope_size;
3106
3107 while next_offset < end_offset {
3109 _next_ordinal_to_read += 1;
3110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3111 next_offset += envelope_size;
3112 }
3113
3114 Ok(())
3115 }
3116 }
3117
3118 impl CompositeInfo {
3119 #[inline(always)]
3120 fn max_ordinal_present(&self) -> u64 {
3121 if let Some(_) = self.matched_driver {
3122 return 2;
3123 }
3124 if let Some(_) = self.spec {
3125 return 1;
3126 }
3127 0
3128 }
3129 }
3130
3131 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
3132 type Borrowed<'a> = &'a Self;
3133 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3134 value
3135 }
3136 }
3137
3138 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
3139 type Owned = Self;
3140
3141 #[inline(always)]
3142 fn inline_align(_context: fidl::encoding::Context) -> usize {
3143 8
3144 }
3145
3146 #[inline(always)]
3147 fn inline_size(_context: fidl::encoding::Context) -> usize {
3148 16
3149 }
3150 }
3151
3152 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
3153 for &CompositeInfo
3154 {
3155 unsafe fn encode(
3156 self,
3157 encoder: &mut fidl::encoding::Encoder<'_, D>,
3158 offset: usize,
3159 mut depth: fidl::encoding::Depth,
3160 ) -> fidl::Result<()> {
3161 encoder.debug_check_bounds::<CompositeInfo>(offset);
3162 let max_ordinal: u64 = self.max_ordinal_present();
3164 encoder.write_num(max_ordinal, offset);
3165 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3166 if max_ordinal == 0 {
3168 return Ok(());
3169 }
3170 depth.increment()?;
3171 let envelope_size = 8;
3172 let bytes_len = max_ordinal as usize * envelope_size;
3173 #[allow(unused_variables)]
3174 let offset = encoder.out_of_line_offset(bytes_len);
3175 let mut _prev_end_offset: usize = 0;
3176 if 1 > max_ordinal {
3177 return Ok(());
3178 }
3179
3180 let cur_offset: usize = (1 - 1) * envelope_size;
3183
3184 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3186
3187 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
3192 self.spec
3193 .as_ref()
3194 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
3195 encoder,
3196 offset + cur_offset,
3197 depth,
3198 )?;
3199
3200 _prev_end_offset = cur_offset + envelope_size;
3201 if 2 > max_ordinal {
3202 return Ok(());
3203 }
3204
3205 let cur_offset: usize = (2 - 1) * envelope_size;
3208
3209 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3211
3212 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
3217 self.matched_driver
3218 .as_ref()
3219 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
3220 encoder,
3221 offset + cur_offset,
3222 depth,
3223 )?;
3224
3225 _prev_end_offset = cur_offset + envelope_size;
3226
3227 Ok(())
3228 }
3229 }
3230
3231 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
3232 #[inline(always)]
3233 fn new_empty() -> Self {
3234 Self::default()
3235 }
3236
3237 unsafe fn decode(
3238 &mut self,
3239 decoder: &mut fidl::encoding::Decoder<'_, D>,
3240 offset: usize,
3241 mut depth: fidl::encoding::Depth,
3242 ) -> fidl::Result<()> {
3243 decoder.debug_check_bounds::<Self>(offset);
3244 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3245 None => return Err(fidl::Error::NotNullable),
3246 Some(len) => len,
3247 };
3248 if len == 0 {
3250 return Ok(());
3251 };
3252 depth.increment()?;
3253 let envelope_size = 8;
3254 let bytes_len = len * envelope_size;
3255 let offset = decoder.out_of_line_offset(bytes_len)?;
3256 let mut _next_ordinal_to_read = 0;
3258 let mut next_offset = offset;
3259 let end_offset = offset + bytes_len;
3260 _next_ordinal_to_read += 1;
3261 if next_offset >= end_offset {
3262 return Ok(());
3263 }
3264
3265 while _next_ordinal_to_read < 1 {
3267 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3268 _next_ordinal_to_read += 1;
3269 next_offset += envelope_size;
3270 }
3271
3272 let next_out_of_line = decoder.next_out_of_line();
3273 let handles_before = decoder.remaining_handles();
3274 if let Some((inlined, num_bytes, num_handles)) =
3275 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3276 {
3277 let member_inline_size =
3278 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3279 if inlined != (member_inline_size <= 4) {
3280 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3281 }
3282 let inner_offset;
3283 let mut inner_depth = depth.clone();
3284 if inlined {
3285 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3286 inner_offset = next_offset;
3287 } else {
3288 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3289 inner_depth.increment()?;
3290 }
3291 let val_ref =
3292 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
3293 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
3294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3295 {
3296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3297 }
3298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3300 }
3301 }
3302
3303 next_offset += envelope_size;
3304 _next_ordinal_to_read += 1;
3305 if next_offset >= end_offset {
3306 return Ok(());
3307 }
3308
3309 while _next_ordinal_to_read < 2 {
3311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3312 _next_ordinal_to_read += 1;
3313 next_offset += envelope_size;
3314 }
3315
3316 let next_out_of_line = decoder.next_out_of_line();
3317 let handles_before = decoder.remaining_handles();
3318 if let Some((inlined, num_bytes, num_handles)) =
3319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3320 {
3321 let member_inline_size =
3322 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
3323 decoder.context,
3324 );
3325 if inlined != (member_inline_size <= 4) {
3326 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3327 }
3328 let inner_offset;
3329 let mut inner_depth = depth.clone();
3330 if inlined {
3331 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3332 inner_offset = next_offset;
3333 } else {
3334 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3335 inner_depth.increment()?;
3336 }
3337 let val_ref = self
3338 .matched_driver
3339 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
3340 fidl::decode!(
3341 CompositeDriverMatch,
3342 D,
3343 val_ref,
3344 decoder,
3345 inner_offset,
3346 inner_depth
3347 )?;
3348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3349 {
3350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3351 }
3352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3354 }
3355 }
3356
3357 next_offset += envelope_size;
3358
3359 while next_offset < end_offset {
3361 _next_ordinal_to_read += 1;
3362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3363 next_offset += envelope_size;
3364 }
3365
3366 Ok(())
3367 }
3368 }
3369
3370 impl CompositeNodeSpec {
3371 #[inline(always)]
3372 fn max_ordinal_present(&self) -> u64 {
3373 if let Some(_) = self.driver_host {
3374 return 4;
3375 }
3376 if let Some(_) = self.parents2 {
3377 return 3;
3378 }
3379 if let Some(_) = self.parents {
3380 return 2;
3381 }
3382 if let Some(_) = self.name {
3383 return 1;
3384 }
3385 0
3386 }
3387 }
3388
3389 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
3390 type Borrowed<'a> = &'a Self;
3391 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3392 value
3393 }
3394 }
3395
3396 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
3397 type Owned = Self;
3398
3399 #[inline(always)]
3400 fn inline_align(_context: fidl::encoding::Context) -> usize {
3401 8
3402 }
3403
3404 #[inline(always)]
3405 fn inline_size(_context: fidl::encoding::Context) -> usize {
3406 16
3407 }
3408 }
3409
3410 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
3411 for &CompositeNodeSpec
3412 {
3413 unsafe fn encode(
3414 self,
3415 encoder: &mut fidl::encoding::Encoder<'_, D>,
3416 offset: usize,
3417 mut depth: fidl::encoding::Depth,
3418 ) -> fidl::Result<()> {
3419 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
3420 let max_ordinal: u64 = self.max_ordinal_present();
3422 encoder.write_num(max_ordinal, offset);
3423 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3424 if max_ordinal == 0 {
3426 return Ok(());
3427 }
3428 depth.increment()?;
3429 let envelope_size = 8;
3430 let bytes_len = max_ordinal as usize * envelope_size;
3431 #[allow(unused_variables)]
3432 let offset = encoder.out_of_line_offset(bytes_len);
3433 let mut _prev_end_offset: usize = 0;
3434 if 1 > max_ordinal {
3435 return Ok(());
3436 }
3437
3438 let cur_offset: usize = (1 - 1) * envelope_size;
3441
3442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3444
3445 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3450 self.name.as_ref().map(
3451 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3452 ),
3453 encoder,
3454 offset + cur_offset,
3455 depth,
3456 )?;
3457
3458 _prev_end_offset = cur_offset + envelope_size;
3459 if 2 > max_ordinal {
3460 return Ok(());
3461 }
3462
3463 let cur_offset: usize = (2 - 1) * envelope_size;
3466
3467 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3469
3470 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec>, D>(
3475 self.parents.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::ValueTypeMarker>::borrow),
3476 encoder, offset + cur_offset, depth
3477 )?;
3478
3479 _prev_end_offset = cur_offset + envelope_size;
3480 if 3 > max_ordinal {
3481 return Ok(());
3482 }
3483
3484 let cur_offset: usize = (3 - 1) * envelope_size;
3487
3488 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3490
3491 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec2>, D>(
3496 self.parents2.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::ValueTypeMarker>::borrow),
3497 encoder, offset + cur_offset, depth
3498 )?;
3499
3500 _prev_end_offset = cur_offset + envelope_size;
3501 if 4 > max_ordinal {
3502 return Ok(());
3503 }
3504
3505 let cur_offset: usize = (4 - 1) * envelope_size;
3508
3509 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3511
3512 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
3517 self.driver_host.as_ref().map(
3518 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
3519 ),
3520 encoder,
3521 offset + cur_offset,
3522 depth,
3523 )?;
3524
3525 _prev_end_offset = cur_offset + envelope_size;
3526
3527 Ok(())
3528 }
3529 }
3530
3531 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
3532 #[inline(always)]
3533 fn new_empty() -> Self {
3534 Self::default()
3535 }
3536
3537 unsafe fn decode(
3538 &mut self,
3539 decoder: &mut fidl::encoding::Decoder<'_, D>,
3540 offset: usize,
3541 mut depth: fidl::encoding::Depth,
3542 ) -> fidl::Result<()> {
3543 decoder.debug_check_bounds::<Self>(offset);
3544 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3545 None => return Err(fidl::Error::NotNullable),
3546 Some(len) => len,
3547 };
3548 if len == 0 {
3550 return Ok(());
3551 };
3552 depth.increment()?;
3553 let envelope_size = 8;
3554 let bytes_len = len * envelope_size;
3555 let offset = decoder.out_of_line_offset(bytes_len)?;
3556 let mut _next_ordinal_to_read = 0;
3558 let mut next_offset = offset;
3559 let end_offset = offset + bytes_len;
3560 _next_ordinal_to_read += 1;
3561 if next_offset >= end_offset {
3562 return Ok(());
3563 }
3564
3565 while _next_ordinal_to_read < 1 {
3567 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3568 _next_ordinal_to_read += 1;
3569 next_offset += envelope_size;
3570 }
3571
3572 let next_out_of_line = decoder.next_out_of_line();
3573 let handles_before = decoder.remaining_handles();
3574 if let Some((inlined, num_bytes, num_handles)) =
3575 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3576 {
3577 let member_inline_size =
3578 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3579 decoder.context,
3580 );
3581 if inlined != (member_inline_size <= 4) {
3582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3583 }
3584 let inner_offset;
3585 let mut inner_depth = depth.clone();
3586 if inlined {
3587 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3588 inner_offset = next_offset;
3589 } else {
3590 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3591 inner_depth.increment()?;
3592 }
3593 let val_ref = self
3594 .name
3595 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3596 fidl::decode!(
3597 fidl::encoding::UnboundedString,
3598 D,
3599 val_ref,
3600 decoder,
3601 inner_offset,
3602 inner_depth
3603 )?;
3604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3605 {
3606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3607 }
3608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3610 }
3611 }
3612
3613 next_offset += envelope_size;
3614 _next_ordinal_to_read += 1;
3615 if next_offset >= end_offset {
3616 return Ok(());
3617 }
3618
3619 while _next_ordinal_to_read < 2 {
3621 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3622 _next_ordinal_to_read += 1;
3623 next_offset += envelope_size;
3624 }
3625
3626 let next_out_of_line = decoder.next_out_of_line();
3627 let handles_before = decoder.remaining_handles();
3628 if let Some((inlined, num_bytes, num_handles)) =
3629 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3630 {
3631 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3632 if inlined != (member_inline_size <= 4) {
3633 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3634 }
3635 let inner_offset;
3636 let mut inner_depth = depth.clone();
3637 if inlined {
3638 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3639 inner_offset = next_offset;
3640 } else {
3641 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3642 inner_depth.increment()?;
3643 }
3644 let val_ref = self.parents.get_or_insert_with(|| {
3645 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec>, D)
3646 });
3647 fidl::decode!(
3648 fidl::encoding::UnboundedVector<ParentSpec>,
3649 D,
3650 val_ref,
3651 decoder,
3652 inner_offset,
3653 inner_depth
3654 )?;
3655 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3656 {
3657 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3658 }
3659 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3660 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3661 }
3662 }
3663
3664 next_offset += envelope_size;
3665 _next_ordinal_to_read += 1;
3666 if next_offset >= end_offset {
3667 return Ok(());
3668 }
3669
3670 while _next_ordinal_to_read < 3 {
3672 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3673 _next_ordinal_to_read += 1;
3674 next_offset += envelope_size;
3675 }
3676
3677 let next_out_of_line = decoder.next_out_of_line();
3678 let handles_before = decoder.remaining_handles();
3679 if let Some((inlined, num_bytes, num_handles)) =
3680 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3681 {
3682 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3683 if inlined != (member_inline_size <= 4) {
3684 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3685 }
3686 let inner_offset;
3687 let mut inner_depth = depth.clone();
3688 if inlined {
3689 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3690 inner_offset = next_offset;
3691 } else {
3692 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3693 inner_depth.increment()?;
3694 }
3695 let val_ref = self.parents2.get_or_insert_with(|| {
3696 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec2>, D)
3697 });
3698 fidl::decode!(
3699 fidl::encoding::UnboundedVector<ParentSpec2>,
3700 D,
3701 val_ref,
3702 decoder,
3703 inner_offset,
3704 inner_depth
3705 )?;
3706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3707 {
3708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3709 }
3710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3712 }
3713 }
3714
3715 next_offset += envelope_size;
3716 _next_ordinal_to_read += 1;
3717 if next_offset >= end_offset {
3718 return Ok(());
3719 }
3720
3721 while _next_ordinal_to_read < 4 {
3723 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3724 _next_ordinal_to_read += 1;
3725 next_offset += envelope_size;
3726 }
3727
3728 let next_out_of_line = decoder.next_out_of_line();
3729 let handles_before = decoder.remaining_handles();
3730 if let Some((inlined, num_bytes, num_handles)) =
3731 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3732 {
3733 let member_inline_size =
3734 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
3735 decoder.context,
3736 );
3737 if inlined != (member_inline_size <= 4) {
3738 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3739 }
3740 let inner_offset;
3741 let mut inner_depth = depth.clone();
3742 if inlined {
3743 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3744 inner_offset = next_offset;
3745 } else {
3746 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3747 inner_depth.increment()?;
3748 }
3749 let val_ref = self
3750 .driver_host
3751 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
3752 fidl::decode!(
3753 fidl::encoding::BoundedString<128>,
3754 D,
3755 val_ref,
3756 decoder,
3757 inner_offset,
3758 inner_depth
3759 )?;
3760 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3761 {
3762 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3763 }
3764 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3765 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3766 }
3767 }
3768
3769 next_offset += envelope_size;
3770
3771 while next_offset < end_offset {
3773 _next_ordinal_to_read += 1;
3774 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3775 next_offset += envelope_size;
3776 }
3777
3778 Ok(())
3779 }
3780 }
3781
3782 impl CompositeParent {
3783 #[inline(always)]
3784 fn max_ordinal_present(&self) -> u64 {
3785 if let Some(_) = self.index {
3786 return 2;
3787 }
3788 if let Some(_) = self.composite {
3789 return 1;
3790 }
3791 0
3792 }
3793 }
3794
3795 impl fidl::encoding::ValueTypeMarker for CompositeParent {
3796 type Borrowed<'a> = &'a Self;
3797 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3798 value
3799 }
3800 }
3801
3802 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
3803 type Owned = Self;
3804
3805 #[inline(always)]
3806 fn inline_align(_context: fidl::encoding::Context) -> usize {
3807 8
3808 }
3809
3810 #[inline(always)]
3811 fn inline_size(_context: fidl::encoding::Context) -> usize {
3812 16
3813 }
3814 }
3815
3816 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
3817 for &CompositeParent
3818 {
3819 unsafe fn encode(
3820 self,
3821 encoder: &mut fidl::encoding::Encoder<'_, D>,
3822 offset: usize,
3823 mut depth: fidl::encoding::Depth,
3824 ) -> fidl::Result<()> {
3825 encoder.debug_check_bounds::<CompositeParent>(offset);
3826 let max_ordinal: u64 = self.max_ordinal_present();
3828 encoder.write_num(max_ordinal, offset);
3829 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3830 if max_ordinal == 0 {
3832 return Ok(());
3833 }
3834 depth.increment()?;
3835 let envelope_size = 8;
3836 let bytes_len = max_ordinal as usize * envelope_size;
3837 #[allow(unused_variables)]
3838 let offset = encoder.out_of_line_offset(bytes_len);
3839 let mut _prev_end_offset: usize = 0;
3840 if 1 > max_ordinal {
3841 return Ok(());
3842 }
3843
3844 let cur_offset: usize = (1 - 1) * envelope_size;
3847
3848 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3850
3851 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
3856 self.composite
3857 .as_ref()
3858 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
3859 encoder,
3860 offset + cur_offset,
3861 depth,
3862 )?;
3863
3864 _prev_end_offset = cur_offset + envelope_size;
3865 if 2 > max_ordinal {
3866 return Ok(());
3867 }
3868
3869 let cur_offset: usize = (2 - 1) * envelope_size;
3872
3873 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3875
3876 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3881 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3882 encoder,
3883 offset + cur_offset,
3884 depth,
3885 )?;
3886
3887 _prev_end_offset = cur_offset + envelope_size;
3888
3889 Ok(())
3890 }
3891 }
3892
3893 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
3894 #[inline(always)]
3895 fn new_empty() -> Self {
3896 Self::default()
3897 }
3898
3899 unsafe fn decode(
3900 &mut self,
3901 decoder: &mut fidl::encoding::Decoder<'_, D>,
3902 offset: usize,
3903 mut depth: fidl::encoding::Depth,
3904 ) -> fidl::Result<()> {
3905 decoder.debug_check_bounds::<Self>(offset);
3906 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3907 None => return Err(fidl::Error::NotNullable),
3908 Some(len) => len,
3909 };
3910 if len == 0 {
3912 return Ok(());
3913 };
3914 depth.increment()?;
3915 let envelope_size = 8;
3916 let bytes_len = len * envelope_size;
3917 let offset = decoder.out_of_line_offset(bytes_len)?;
3918 let mut _next_ordinal_to_read = 0;
3920 let mut next_offset = offset;
3921 let end_offset = offset + bytes_len;
3922 _next_ordinal_to_read += 1;
3923 if next_offset >= end_offset {
3924 return Ok(());
3925 }
3926
3927 while _next_ordinal_to_read < 1 {
3929 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3930 _next_ordinal_to_read += 1;
3931 next_offset += envelope_size;
3932 }
3933
3934 let next_out_of_line = decoder.next_out_of_line();
3935 let handles_before = decoder.remaining_handles();
3936 if let Some((inlined, num_bytes, num_handles)) =
3937 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3938 {
3939 let member_inline_size =
3940 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3941 if inlined != (member_inline_size <= 4) {
3942 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3943 }
3944 let inner_offset;
3945 let mut inner_depth = depth.clone();
3946 if inlined {
3947 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3948 inner_offset = next_offset;
3949 } else {
3950 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3951 inner_depth.increment()?;
3952 }
3953 let val_ref =
3954 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
3955 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3957 {
3958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3959 }
3960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3962 }
3963 }
3964
3965 next_offset += envelope_size;
3966 _next_ordinal_to_read += 1;
3967 if next_offset >= end_offset {
3968 return Ok(());
3969 }
3970
3971 while _next_ordinal_to_read < 2 {
3973 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3974 _next_ordinal_to_read += 1;
3975 next_offset += envelope_size;
3976 }
3977
3978 let next_out_of_line = decoder.next_out_of_line();
3979 let handles_before = decoder.remaining_handles();
3980 if let Some((inlined, num_bytes, num_handles)) =
3981 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3982 {
3983 let member_inline_size =
3984 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3985 if inlined != (member_inline_size <= 4) {
3986 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3987 }
3988 let inner_offset;
3989 let mut inner_depth = depth.clone();
3990 if inlined {
3991 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3992 inner_offset = next_offset;
3993 } else {
3994 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3995 inner_depth.increment()?;
3996 }
3997 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3998 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4000 {
4001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4002 }
4003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4005 }
4006 }
4007
4008 next_offset += envelope_size;
4009
4010 while next_offset < end_offset {
4012 _next_ordinal_to_read += 1;
4013 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4014 next_offset += envelope_size;
4015 }
4016
4017 Ok(())
4018 }
4019 }
4020
4021 impl DeviceCategory {
4022 #[inline(always)]
4023 fn max_ordinal_present(&self) -> u64 {
4024 if let Some(_) = self.subcategory {
4025 return 2;
4026 }
4027 if let Some(_) = self.category {
4028 return 1;
4029 }
4030 0
4031 }
4032 }
4033
4034 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
4035 type Borrowed<'a> = &'a Self;
4036 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4037 value
4038 }
4039 }
4040
4041 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
4042 type Owned = Self;
4043
4044 #[inline(always)]
4045 fn inline_align(_context: fidl::encoding::Context) -> usize {
4046 8
4047 }
4048
4049 #[inline(always)]
4050 fn inline_size(_context: fidl::encoding::Context) -> usize {
4051 16
4052 }
4053 }
4054
4055 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
4056 for &DeviceCategory
4057 {
4058 unsafe fn encode(
4059 self,
4060 encoder: &mut fidl::encoding::Encoder<'_, D>,
4061 offset: usize,
4062 mut depth: fidl::encoding::Depth,
4063 ) -> fidl::Result<()> {
4064 encoder.debug_check_bounds::<DeviceCategory>(offset);
4065 let max_ordinal: u64 = self.max_ordinal_present();
4067 encoder.write_num(max_ordinal, offset);
4068 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4069 if max_ordinal == 0 {
4071 return Ok(());
4072 }
4073 depth.increment()?;
4074 let envelope_size = 8;
4075 let bytes_len = max_ordinal as usize * envelope_size;
4076 #[allow(unused_variables)]
4077 let offset = encoder.out_of_line_offset(bytes_len);
4078 let mut _prev_end_offset: usize = 0;
4079 if 1 > max_ordinal {
4080 return Ok(());
4081 }
4082
4083 let cur_offset: usize = (1 - 1) * envelope_size;
4086
4087 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4089
4090 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4095 self.category.as_ref().map(
4096 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4097 ),
4098 encoder,
4099 offset + cur_offset,
4100 depth,
4101 )?;
4102
4103 _prev_end_offset = cur_offset + envelope_size;
4104 if 2 > max_ordinal {
4105 return Ok(());
4106 }
4107
4108 let cur_offset: usize = (2 - 1) * envelope_size;
4111
4112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4114
4115 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4120 self.subcategory.as_ref().map(
4121 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4122 ),
4123 encoder,
4124 offset + cur_offset,
4125 depth,
4126 )?;
4127
4128 _prev_end_offset = cur_offset + envelope_size;
4129
4130 Ok(())
4131 }
4132 }
4133
4134 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
4135 #[inline(always)]
4136 fn new_empty() -> Self {
4137 Self::default()
4138 }
4139
4140 unsafe fn decode(
4141 &mut self,
4142 decoder: &mut fidl::encoding::Decoder<'_, D>,
4143 offset: usize,
4144 mut depth: fidl::encoding::Depth,
4145 ) -> fidl::Result<()> {
4146 decoder.debug_check_bounds::<Self>(offset);
4147 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4148 None => return Err(fidl::Error::NotNullable),
4149 Some(len) => len,
4150 };
4151 if len == 0 {
4153 return Ok(());
4154 };
4155 depth.increment()?;
4156 let envelope_size = 8;
4157 let bytes_len = len * envelope_size;
4158 let offset = decoder.out_of_line_offset(bytes_len)?;
4159 let mut _next_ordinal_to_read = 0;
4161 let mut next_offset = offset;
4162 let end_offset = offset + bytes_len;
4163 _next_ordinal_to_read += 1;
4164 if next_offset >= end_offset {
4165 return Ok(());
4166 }
4167
4168 while _next_ordinal_to_read < 1 {
4170 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4171 _next_ordinal_to_read += 1;
4172 next_offset += envelope_size;
4173 }
4174
4175 let next_out_of_line = decoder.next_out_of_line();
4176 let handles_before = decoder.remaining_handles();
4177 if let Some((inlined, num_bytes, num_handles)) =
4178 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4179 {
4180 let member_inline_size =
4181 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4182 decoder.context,
4183 );
4184 if inlined != (member_inline_size <= 4) {
4185 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4186 }
4187 let inner_offset;
4188 let mut inner_depth = depth.clone();
4189 if inlined {
4190 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4191 inner_offset = next_offset;
4192 } else {
4193 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4194 inner_depth.increment()?;
4195 }
4196 let val_ref = self
4197 .category
4198 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4199 fidl::decode!(
4200 fidl::encoding::UnboundedString,
4201 D,
4202 val_ref,
4203 decoder,
4204 inner_offset,
4205 inner_depth
4206 )?;
4207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4208 {
4209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4210 }
4211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4213 }
4214 }
4215
4216 next_offset += envelope_size;
4217 _next_ordinal_to_read += 1;
4218 if next_offset >= end_offset {
4219 return Ok(());
4220 }
4221
4222 while _next_ordinal_to_read < 2 {
4224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4225 _next_ordinal_to_read += 1;
4226 next_offset += envelope_size;
4227 }
4228
4229 let next_out_of_line = decoder.next_out_of_line();
4230 let handles_before = decoder.remaining_handles();
4231 if let Some((inlined, num_bytes, num_handles)) =
4232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4233 {
4234 let member_inline_size =
4235 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4236 decoder.context,
4237 );
4238 if inlined != (member_inline_size <= 4) {
4239 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4240 }
4241 let inner_offset;
4242 let mut inner_depth = depth.clone();
4243 if inlined {
4244 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4245 inner_offset = next_offset;
4246 } else {
4247 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4248 inner_depth.increment()?;
4249 }
4250 let val_ref = self
4251 .subcategory
4252 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4253 fidl::decode!(
4254 fidl::encoding::UnboundedString,
4255 D,
4256 val_ref,
4257 decoder,
4258 inner_offset,
4259 inner_depth
4260 )?;
4261 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4262 {
4263 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4264 }
4265 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4266 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4267 }
4268 }
4269
4270 next_offset += envelope_size;
4271
4272 while next_offset < end_offset {
4274 _next_ordinal_to_read += 1;
4275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4276 next_offset += envelope_size;
4277 }
4278
4279 Ok(())
4280 }
4281 }
4282
4283 impl DriverInfo {
4284 #[inline(always)]
4285 fn max_ordinal_present(&self) -> u64 {
4286 if let Some(_) = self.is_disabled {
4287 return 9;
4288 }
4289 if let Some(_) = self.driver_framework_version {
4290 return 8;
4291 }
4292 if let Some(_) = self.bind_rules_bytecode {
4293 return 7;
4294 }
4295 if let Some(_) = self.device_categories {
4296 return 6;
4297 }
4298 if let Some(_) = self.is_fallback {
4299 return 5;
4300 }
4301 if let Some(_) = self.package_type {
4302 return 4;
4303 }
4304 if let Some(_) = self.colocate {
4305 return 3;
4306 }
4307 if let Some(_) = self.name {
4308 return 2;
4309 }
4310 if let Some(_) = self.url {
4311 return 1;
4312 }
4313 0
4314 }
4315 }
4316
4317 impl fidl::encoding::ValueTypeMarker for DriverInfo {
4318 type Borrowed<'a> = &'a Self;
4319 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4320 value
4321 }
4322 }
4323
4324 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
4325 type Owned = Self;
4326
4327 #[inline(always)]
4328 fn inline_align(_context: fidl::encoding::Context) -> usize {
4329 8
4330 }
4331
4332 #[inline(always)]
4333 fn inline_size(_context: fidl::encoding::Context) -> usize {
4334 16
4335 }
4336 }
4337
4338 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
4339 for &DriverInfo
4340 {
4341 unsafe fn encode(
4342 self,
4343 encoder: &mut fidl::encoding::Encoder<'_, D>,
4344 offset: usize,
4345 mut depth: fidl::encoding::Depth,
4346 ) -> fidl::Result<()> {
4347 encoder.debug_check_bounds::<DriverInfo>(offset);
4348 let max_ordinal: u64 = self.max_ordinal_present();
4350 encoder.write_num(max_ordinal, offset);
4351 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4352 if max_ordinal == 0 {
4354 return Ok(());
4355 }
4356 depth.increment()?;
4357 let envelope_size = 8;
4358 let bytes_len = max_ordinal as usize * envelope_size;
4359 #[allow(unused_variables)]
4360 let offset = encoder.out_of_line_offset(bytes_len);
4361 let mut _prev_end_offset: usize = 0;
4362 if 1 > max_ordinal {
4363 return Ok(());
4364 }
4365
4366 let cur_offset: usize = (1 - 1) * envelope_size;
4369
4370 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4372
4373 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4378 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4379 encoder, offset + cur_offset, depth
4380 )?;
4381
4382 _prev_end_offset = cur_offset + envelope_size;
4383 if 2 > max_ordinal {
4384 return Ok(());
4385 }
4386
4387 let cur_offset: usize = (2 - 1) * envelope_size;
4390
4391 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4393
4394 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4399 self.name.as_ref().map(
4400 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4401 ),
4402 encoder,
4403 offset + cur_offset,
4404 depth,
4405 )?;
4406
4407 _prev_end_offset = cur_offset + envelope_size;
4408 if 3 > max_ordinal {
4409 return Ok(());
4410 }
4411
4412 let cur_offset: usize = (3 - 1) * envelope_size;
4415
4416 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4418
4419 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4424 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4425 encoder,
4426 offset + cur_offset,
4427 depth,
4428 )?;
4429
4430 _prev_end_offset = cur_offset + envelope_size;
4431 if 4 > max_ordinal {
4432 return Ok(());
4433 }
4434
4435 let cur_offset: usize = (4 - 1) * envelope_size;
4438
4439 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4441
4442 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
4447 self.package_type
4448 .as_ref()
4449 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
4450 encoder,
4451 offset + cur_offset,
4452 depth,
4453 )?;
4454
4455 _prev_end_offset = cur_offset + envelope_size;
4456 if 5 > max_ordinal {
4457 return Ok(());
4458 }
4459
4460 let cur_offset: usize = (5 - 1) * envelope_size;
4463
4464 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4466
4467 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4472 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4473 encoder,
4474 offset + cur_offset,
4475 depth,
4476 )?;
4477
4478 _prev_end_offset = cur_offset + envelope_size;
4479 if 6 > max_ordinal {
4480 return Ok(());
4481 }
4482
4483 let cur_offset: usize = (6 - 1) * envelope_size;
4486
4487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4489
4490 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
4495 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
4496 encoder, offset + cur_offset, depth
4497 )?;
4498
4499 _prev_end_offset = cur_offset + envelope_size;
4500 if 7 > max_ordinal {
4501 return Ok(());
4502 }
4503
4504 let cur_offset: usize = (7 - 1) * envelope_size;
4507
4508 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4510
4511 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4516 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4517 encoder, offset + cur_offset, depth
4518 )?;
4519
4520 _prev_end_offset = cur_offset + envelope_size;
4521 if 8 > max_ordinal {
4522 return Ok(());
4523 }
4524
4525 let cur_offset: usize = (8 - 1) * envelope_size;
4528
4529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4531
4532 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4537 self.driver_framework_version
4538 .as_ref()
4539 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4540 encoder,
4541 offset + cur_offset,
4542 depth,
4543 )?;
4544
4545 _prev_end_offset = cur_offset + envelope_size;
4546 if 9 > max_ordinal {
4547 return Ok(());
4548 }
4549
4550 let cur_offset: usize = (9 - 1) * envelope_size;
4553
4554 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4556
4557 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4562 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4563 encoder,
4564 offset + cur_offset,
4565 depth,
4566 )?;
4567
4568 _prev_end_offset = cur_offset + envelope_size;
4569
4570 Ok(())
4571 }
4572 }
4573
4574 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
4575 #[inline(always)]
4576 fn new_empty() -> Self {
4577 Self::default()
4578 }
4579
4580 unsafe fn decode(
4581 &mut self,
4582 decoder: &mut fidl::encoding::Decoder<'_, D>,
4583 offset: usize,
4584 mut depth: fidl::encoding::Depth,
4585 ) -> fidl::Result<()> {
4586 decoder.debug_check_bounds::<Self>(offset);
4587 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4588 None => return Err(fidl::Error::NotNullable),
4589 Some(len) => len,
4590 };
4591 if len == 0 {
4593 return Ok(());
4594 };
4595 depth.increment()?;
4596 let envelope_size = 8;
4597 let bytes_len = len * envelope_size;
4598 let offset = decoder.out_of_line_offset(bytes_len)?;
4599 let mut _next_ordinal_to_read = 0;
4601 let mut next_offset = offset;
4602 let end_offset = offset + bytes_len;
4603 _next_ordinal_to_read += 1;
4604 if next_offset >= end_offset {
4605 return Ok(());
4606 }
4607
4608 while _next_ordinal_to_read < 1 {
4610 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4611 _next_ordinal_to_read += 1;
4612 next_offset += envelope_size;
4613 }
4614
4615 let next_out_of_line = decoder.next_out_of_line();
4616 let handles_before = decoder.remaining_handles();
4617 if let Some((inlined, num_bytes, num_handles)) =
4618 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4619 {
4620 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4621 if inlined != (member_inline_size <= 4) {
4622 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4623 }
4624 let inner_offset;
4625 let mut inner_depth = depth.clone();
4626 if inlined {
4627 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4628 inner_offset = next_offset;
4629 } else {
4630 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4631 inner_depth.increment()?;
4632 }
4633 let val_ref = self.url.get_or_insert_with(|| {
4634 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4635 });
4636 fidl::decode!(
4637 fidl::encoding::BoundedString<4096>,
4638 D,
4639 val_ref,
4640 decoder,
4641 inner_offset,
4642 inner_depth
4643 )?;
4644 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4645 {
4646 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4647 }
4648 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4649 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4650 }
4651 }
4652
4653 next_offset += envelope_size;
4654 _next_ordinal_to_read += 1;
4655 if next_offset >= end_offset {
4656 return Ok(());
4657 }
4658
4659 while _next_ordinal_to_read < 2 {
4661 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4662 _next_ordinal_to_read += 1;
4663 next_offset += envelope_size;
4664 }
4665
4666 let next_out_of_line = decoder.next_out_of_line();
4667 let handles_before = decoder.remaining_handles();
4668 if let Some((inlined, num_bytes, num_handles)) =
4669 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4670 {
4671 let member_inline_size =
4672 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4673 decoder.context,
4674 );
4675 if inlined != (member_inline_size <= 4) {
4676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4677 }
4678 let inner_offset;
4679 let mut inner_depth = depth.clone();
4680 if inlined {
4681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4682 inner_offset = next_offset;
4683 } else {
4684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4685 inner_depth.increment()?;
4686 }
4687 let val_ref = self
4688 .name
4689 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4690 fidl::decode!(
4691 fidl::encoding::UnboundedString,
4692 D,
4693 val_ref,
4694 decoder,
4695 inner_offset,
4696 inner_depth
4697 )?;
4698 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4699 {
4700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4701 }
4702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4704 }
4705 }
4706
4707 next_offset += envelope_size;
4708 _next_ordinal_to_read += 1;
4709 if next_offset >= end_offset {
4710 return Ok(());
4711 }
4712
4713 while _next_ordinal_to_read < 3 {
4715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4716 _next_ordinal_to_read += 1;
4717 next_offset += envelope_size;
4718 }
4719
4720 let next_out_of_line = decoder.next_out_of_line();
4721 let handles_before = decoder.remaining_handles();
4722 if let Some((inlined, num_bytes, num_handles)) =
4723 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4724 {
4725 let member_inline_size =
4726 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4727 if inlined != (member_inline_size <= 4) {
4728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4729 }
4730 let inner_offset;
4731 let mut inner_depth = depth.clone();
4732 if inlined {
4733 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4734 inner_offset = next_offset;
4735 } else {
4736 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4737 inner_depth.increment()?;
4738 }
4739 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
4740 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4741 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4742 {
4743 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4744 }
4745 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4746 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4747 }
4748 }
4749
4750 next_offset += envelope_size;
4751 _next_ordinal_to_read += 1;
4752 if next_offset >= end_offset {
4753 return Ok(());
4754 }
4755
4756 while _next_ordinal_to_read < 4 {
4758 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4759 _next_ordinal_to_read += 1;
4760 next_offset += envelope_size;
4761 }
4762
4763 let next_out_of_line = decoder.next_out_of_line();
4764 let handles_before = decoder.remaining_handles();
4765 if let Some((inlined, num_bytes, num_handles)) =
4766 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4767 {
4768 let member_inline_size =
4769 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4770 if inlined != (member_inline_size <= 4) {
4771 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4772 }
4773 let inner_offset;
4774 let mut inner_depth = depth.clone();
4775 if inlined {
4776 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4777 inner_offset = next_offset;
4778 } else {
4779 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4780 inner_depth.increment()?;
4781 }
4782 let val_ref =
4783 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
4784 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
4785 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4786 {
4787 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4788 }
4789 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4790 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4791 }
4792 }
4793
4794 next_offset += envelope_size;
4795 _next_ordinal_to_read += 1;
4796 if next_offset >= end_offset {
4797 return Ok(());
4798 }
4799
4800 while _next_ordinal_to_read < 5 {
4802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4803 _next_ordinal_to_read += 1;
4804 next_offset += envelope_size;
4805 }
4806
4807 let next_out_of_line = decoder.next_out_of_line();
4808 let handles_before = decoder.remaining_handles();
4809 if let Some((inlined, num_bytes, num_handles)) =
4810 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4811 {
4812 let member_inline_size =
4813 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4814 if inlined != (member_inline_size <= 4) {
4815 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4816 }
4817 let inner_offset;
4818 let mut inner_depth = depth.clone();
4819 if inlined {
4820 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4821 inner_offset = next_offset;
4822 } else {
4823 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4824 inner_depth.increment()?;
4825 }
4826 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
4827 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4828 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4829 {
4830 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4831 }
4832 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4833 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4834 }
4835 }
4836
4837 next_offset += envelope_size;
4838 _next_ordinal_to_read += 1;
4839 if next_offset >= end_offset {
4840 return Ok(());
4841 }
4842
4843 while _next_ordinal_to_read < 6 {
4845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4846 _next_ordinal_to_read += 1;
4847 next_offset += envelope_size;
4848 }
4849
4850 let next_out_of_line = decoder.next_out_of_line();
4851 let handles_before = decoder.remaining_handles();
4852 if let Some((inlined, num_bytes, num_handles)) =
4853 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4854 {
4855 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4856 if inlined != (member_inline_size <= 4) {
4857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4858 }
4859 let inner_offset;
4860 let mut inner_depth = depth.clone();
4861 if inlined {
4862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4863 inner_offset = next_offset;
4864 } else {
4865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4866 inner_depth.increment()?;
4867 }
4868 let val_ref = self.device_categories.get_or_insert_with(|| {
4869 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
4870 });
4871 fidl::decode!(
4872 fidl::encoding::UnboundedVector<DeviceCategory>,
4873 D,
4874 val_ref,
4875 decoder,
4876 inner_offset,
4877 inner_depth
4878 )?;
4879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4880 {
4881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4882 }
4883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4885 }
4886 }
4887
4888 next_offset += envelope_size;
4889 _next_ordinal_to_read += 1;
4890 if next_offset >= end_offset {
4891 return Ok(());
4892 }
4893
4894 while _next_ordinal_to_read < 7 {
4896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4897 _next_ordinal_to_read += 1;
4898 next_offset += envelope_size;
4899 }
4900
4901 let next_out_of_line = decoder.next_out_of_line();
4902 let handles_before = decoder.remaining_handles();
4903 if let Some((inlined, num_bytes, num_handles)) =
4904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4905 {
4906 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4907 if inlined != (member_inline_size <= 4) {
4908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4909 }
4910 let inner_offset;
4911 let mut inner_depth = depth.clone();
4912 if inlined {
4913 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4914 inner_offset = next_offset;
4915 } else {
4916 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4917 inner_depth.increment()?;
4918 }
4919 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
4920 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4921 });
4922 fidl::decode!(
4923 fidl::encoding::UnboundedVector<u8>,
4924 D,
4925 val_ref,
4926 decoder,
4927 inner_offset,
4928 inner_depth
4929 )?;
4930 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4931 {
4932 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4933 }
4934 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4935 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4936 }
4937 }
4938
4939 next_offset += envelope_size;
4940 _next_ordinal_to_read += 1;
4941 if next_offset >= end_offset {
4942 return Ok(());
4943 }
4944
4945 while _next_ordinal_to_read < 8 {
4947 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4948 _next_ordinal_to_read += 1;
4949 next_offset += envelope_size;
4950 }
4951
4952 let next_out_of_line = decoder.next_out_of_line();
4953 let handles_before = decoder.remaining_handles();
4954 if let Some((inlined, num_bytes, num_handles)) =
4955 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4956 {
4957 let member_inline_size =
4958 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4959 if inlined != (member_inline_size <= 4) {
4960 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4961 }
4962 let inner_offset;
4963 let mut inner_depth = depth.clone();
4964 if inlined {
4965 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4966 inner_offset = next_offset;
4967 } else {
4968 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4969 inner_depth.increment()?;
4970 }
4971 let val_ref =
4972 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4973 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4975 {
4976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4977 }
4978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4980 }
4981 }
4982
4983 next_offset += envelope_size;
4984 _next_ordinal_to_read += 1;
4985 if next_offset >= end_offset {
4986 return Ok(());
4987 }
4988
4989 while _next_ordinal_to_read < 9 {
4991 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4992 _next_ordinal_to_read += 1;
4993 next_offset += envelope_size;
4994 }
4995
4996 let next_out_of_line = decoder.next_out_of_line();
4997 let handles_before = decoder.remaining_handles();
4998 if let Some((inlined, num_bytes, num_handles)) =
4999 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5000 {
5001 let member_inline_size =
5002 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5003 if inlined != (member_inline_size <= 4) {
5004 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5005 }
5006 let inner_offset;
5007 let mut inner_depth = depth.clone();
5008 if inlined {
5009 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5010 inner_offset = next_offset;
5011 } else {
5012 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5013 inner_depth.increment()?;
5014 }
5015 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5016 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5018 {
5019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5020 }
5021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5023 }
5024 }
5025
5026 next_offset += envelope_size;
5027
5028 while next_offset < end_offset {
5030 _next_ordinal_to_read += 1;
5031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5032 next_offset += envelope_size;
5033 }
5034
5035 Ok(())
5036 }
5037 }
5038
5039 impl NodeControllerRequestBindRequest {
5040 #[inline(always)]
5041 fn max_ordinal_present(&self) -> u64 {
5042 if let Some(_) = self.driver_url_suffix {
5043 return 2;
5044 }
5045 if let Some(_) = self.force_rebind {
5046 return 1;
5047 }
5048 0
5049 }
5050 }
5051
5052 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
5053 type Borrowed<'a> = &'a Self;
5054 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5055 value
5056 }
5057 }
5058
5059 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
5060 type Owned = Self;
5061
5062 #[inline(always)]
5063 fn inline_align(_context: fidl::encoding::Context) -> usize {
5064 8
5065 }
5066
5067 #[inline(always)]
5068 fn inline_size(_context: fidl::encoding::Context) -> usize {
5069 16
5070 }
5071 }
5072
5073 unsafe impl<D: fidl::encoding::ResourceDialect>
5074 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
5075 for &NodeControllerRequestBindRequest
5076 {
5077 unsafe fn encode(
5078 self,
5079 encoder: &mut fidl::encoding::Encoder<'_, D>,
5080 offset: usize,
5081 mut depth: fidl::encoding::Depth,
5082 ) -> fidl::Result<()> {
5083 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
5084 let max_ordinal: u64 = self.max_ordinal_present();
5086 encoder.write_num(max_ordinal, offset);
5087 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5088 if max_ordinal == 0 {
5090 return Ok(());
5091 }
5092 depth.increment()?;
5093 let envelope_size = 8;
5094 let bytes_len = max_ordinal as usize * envelope_size;
5095 #[allow(unused_variables)]
5096 let offset = encoder.out_of_line_offset(bytes_len);
5097 let mut _prev_end_offset: usize = 0;
5098 if 1 > max_ordinal {
5099 return Ok(());
5100 }
5101
5102 let cur_offset: usize = (1 - 1) * envelope_size;
5105
5106 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5108
5109 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5114 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5115 encoder,
5116 offset + cur_offset,
5117 depth,
5118 )?;
5119
5120 _prev_end_offset = cur_offset + envelope_size;
5121 if 2 > max_ordinal {
5122 return Ok(());
5123 }
5124
5125 let cur_offset: usize = (2 - 1) * envelope_size;
5128
5129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5131
5132 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5137 self.driver_url_suffix.as_ref().map(
5138 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5139 ),
5140 encoder,
5141 offset + cur_offset,
5142 depth,
5143 )?;
5144
5145 _prev_end_offset = cur_offset + envelope_size;
5146
5147 Ok(())
5148 }
5149 }
5150
5151 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5152 for NodeControllerRequestBindRequest
5153 {
5154 #[inline(always)]
5155 fn new_empty() -> Self {
5156 Self::default()
5157 }
5158
5159 unsafe fn decode(
5160 &mut self,
5161 decoder: &mut fidl::encoding::Decoder<'_, D>,
5162 offset: usize,
5163 mut depth: fidl::encoding::Depth,
5164 ) -> fidl::Result<()> {
5165 decoder.debug_check_bounds::<Self>(offset);
5166 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5167 None => return Err(fidl::Error::NotNullable),
5168 Some(len) => len,
5169 };
5170 if len == 0 {
5172 return Ok(());
5173 };
5174 depth.increment()?;
5175 let envelope_size = 8;
5176 let bytes_len = len * envelope_size;
5177 let offset = decoder.out_of_line_offset(bytes_len)?;
5178 let mut _next_ordinal_to_read = 0;
5180 let mut next_offset = offset;
5181 let end_offset = offset + bytes_len;
5182 _next_ordinal_to_read += 1;
5183 if next_offset >= end_offset {
5184 return Ok(());
5185 }
5186
5187 while _next_ordinal_to_read < 1 {
5189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5190 _next_ordinal_to_read += 1;
5191 next_offset += envelope_size;
5192 }
5193
5194 let next_out_of_line = decoder.next_out_of_line();
5195 let handles_before = decoder.remaining_handles();
5196 if let Some((inlined, num_bytes, num_handles)) =
5197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5198 {
5199 let member_inline_size =
5200 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5201 if inlined != (member_inline_size <= 4) {
5202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5203 }
5204 let inner_offset;
5205 let mut inner_depth = depth.clone();
5206 if inlined {
5207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5208 inner_offset = next_offset;
5209 } else {
5210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5211 inner_depth.increment()?;
5212 }
5213 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
5214 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5215 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5216 {
5217 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5218 }
5219 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5220 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5221 }
5222 }
5223
5224 next_offset += envelope_size;
5225 _next_ordinal_to_read += 1;
5226 if next_offset >= end_offset {
5227 return Ok(());
5228 }
5229
5230 while _next_ordinal_to_read < 2 {
5232 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5233 _next_ordinal_to_read += 1;
5234 next_offset += envelope_size;
5235 }
5236
5237 let next_out_of_line = decoder.next_out_of_line();
5238 let handles_before = decoder.remaining_handles();
5239 if let Some((inlined, num_bytes, num_handles)) =
5240 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5241 {
5242 let member_inline_size =
5243 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5244 decoder.context,
5245 );
5246 if inlined != (member_inline_size <= 4) {
5247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5248 }
5249 let inner_offset;
5250 let mut inner_depth = depth.clone();
5251 if inlined {
5252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5253 inner_offset = next_offset;
5254 } else {
5255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5256 inner_depth.increment()?;
5257 }
5258 let val_ref = self
5259 .driver_url_suffix
5260 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5261 fidl::decode!(
5262 fidl::encoding::UnboundedString,
5263 D,
5264 val_ref,
5265 decoder,
5266 inner_offset,
5267 inner_depth
5268 )?;
5269 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5270 {
5271 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5272 }
5273 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5274 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5275 }
5276 }
5277
5278 next_offset += envelope_size;
5279
5280 while next_offset < end_offset {
5282 _next_ordinal_to_read += 1;
5283 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5284 next_offset += envelope_size;
5285 }
5286
5287 Ok(())
5288 }
5289 }
5290
5291 impl NodeSymbol {
5292 #[inline(always)]
5293 fn max_ordinal_present(&self) -> u64 {
5294 if let Some(_) = self.module_name {
5295 return 3;
5296 }
5297 if let Some(_) = self.address {
5298 return 2;
5299 }
5300 if let Some(_) = self.name {
5301 return 1;
5302 }
5303 0
5304 }
5305 }
5306
5307 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
5308 type Borrowed<'a> = &'a Self;
5309 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5310 value
5311 }
5312 }
5313
5314 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
5315 type Owned = Self;
5316
5317 #[inline(always)]
5318 fn inline_align(_context: fidl::encoding::Context) -> usize {
5319 8
5320 }
5321
5322 #[inline(always)]
5323 fn inline_size(_context: fidl::encoding::Context) -> usize {
5324 16
5325 }
5326 }
5327
5328 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
5329 for &NodeSymbol
5330 {
5331 unsafe fn encode(
5332 self,
5333 encoder: &mut fidl::encoding::Encoder<'_, D>,
5334 offset: usize,
5335 mut depth: fidl::encoding::Depth,
5336 ) -> fidl::Result<()> {
5337 encoder.debug_check_bounds::<NodeSymbol>(offset);
5338 let max_ordinal: u64 = self.max_ordinal_present();
5340 encoder.write_num(max_ordinal, offset);
5341 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5342 if max_ordinal == 0 {
5344 return Ok(());
5345 }
5346 depth.increment()?;
5347 let envelope_size = 8;
5348 let bytes_len = max_ordinal as usize * envelope_size;
5349 #[allow(unused_variables)]
5350 let offset = encoder.out_of_line_offset(bytes_len);
5351 let mut _prev_end_offset: usize = 0;
5352 if 1 > max_ordinal {
5353 return Ok(());
5354 }
5355
5356 let cur_offset: usize = (1 - 1) * envelope_size;
5359
5360 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5362
5363 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5368 self.name.as_ref().map(
5369 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5370 ),
5371 encoder,
5372 offset + cur_offset,
5373 depth,
5374 )?;
5375
5376 _prev_end_offset = cur_offset + envelope_size;
5377 if 2 > max_ordinal {
5378 return Ok(());
5379 }
5380
5381 let cur_offset: usize = (2 - 1) * envelope_size;
5384
5385 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5387
5388 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5393 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5394 encoder,
5395 offset + cur_offset,
5396 depth,
5397 )?;
5398
5399 _prev_end_offset = cur_offset + envelope_size;
5400 if 3 > max_ordinal {
5401 return Ok(());
5402 }
5403
5404 let cur_offset: usize = (3 - 1) * envelope_size;
5407
5408 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5410
5411 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5416 self.module_name.as_ref().map(
5417 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5418 ),
5419 encoder,
5420 offset + cur_offset,
5421 depth,
5422 )?;
5423
5424 _prev_end_offset = cur_offset + envelope_size;
5425
5426 Ok(())
5427 }
5428 }
5429
5430 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
5431 #[inline(always)]
5432 fn new_empty() -> Self {
5433 Self::default()
5434 }
5435
5436 unsafe fn decode(
5437 &mut self,
5438 decoder: &mut fidl::encoding::Decoder<'_, D>,
5439 offset: usize,
5440 mut depth: fidl::encoding::Depth,
5441 ) -> fidl::Result<()> {
5442 decoder.debug_check_bounds::<Self>(offset);
5443 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5444 None => return Err(fidl::Error::NotNullable),
5445 Some(len) => len,
5446 };
5447 if len == 0 {
5449 return Ok(());
5450 };
5451 depth.increment()?;
5452 let envelope_size = 8;
5453 let bytes_len = len * envelope_size;
5454 let offset = decoder.out_of_line_offset(bytes_len)?;
5455 let mut _next_ordinal_to_read = 0;
5457 let mut next_offset = offset;
5458 let end_offset = offset + bytes_len;
5459 _next_ordinal_to_read += 1;
5460 if next_offset >= end_offset {
5461 return Ok(());
5462 }
5463
5464 while _next_ordinal_to_read < 1 {
5466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5467 _next_ordinal_to_read += 1;
5468 next_offset += envelope_size;
5469 }
5470
5471 let next_out_of_line = decoder.next_out_of_line();
5472 let handles_before = decoder.remaining_handles();
5473 if let Some((inlined, num_bytes, num_handles)) =
5474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5475 {
5476 let member_inline_size =
5477 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5478 decoder.context,
5479 );
5480 if inlined != (member_inline_size <= 4) {
5481 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5482 }
5483 let inner_offset;
5484 let mut inner_depth = depth.clone();
5485 if inlined {
5486 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5487 inner_offset = next_offset;
5488 } else {
5489 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5490 inner_depth.increment()?;
5491 }
5492 let val_ref = self
5493 .name
5494 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5495 fidl::decode!(
5496 fidl::encoding::BoundedString<128>,
5497 D,
5498 val_ref,
5499 decoder,
5500 inner_offset,
5501 inner_depth
5502 )?;
5503 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5504 {
5505 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5506 }
5507 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5508 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5509 }
5510 }
5511
5512 next_offset += envelope_size;
5513 _next_ordinal_to_read += 1;
5514 if next_offset >= end_offset {
5515 return Ok(());
5516 }
5517
5518 while _next_ordinal_to_read < 2 {
5520 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5521 _next_ordinal_to_read += 1;
5522 next_offset += envelope_size;
5523 }
5524
5525 let next_out_of_line = decoder.next_out_of_line();
5526 let handles_before = decoder.remaining_handles();
5527 if let Some((inlined, num_bytes, num_handles)) =
5528 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5529 {
5530 let member_inline_size =
5531 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5532 if inlined != (member_inline_size <= 4) {
5533 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5534 }
5535 let inner_offset;
5536 let mut inner_depth = depth.clone();
5537 if inlined {
5538 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5539 inner_offset = next_offset;
5540 } else {
5541 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5542 inner_depth.increment()?;
5543 }
5544 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
5545 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5546 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5547 {
5548 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5549 }
5550 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5551 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5552 }
5553 }
5554
5555 next_offset += envelope_size;
5556 _next_ordinal_to_read += 1;
5557 if next_offset >= end_offset {
5558 return Ok(());
5559 }
5560
5561 while _next_ordinal_to_read < 3 {
5563 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5564 _next_ordinal_to_read += 1;
5565 next_offset += envelope_size;
5566 }
5567
5568 let next_out_of_line = decoder.next_out_of_line();
5569 let handles_before = decoder.remaining_handles();
5570 if let Some((inlined, num_bytes, num_handles)) =
5571 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5572 {
5573 let member_inline_size =
5574 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5575 decoder.context,
5576 );
5577 if inlined != (member_inline_size <= 4) {
5578 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5579 }
5580 let inner_offset;
5581 let mut inner_depth = depth.clone();
5582 if inlined {
5583 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5584 inner_offset = next_offset;
5585 } else {
5586 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5587 inner_depth.increment()?;
5588 }
5589 let val_ref = self
5590 .module_name
5591 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5592 fidl::decode!(
5593 fidl::encoding::BoundedString<128>,
5594 D,
5595 val_ref,
5596 decoder,
5597 inner_offset,
5598 inner_depth
5599 )?;
5600 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5601 {
5602 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5603 }
5604 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5605 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5606 }
5607 }
5608
5609 next_offset += envelope_size;
5610
5611 while next_offset < end_offset {
5613 _next_ordinal_to_read += 1;
5614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5615 next_offset += envelope_size;
5616 }
5617
5618 Ok(())
5619 }
5620 }
5621
5622 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
5623 type Borrowed<'a> = &'a Self;
5624 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5625 value
5626 }
5627 }
5628
5629 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
5630 type Owned = Self;
5631
5632 #[inline(always)]
5633 fn inline_align(_context: fidl::encoding::Context) -> usize {
5634 8
5635 }
5636
5637 #[inline(always)]
5638 fn inline_size(_context: fidl::encoding::Context) -> usize {
5639 16
5640 }
5641 }
5642
5643 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
5644 for &DeviceAddress
5645 {
5646 #[inline]
5647 unsafe fn encode(
5648 self,
5649 encoder: &mut fidl::encoding::Encoder<'_, D>,
5650 offset: usize,
5651 _depth: fidl::encoding::Depth,
5652 ) -> fidl::Result<()> {
5653 encoder.debug_check_bounds::<DeviceAddress>(offset);
5654 encoder.write_num::<u64>(self.ordinal(), offset);
5655 match self {
5656 DeviceAddress::IntValue(ref val) => {
5657 fidl::encoding::encode_in_envelope::<u8, D>(
5658 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
5659 encoder, offset + 8, _depth
5660 )
5661 }
5662 DeviceAddress::ArrayIntValue(ref val) => {
5663 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
5664 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
5665 encoder, offset + 8, _depth
5666 )
5667 }
5668 DeviceAddress::CharIntValue(ref val) => {
5669 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
5670 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
5671 encoder, offset + 8, _depth
5672 )
5673 }
5674 DeviceAddress::ArrayCharIntValue(ref val) => {
5675 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
5676 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
5677 encoder, offset + 8, _depth
5678 )
5679 }
5680 DeviceAddress::StringValue(ref val) => {
5681 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
5682 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
5683 encoder, offset + 8, _depth
5684 )
5685 }
5686 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
5687 }
5688 }
5689 }
5690
5691 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
5692 #[inline(always)]
5693 fn new_empty() -> Self {
5694 Self::__SourceBreaking { unknown_ordinal: 0 }
5695 }
5696
5697 #[inline]
5698 unsafe fn decode(
5699 &mut self,
5700 decoder: &mut fidl::encoding::Decoder<'_, D>,
5701 offset: usize,
5702 mut depth: fidl::encoding::Depth,
5703 ) -> fidl::Result<()> {
5704 decoder.debug_check_bounds::<Self>(offset);
5705 #[allow(unused_variables)]
5706 let next_out_of_line = decoder.next_out_of_line();
5707 let handles_before = decoder.remaining_handles();
5708 let (ordinal, inlined, num_bytes, num_handles) =
5709 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5710
5711 let member_inline_size = match ordinal {
5712 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5713 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5714 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5715 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5716 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5717 0 => return Err(fidl::Error::UnknownUnionTag),
5718 _ => num_bytes as usize,
5719 };
5720
5721 if inlined != (member_inline_size <= 4) {
5722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5723 }
5724 let _inner_offset;
5725 if inlined {
5726 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5727 _inner_offset = offset + 8;
5728 } else {
5729 depth.increment()?;
5730 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5731 }
5732 match ordinal {
5733 1 => {
5734 #[allow(irrefutable_let_patterns)]
5735 if let DeviceAddress::IntValue(_) = self {
5736 } else {
5738 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
5740 }
5741 #[allow(irrefutable_let_patterns)]
5742 if let DeviceAddress::IntValue(ref mut val) = self {
5743 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
5744 } else {
5745 unreachable!()
5746 }
5747 }
5748 2 => {
5749 #[allow(irrefutable_let_patterns)]
5750 if let DeviceAddress::ArrayIntValue(_) = self {
5751 } else {
5753 *self = DeviceAddress::ArrayIntValue(
5755 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
5756 );
5757 }
5758 #[allow(irrefutable_let_patterns)]
5759 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
5760 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
5761 } else {
5762 unreachable!()
5763 }
5764 }
5765 3 => {
5766 #[allow(irrefutable_let_patterns)]
5767 if let DeviceAddress::CharIntValue(_) = self {
5768 } else {
5770 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
5772 fidl::encoding::BoundedString<4>,
5773 D
5774 ));
5775 }
5776 #[allow(irrefutable_let_patterns)]
5777 if let DeviceAddress::CharIntValue(ref mut val) = self {
5778 fidl::decode!(
5779 fidl::encoding::BoundedString<4>,
5780 D,
5781 val,
5782 decoder,
5783 _inner_offset,
5784 depth
5785 )?;
5786 } else {
5787 unreachable!()
5788 }
5789 }
5790 4 => {
5791 #[allow(irrefutable_let_patterns)]
5792 if let DeviceAddress::ArrayCharIntValue(_) = self {
5793 } else {
5795 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
5797 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
5798 D
5799 ));
5800 }
5801 #[allow(irrefutable_let_patterns)]
5802 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
5803 fidl::decode!(
5804 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
5805 D,
5806 val,
5807 decoder,
5808 _inner_offset,
5809 depth
5810 )?;
5811 } else {
5812 unreachable!()
5813 }
5814 }
5815 5 => {
5816 #[allow(irrefutable_let_patterns)]
5817 if let DeviceAddress::StringValue(_) = self {
5818 } else {
5820 *self = DeviceAddress::StringValue(fidl::new_empty!(
5822 fidl::encoding::BoundedString<32>,
5823 D
5824 ));
5825 }
5826 #[allow(irrefutable_let_patterns)]
5827 if let DeviceAddress::StringValue(ref mut val) = self {
5828 fidl::decode!(
5829 fidl::encoding::BoundedString<32>,
5830 D,
5831 val,
5832 decoder,
5833 _inner_offset,
5834 depth
5835 )?;
5836 } else {
5837 unreachable!()
5838 }
5839 }
5840 #[allow(deprecated)]
5841 ordinal => {
5842 for _ in 0..num_handles {
5843 decoder.drop_next_handle()?;
5844 }
5845 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
5846 }
5847 }
5848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5849 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5850 }
5851 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5852 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5853 }
5854 Ok(())
5855 }
5856 }
5857
5858 impl fidl::encoding::ValueTypeMarker for NodePropertyKey {
5859 type Borrowed<'a> = &'a Self;
5860 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5861 value
5862 }
5863 }
5864
5865 unsafe impl fidl::encoding::TypeMarker for NodePropertyKey {
5866 type Owned = Self;
5867
5868 #[inline(always)]
5869 fn inline_align(_context: fidl::encoding::Context) -> usize {
5870 8
5871 }
5872
5873 #[inline(always)]
5874 fn inline_size(_context: fidl::encoding::Context) -> usize {
5875 16
5876 }
5877 }
5878
5879 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyKey, D>
5880 for &NodePropertyKey
5881 {
5882 #[inline]
5883 unsafe fn encode(
5884 self,
5885 encoder: &mut fidl::encoding::Encoder<'_, D>,
5886 offset: usize,
5887 _depth: fidl::encoding::Depth,
5888 ) -> fidl::Result<()> {
5889 encoder.debug_check_bounds::<NodePropertyKey>(offset);
5890 encoder.write_num::<u64>(self.ordinal(), offset);
5891 match self {
5892 NodePropertyKey::IntValue(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
5893 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
5894 encoder,
5895 offset + 8,
5896 _depth,
5897 ),
5898 NodePropertyKey::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
5899 fidl::encoding::BoundedString<256>,
5900 D,
5901 >(
5902 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
5903 val,
5904 ),
5905 encoder,
5906 offset + 8,
5907 _depth,
5908 ),
5909 }
5910 }
5911 }
5912
5913 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyKey {
5914 #[inline(always)]
5915 fn new_empty() -> Self {
5916 Self::IntValue(fidl::new_empty!(u32, D))
5917 }
5918
5919 #[inline]
5920 unsafe fn decode(
5921 &mut self,
5922 decoder: &mut fidl::encoding::Decoder<'_, D>,
5923 offset: usize,
5924 mut depth: fidl::encoding::Depth,
5925 ) -> fidl::Result<()> {
5926 decoder.debug_check_bounds::<Self>(offset);
5927 #[allow(unused_variables)]
5928 let next_out_of_line = decoder.next_out_of_line();
5929 let handles_before = decoder.remaining_handles();
5930 let (ordinal, inlined, num_bytes, num_handles) =
5931 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5932
5933 let member_inline_size = match ordinal {
5934 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5935 2 => {
5936 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
5937 decoder.context,
5938 )
5939 }
5940 _ => return Err(fidl::Error::UnknownUnionTag),
5941 };
5942
5943 if inlined != (member_inline_size <= 4) {
5944 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5945 }
5946 let _inner_offset;
5947 if inlined {
5948 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5949 _inner_offset = offset + 8;
5950 } else {
5951 depth.increment()?;
5952 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5953 }
5954 match ordinal {
5955 1 => {
5956 #[allow(irrefutable_let_patterns)]
5957 if let NodePropertyKey::IntValue(_) = self {
5958 } else {
5960 *self = NodePropertyKey::IntValue(fidl::new_empty!(u32, D));
5962 }
5963 #[allow(irrefutable_let_patterns)]
5964 if let NodePropertyKey::IntValue(ref mut val) = self {
5965 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
5966 } else {
5967 unreachable!()
5968 }
5969 }
5970 2 => {
5971 #[allow(irrefutable_let_patterns)]
5972 if let NodePropertyKey::StringValue(_) = self {
5973 } else {
5975 *self = NodePropertyKey::StringValue(fidl::new_empty!(
5977 fidl::encoding::BoundedString<256>,
5978 D
5979 ));
5980 }
5981 #[allow(irrefutable_let_patterns)]
5982 if let NodePropertyKey::StringValue(ref mut val) = self {
5983 fidl::decode!(
5984 fidl::encoding::BoundedString<256>,
5985 D,
5986 val,
5987 decoder,
5988 _inner_offset,
5989 depth
5990 )?;
5991 } else {
5992 unreachable!()
5993 }
5994 }
5995 ordinal => panic!("unexpected ordinal {:?}", ordinal),
5996 }
5997 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5998 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5999 }
6000 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6001 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6002 }
6003 Ok(())
6004 }
6005 }
6006
6007 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
6008 type Borrowed<'a> = &'a Self;
6009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6010 value
6011 }
6012 }
6013
6014 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
6015 type Owned = Self;
6016
6017 #[inline(always)]
6018 fn inline_align(_context: fidl::encoding::Context) -> usize {
6019 8
6020 }
6021
6022 #[inline(always)]
6023 fn inline_size(_context: fidl::encoding::Context) -> usize {
6024 16
6025 }
6026 }
6027
6028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
6029 for &NodePropertyValue
6030 {
6031 #[inline]
6032 unsafe fn encode(
6033 self,
6034 encoder: &mut fidl::encoding::Encoder<'_, D>,
6035 offset: usize,
6036 _depth: fidl::encoding::Depth,
6037 ) -> fidl::Result<()> {
6038 encoder.debug_check_bounds::<NodePropertyValue>(offset);
6039 encoder.write_num::<u64>(self.ordinal(), offset);
6040 match self {
6041 NodePropertyValue::IntValue(ref val) => {
6042 fidl::encoding::encode_in_envelope::<u32, D>(
6043 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6044 encoder,
6045 offset + 8,
6046 _depth,
6047 )
6048 }
6049 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
6050 fidl::encoding::BoundedString<256>,
6051 D,
6052 >(
6053 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
6054 val,
6055 ),
6056 encoder,
6057 offset + 8,
6058 _depth,
6059 ),
6060 NodePropertyValue::BoolValue(ref val) => {
6061 fidl::encoding::encode_in_envelope::<bool, D>(
6062 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
6063 encoder,
6064 offset + 8,
6065 _depth,
6066 )
6067 }
6068 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
6069 fidl::encoding::BoundedString<256>,
6070 D,
6071 >(
6072 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
6073 val,
6074 ),
6075 encoder,
6076 offset + 8,
6077 _depth,
6078 ),
6079 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6080 }
6081 }
6082 }
6083
6084 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
6085 #[inline(always)]
6086 fn new_empty() -> Self {
6087 Self::__SourceBreaking { unknown_ordinal: 0 }
6088 }
6089
6090 #[inline]
6091 unsafe fn decode(
6092 &mut self,
6093 decoder: &mut fidl::encoding::Decoder<'_, D>,
6094 offset: usize,
6095 mut depth: fidl::encoding::Depth,
6096 ) -> fidl::Result<()> {
6097 decoder.debug_check_bounds::<Self>(offset);
6098 #[allow(unused_variables)]
6099 let next_out_of_line = decoder.next_out_of_line();
6100 let handles_before = decoder.remaining_handles();
6101 let (ordinal, inlined, num_bytes, num_handles) =
6102 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6103
6104 let member_inline_size = match ordinal {
6105 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6106 2 => {
6107 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6108 decoder.context,
6109 )
6110 }
6111 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6112 4 => {
6113 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6114 decoder.context,
6115 )
6116 }
6117 0 => return Err(fidl::Error::UnknownUnionTag),
6118 _ => num_bytes as usize,
6119 };
6120
6121 if inlined != (member_inline_size <= 4) {
6122 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6123 }
6124 let _inner_offset;
6125 if inlined {
6126 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6127 _inner_offset = offset + 8;
6128 } else {
6129 depth.increment()?;
6130 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6131 }
6132 match ordinal {
6133 1 => {
6134 #[allow(irrefutable_let_patterns)]
6135 if let NodePropertyValue::IntValue(_) = self {
6136 } else {
6138 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
6140 }
6141 #[allow(irrefutable_let_patterns)]
6142 if let NodePropertyValue::IntValue(ref mut val) = self {
6143 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
6144 } else {
6145 unreachable!()
6146 }
6147 }
6148 2 => {
6149 #[allow(irrefutable_let_patterns)]
6150 if let NodePropertyValue::StringValue(_) = self {
6151 } else {
6153 *self = NodePropertyValue::StringValue(fidl::new_empty!(
6155 fidl::encoding::BoundedString<256>,
6156 D
6157 ));
6158 }
6159 #[allow(irrefutable_let_patterns)]
6160 if let NodePropertyValue::StringValue(ref mut val) = self {
6161 fidl::decode!(
6162 fidl::encoding::BoundedString<256>,
6163 D,
6164 val,
6165 decoder,
6166 _inner_offset,
6167 depth
6168 )?;
6169 } else {
6170 unreachable!()
6171 }
6172 }
6173 3 => {
6174 #[allow(irrefutable_let_patterns)]
6175 if let NodePropertyValue::BoolValue(_) = self {
6176 } else {
6178 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
6180 }
6181 #[allow(irrefutable_let_patterns)]
6182 if let NodePropertyValue::BoolValue(ref mut val) = self {
6183 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
6184 } else {
6185 unreachable!()
6186 }
6187 }
6188 4 => {
6189 #[allow(irrefutable_let_patterns)]
6190 if let NodePropertyValue::EnumValue(_) = self {
6191 } else {
6193 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
6195 fidl::encoding::BoundedString<256>,
6196 D
6197 ));
6198 }
6199 #[allow(irrefutable_let_patterns)]
6200 if let NodePropertyValue::EnumValue(ref mut val) = self {
6201 fidl::decode!(
6202 fidl::encoding::BoundedString<256>,
6203 D,
6204 val,
6205 decoder,
6206 _inner_offset,
6207 depth
6208 )?;
6209 } else {
6210 unreachable!()
6211 }
6212 }
6213 #[allow(deprecated)]
6214 ordinal => {
6215 for _ in 0..num_handles {
6216 decoder.drop_next_handle()?;
6217 }
6218 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
6219 }
6220 }
6221 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6223 }
6224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6226 }
6227 Ok(())
6228 }
6229 }
6230
6231 impl fidl::encoding::ValueTypeMarker for Offer {
6232 type Borrowed<'a> = &'a Self;
6233 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6234 value
6235 }
6236 }
6237
6238 unsafe impl fidl::encoding::TypeMarker for Offer {
6239 type Owned = Self;
6240
6241 #[inline(always)]
6242 fn inline_align(_context: fidl::encoding::Context) -> usize {
6243 8
6244 }
6245
6246 #[inline(always)]
6247 fn inline_size(_context: fidl::encoding::Context) -> usize {
6248 16
6249 }
6250 }
6251
6252 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
6253 #[inline]
6254 unsafe fn encode(
6255 self,
6256 encoder: &mut fidl::encoding::Encoder<'_, D>,
6257 offset: usize,
6258 _depth: fidl::encoding::Depth,
6259 ) -> fidl::Result<()> {
6260 encoder.debug_check_bounds::<Offer>(offset);
6261 encoder.write_num::<u64>(self.ordinal(), offset);
6262 match self {
6263 Offer::ZirconTransport(ref val) => {
6264 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
6265 <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
6266 encoder, offset + 8, _depth
6267 )
6268 }
6269 Offer::DriverTransport(ref val) => {
6270 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
6271 <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
6272 encoder, offset + 8, _depth
6273 )
6274 }
6275 Offer::DictionaryOffer(ref val) => {
6276 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl__common::Offer, D>(
6277 <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
6278 encoder, offset + 8, _depth
6279 )
6280 }
6281 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6282 }
6283 }
6284 }
6285
6286 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
6287 #[inline(always)]
6288 fn new_empty() -> Self {
6289 Self::__SourceBreaking { unknown_ordinal: 0 }
6290 }
6291
6292 #[inline]
6293 unsafe fn decode(
6294 &mut self,
6295 decoder: &mut fidl::encoding::Decoder<'_, D>,
6296 offset: usize,
6297 mut depth: fidl::encoding::Depth,
6298 ) -> fidl::Result<()> {
6299 decoder.debug_check_bounds::<Self>(offset);
6300 #[allow(unused_variables)]
6301 let next_out_of_line = decoder.next_out_of_line();
6302 let handles_before = decoder.remaining_handles();
6303 let (ordinal, inlined, num_bytes, num_handles) =
6304 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6305
6306 let member_inline_size = match ordinal {
6307 1 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6308 2 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6309 3 => <fidl_fuchsia_component_decl__common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6310 0 => return Err(fidl::Error::UnknownUnionTag),
6311 _ => num_bytes as usize,
6312 };
6313
6314 if inlined != (member_inline_size <= 4) {
6315 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6316 }
6317 let _inner_offset;
6318 if inlined {
6319 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6320 _inner_offset = offset + 8;
6321 } else {
6322 depth.increment()?;
6323 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6324 }
6325 match ordinal {
6326 1 => {
6327 #[allow(irrefutable_let_patterns)]
6328 if let Offer::ZirconTransport(_) = self {
6329 } else {
6331 *self = Offer::ZirconTransport(fidl::new_empty!(
6333 fidl_fuchsia_component_decl__common::Offer,
6334 D
6335 ));
6336 }
6337 #[allow(irrefutable_let_patterns)]
6338 if let Offer::ZirconTransport(ref mut val) = self {
6339 fidl::decode!(
6340 fidl_fuchsia_component_decl__common::Offer,
6341 D,
6342 val,
6343 decoder,
6344 _inner_offset,
6345 depth
6346 )?;
6347 } else {
6348 unreachable!()
6349 }
6350 }
6351 2 => {
6352 #[allow(irrefutable_let_patterns)]
6353 if let Offer::DriverTransport(_) = self {
6354 } else {
6356 *self = Offer::DriverTransport(fidl::new_empty!(
6358 fidl_fuchsia_component_decl__common::Offer,
6359 D
6360 ));
6361 }
6362 #[allow(irrefutable_let_patterns)]
6363 if let Offer::DriverTransport(ref mut val) = self {
6364 fidl::decode!(
6365 fidl_fuchsia_component_decl__common::Offer,
6366 D,
6367 val,
6368 decoder,
6369 _inner_offset,
6370 depth
6371 )?;
6372 } else {
6373 unreachable!()
6374 }
6375 }
6376 3 => {
6377 #[allow(irrefutable_let_patterns)]
6378 if let Offer::DictionaryOffer(_) = self {
6379 } else {
6381 *self = Offer::DictionaryOffer(fidl::new_empty!(
6383 fidl_fuchsia_component_decl__common::Offer,
6384 D
6385 ));
6386 }
6387 #[allow(irrefutable_let_patterns)]
6388 if let Offer::DictionaryOffer(ref mut val) = self {
6389 fidl::decode!(
6390 fidl_fuchsia_component_decl__common::Offer,
6391 D,
6392 val,
6393 decoder,
6394 _inner_offset,
6395 depth
6396 )?;
6397 } else {
6398 unreachable!()
6399 }
6400 }
6401 #[allow(deprecated)]
6402 ordinal => {
6403 for _ in 0..num_handles {
6404 decoder.drop_next_handle()?;
6405 }
6406 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
6407 }
6408 }
6409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6411 }
6412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6414 }
6415 Ok(())
6416 }
6417 }
6418}