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