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