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