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