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