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