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 type ResourceName = String;
36
37pub type ResourceProperties = Vec<NodeProperty2>;
38
39pub type ResourcePropertyValue = NodePropertyValue;
40
41pub type ResourcePropertyValueBool = bool;
42
43pub type ResourcePropertyValueString = String;
44
45pub type ResourcePropertyValueUint = u32;
46
47pub const MAX_DEVICE_ADDRESS_ARRAY_LEN: u32 = 10;
48
49pub const MAX_DEVICE_ADDRESS_STR_LEN: u32 = 32;
50
51pub const MAX_DRIVER_HOST_LENGTH: u8 = 128;
52
53pub const MAX_MODULE_NAME_LENGTH: u8 = 128;
54
55pub const MAX_NAMESPACE_COUNT: u32 =
56 fidl_fuchsia_component_runner_common::MAX_NAMESPACE_COUNT as u32;
57
58pub const MAX_NODE_NAME_LENGTH: u8 = 128;
59
60pub const MAX_OFFER_COUNT: u32 = fidl_fuchsia_component_common::MAX_DYNAMIC_OFFER_COUNT as u32;
61
62pub const MAX_PROPERTY_COUNT: u8 = 64;
63
64pub const MAX_RESOURCE_NAME_LENGTH: u8 = 128;
65
66pub const MAX_SYMBOL_COUNT: u8 = 64;
67
68pub const MAX_SYMBOL_NAME_LENGTH: u8 = 128;
69
70#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
71pub enum BusType {
72 Platform,
73 Acpi,
74 DeviceTree,
75 Pci,
76 Usb,
77 Gpio,
78 I2C,
79 Spi,
80 Sdio,
81 Uart,
82 Spmi,
83 UsbPeripheral,
84 Virtio,
85 #[doc(hidden)]
86 __SourceBreaking {
87 unknown_ordinal: u32,
88 },
89}
90
91#[macro_export]
93macro_rules! BusTypeUnknown {
94 () => {
95 _
96 };
97}
98
99impl BusType {
100 #[inline]
101 pub fn from_primitive(prim: u32) -> Option<Self> {
102 match prim {
103 1 => Some(Self::Platform),
104 2 => Some(Self::Acpi),
105 3 => Some(Self::DeviceTree),
106 4 => Some(Self::Pci),
107 5 => Some(Self::Usb),
108 6 => Some(Self::Gpio),
109 7 => Some(Self::I2C),
110 8 => Some(Self::Spi),
111 9 => Some(Self::Sdio),
112 10 => Some(Self::Uart),
113 11 => Some(Self::Spmi),
114 12 => Some(Self::UsbPeripheral),
115 13 => Some(Self::Virtio),
116 _ => None,
117 }
118 }
119
120 #[inline]
121 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
122 match prim {
123 1 => Self::Platform,
124 2 => Self::Acpi,
125 3 => Self::DeviceTree,
126 4 => Self::Pci,
127 5 => Self::Usb,
128 6 => Self::Gpio,
129 7 => Self::I2C,
130 8 => Self::Spi,
131 9 => Self::Sdio,
132 10 => Self::Uart,
133 11 => Self::Spmi,
134 12 => Self::UsbPeripheral,
135 13 => Self::Virtio,
136 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
137 }
138 }
139
140 #[inline]
141 pub fn unknown() -> Self {
142 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
143 }
144
145 #[inline]
146 pub const fn into_primitive(self) -> u32 {
147 match self {
148 Self::Platform => 1,
149 Self::Acpi => 2,
150 Self::DeviceTree => 3,
151 Self::Pci => 4,
152 Self::Usb => 5,
153 Self::Gpio => 6,
154 Self::I2C => 7,
155 Self::Spi => 8,
156 Self::Sdio => 9,
157 Self::Uart => 10,
158 Self::Spmi => 11,
159 Self::UsbPeripheral => 12,
160 Self::Virtio => 13,
161 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
162 }
163 }
164
165 #[inline]
166 pub fn is_unknown(&self) -> bool {
167 match self {
168 Self::__SourceBreaking { unknown_ordinal: _ } => true,
169 _ => false,
170 }
171 }
172}
173
174#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
176pub enum CompositeNodeSpecError {
177 MissingArgs,
179 EmptyNodes,
181 AlreadyExists,
184 DriverIndexFailure,
186 DuplicateParents,
188 #[doc(hidden)]
189 __SourceBreaking { unknown_ordinal: u32 },
190}
191
192#[macro_export]
194macro_rules! CompositeNodeSpecErrorUnknown {
195 () => {
196 _
197 };
198}
199
200impl CompositeNodeSpecError {
201 #[inline]
202 pub fn from_primitive(prim: u32) -> Option<Self> {
203 match prim {
204 1 => Some(Self::MissingArgs),
205 2 => Some(Self::EmptyNodes),
206 3 => Some(Self::AlreadyExists),
207 4 => Some(Self::DriverIndexFailure),
208 5 => Some(Self::DuplicateParents),
209 _ => None,
210 }
211 }
212
213 #[inline]
214 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
215 match prim {
216 1 => Self::MissingArgs,
217 2 => Self::EmptyNodes,
218 3 => Self::AlreadyExists,
219 4 => Self::DriverIndexFailure,
220 5 => Self::DuplicateParents,
221 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
222 }
223 }
224
225 #[inline]
226 pub fn unknown() -> Self {
227 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
228 }
229
230 #[inline]
231 pub const fn into_primitive(self) -> u32 {
232 match self {
233 Self::MissingArgs => 1,
234 Self::EmptyNodes => 2,
235 Self::AlreadyExists => 3,
236 Self::DriverIndexFailure => 4,
237 Self::DuplicateParents => 5,
238 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
239 }
240 }
241
242 #[inline]
243 pub fn is_unknown(&self) -> bool {
244 match self {
245 Self::__SourceBreaking { unknown_ordinal: _ } => true,
246 _ => false,
247 }
248 }
249}
250
251#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
253#[repr(u32)]
254pub enum Condition {
255 Unknown = 0,
256 Accept = 1,
257 Reject = 2,
258}
259
260impl Condition {
261 #[inline]
262 pub fn from_primitive(prim: u32) -> Option<Self> {
263 match prim {
264 0 => Some(Self::Unknown),
265 1 => Some(Self::Accept),
266 2 => Some(Self::Reject),
267 _ => None,
268 }
269 }
270
271 #[inline]
272 pub const fn into_primitive(self) -> u32 {
273 self as u32
274 }
275}
276
277#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
278pub enum DeviceAddressStability {
279 UnstableBetweenDriverRestart,
281 UnstableBetweenBoot,
283 UnstableBetweenSoftwareUpdate,
285 Stable,
287 #[doc(hidden)]
288 __SourceBreaking { unknown_ordinal: u32 },
289}
290
291#[macro_export]
293macro_rules! DeviceAddressStabilityUnknown {
294 () => {
295 _
296 };
297}
298
299impl DeviceAddressStability {
300 #[inline]
301 pub fn from_primitive(prim: u32) -> Option<Self> {
302 match prim {
303 0 => Some(Self::UnstableBetweenDriverRestart),
304 1 => Some(Self::UnstableBetweenBoot),
305 2 => Some(Self::UnstableBetweenSoftwareUpdate),
306 3 => Some(Self::Stable),
307 _ => None,
308 }
309 }
310
311 #[inline]
312 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
313 match prim {
314 0 => Self::UnstableBetweenDriverRestart,
315 1 => Self::UnstableBetweenBoot,
316 2 => Self::UnstableBetweenSoftwareUpdate,
317 3 => Self::Stable,
318 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
319 }
320 }
321
322 #[inline]
323 pub fn unknown() -> Self {
324 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
325 }
326
327 #[inline]
328 pub const fn into_primitive(self) -> u32 {
329 match self {
330 Self::UnstableBetweenDriverRestart => 0,
331 Self::UnstableBetweenBoot => 1,
332 Self::UnstableBetweenSoftwareUpdate => 2,
333 Self::Stable => 3,
334 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
335 }
336 }
337
338 #[inline]
339 pub fn is_unknown(&self) -> bool {
340 match self {
341 Self::__SourceBreaking { unknown_ordinal: _ } => true,
342 _ => false,
343 }
344 }
345}
346
347#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
351pub enum DriverPackageType {
352 Boot,
354 Base,
356 Cached,
359 Universe,
361 #[doc(hidden)]
362 __SourceBreaking { unknown_ordinal: u8 },
363}
364
365#[macro_export]
367macro_rules! DriverPackageTypeUnknown {
368 () => {
369 _
370 };
371}
372
373impl DriverPackageType {
374 #[inline]
375 pub fn from_primitive(prim: u8) -> Option<Self> {
376 match prim {
377 0 => Some(Self::Boot),
378 1 => Some(Self::Base),
379 2 => Some(Self::Cached),
380 3 => Some(Self::Universe),
381 _ => None,
382 }
383 }
384
385 #[inline]
386 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
387 match prim {
388 0 => Self::Boot,
389 1 => Self::Base,
390 2 => Self::Cached,
391 3 => Self::Universe,
392 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
393 }
394 }
395
396 #[inline]
397 pub fn unknown() -> Self {
398 Self::__SourceBreaking { unknown_ordinal: 0xff }
399 }
400
401 #[inline]
402 pub const fn into_primitive(self) -> u8 {
403 match self {
404 Self::Boot => 0,
405 Self::Base => 1,
406 Self::Cached => 2,
407 Self::Universe => 3,
408 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
409 }
410 }
411
412 #[inline]
413 pub fn is_unknown(&self) -> bool {
414 match self {
415 Self::__SourceBreaking { unknown_ordinal: _ } => true,
416 _ => false,
417 }
418 }
419}
420
421#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
423pub enum NodeError {
424 Internal,
425 NodeRemoved,
426 NameMissing,
427 NameInvalid,
430 NameAlreadyExists,
432 OfferSourceNameMissing,
434 OfferRefExists,
436 SymbolNameMissing,
438 SymbolAddressMissing,
440 SymbolAlreadyExists,
442 UnbindChildrenInProgress,
444 UnsupportedArgs,
446 DuplicatePropertyKeys,
448 OfferSourceInstanceFilterMissing,
450 OfferRenamedInstancesMissing,
452 #[doc(hidden)]
453 __SourceBreaking {
454 unknown_ordinal: u32,
455 },
456}
457
458#[macro_export]
460macro_rules! NodeErrorUnknown {
461 () => {
462 _
463 };
464}
465
466impl NodeError {
467 #[inline]
468 pub fn from_primitive(prim: u32) -> Option<Self> {
469 match prim {
470 1 => Some(Self::Internal),
471 2 => Some(Self::NodeRemoved),
472 3 => Some(Self::NameMissing),
473 4 => Some(Self::NameInvalid),
474 5 => Some(Self::NameAlreadyExists),
475 6 => Some(Self::OfferSourceNameMissing),
476 7 => Some(Self::OfferRefExists),
477 8 => Some(Self::SymbolNameMissing),
478 9 => Some(Self::SymbolAddressMissing),
479 10 => Some(Self::SymbolAlreadyExists),
480 11 => Some(Self::UnbindChildrenInProgress),
481 12 => Some(Self::UnsupportedArgs),
482 13 => Some(Self::DuplicatePropertyKeys),
483 14 => Some(Self::OfferSourceInstanceFilterMissing),
484 15 => Some(Self::OfferRenamedInstancesMissing),
485 _ => None,
486 }
487 }
488
489 #[inline]
490 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
491 match prim {
492 1 => Self::Internal,
493 2 => Self::NodeRemoved,
494 3 => Self::NameMissing,
495 4 => Self::NameInvalid,
496 5 => Self::NameAlreadyExists,
497 6 => Self::OfferSourceNameMissing,
498 7 => Self::OfferRefExists,
499 8 => Self::SymbolNameMissing,
500 9 => Self::SymbolAddressMissing,
501 10 => Self::SymbolAlreadyExists,
502 11 => Self::UnbindChildrenInProgress,
503 12 => Self::UnsupportedArgs,
504 13 => Self::DuplicatePropertyKeys,
505 14 => Self::OfferSourceInstanceFilterMissing,
506 15 => Self::OfferRenamedInstancesMissing,
507 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
508 }
509 }
510
511 #[inline]
512 pub fn unknown() -> Self {
513 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
514 }
515
516 #[inline]
517 pub const fn into_primitive(self) -> u32 {
518 match self {
519 Self::Internal => 1,
520 Self::NodeRemoved => 2,
521 Self::NameMissing => 3,
522 Self::NameInvalid => 4,
523 Self::NameAlreadyExists => 5,
524 Self::OfferSourceNameMissing => 6,
525 Self::OfferRefExists => 7,
526 Self::SymbolNameMissing => 8,
527 Self::SymbolAddressMissing => 9,
528 Self::SymbolAlreadyExists => 10,
529 Self::UnbindChildrenInProgress => 11,
530 Self::UnsupportedArgs => 12,
531 Self::DuplicatePropertyKeys => 13,
532 Self::OfferSourceInstanceFilterMissing => 14,
533 Self::OfferRenamedInstancesMissing => 15,
534 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
535 }
536 }
537
538 #[inline]
539 pub fn is_unknown(&self) -> bool {
540 match self {
541 Self::__SourceBreaking { unknown_ordinal: _ } => true,
542 _ => false,
543 }
544 }
545}
546
547#[derive(Clone, Debug, PartialEq)]
549pub struct BindRule {
550 pub key: NodePropertyKey,
552 pub condition: Condition,
556 pub values: Vec<NodePropertyValue>,
559}
560
561impl fidl::Persistable for BindRule {}
562
563#[derive(Clone, Debug, PartialEq)]
565pub struct BindRule2 {
566 pub key: String,
568 pub condition: Condition,
572 pub values: Vec<NodePropertyValue>,
575}
576
577impl fidl::Persistable for BindRule2 {}
578
579#[derive(Clone, Debug, PartialEq)]
582pub struct NodeProperty {
583 pub key: NodePropertyKey,
586 pub value: NodePropertyValue,
588}
589
590impl fidl::Persistable for NodeProperty {}
591
592#[derive(Clone, Debug, PartialEq)]
593pub struct NodeProperty2 {
594 pub key: String,
596 pub value: NodePropertyValue,
598}
599
600impl fidl::Persistable for NodeProperty2 {}
601
602#[derive(Clone, Debug, PartialEq)]
604pub struct NodePropertyEntry {
605 pub name: String,
607 pub properties: Vec<NodeProperty>,
611}
612
613impl fidl::Persistable for NodePropertyEntry {}
614
615#[derive(Clone, Debug, PartialEq)]
617pub struct NodePropertyEntry2 {
618 pub name: String,
620 pub properties: Vec<NodeProperty2>,
624}
625
626impl fidl::Persistable for NodePropertyEntry2 {}
627
628#[derive(Clone, Debug, PartialEq)]
631pub struct ParentSpec {
632 pub bind_rules: Vec<BindRule>,
634 pub properties: Vec<NodeProperty>,
637}
638
639impl fidl::Persistable for ParentSpec {}
640
641#[derive(Clone, Debug, PartialEq)]
644pub struct ParentSpec2 {
645 pub bind_rules: Vec<BindRule2>,
647 pub properties: Vec<NodeProperty2>,
650}
651
652impl fidl::Persistable for ParentSpec2 {}
653
654#[derive(Clone, Debug, PartialEq)]
655pub struct ResourceProperty {
656 pub key: String,
658 pub value: NodePropertyValue,
660}
661
662impl fidl::Persistable for ResourceProperty {}
663
664#[derive(Clone, Debug, Default, PartialEq)]
665pub struct BusInfo {
666 pub bus: Option<BusType>,
668 pub address: Option<DeviceAddress>,
670 pub address_stability: Option<DeviceAddressStability>,
672 #[doc(hidden)]
673 pub __source_breaking: fidl::marker::SourceBreaking,
674}
675
676impl fidl::Persistable for BusInfo {}
677
678#[derive(Clone, Debug, Default, PartialEq)]
680pub struct CompositeDriverInfo {
681 pub composite_name: Option<String>,
683 pub driver_info: Option<DriverInfo>,
685 #[doc(hidden)]
686 pub __source_breaking: fidl::marker::SourceBreaking,
687}
688
689impl fidl::Persistable for CompositeDriverInfo {}
690
691#[derive(Clone, Debug, Default, PartialEq)]
693pub struct CompositeDriverMatch {
694 pub composite_driver: Option<CompositeDriverInfo>,
696 pub parent_names: Option<Vec<String>>,
699 pub primary_parent_index: Option<u32>,
702 #[doc(hidden)]
703 pub __source_breaking: fidl::marker::SourceBreaking,
704}
705
706impl fidl::Persistable for CompositeDriverMatch {}
707
708#[derive(Clone, Debug, Default, PartialEq)]
710pub struct CompositeInfo {
711 pub spec: Option<CompositeNodeSpec>,
713 pub matched_driver: Option<CompositeDriverMatch>,
716 #[doc(hidden)]
717 pub __source_breaking: fidl::marker::SourceBreaking,
718}
719
720impl fidl::Persistable for CompositeInfo {}
721
722#[derive(Clone, Debug, Default, PartialEq)]
724pub struct CompositeNodeSpec {
725 pub name: Option<String>,
727 pub parents: Option<Vec<ParentSpec>>,
730 pub parents2: Option<Vec<ParentSpec2>>,
733 pub driver_host: Option<String>,
738 #[doc(hidden)]
739 pub __source_breaking: fidl::marker::SourceBreaking,
740}
741
742impl fidl::Persistable for CompositeNodeSpec {}
743
744#[derive(Clone, Debug, Default, PartialEq)]
746pub struct CompositeParent {
747 pub composite: Option<CompositeInfo>,
749 pub index: Option<u32>,
751 #[doc(hidden)]
752 pub __source_breaking: fidl::marker::SourceBreaking,
753}
754
755impl fidl::Persistable for CompositeParent {}
756
757#[derive(Clone, Debug, Default, PartialEq)]
760pub struct Dependency {
761 pub selector: Option<Selector>,
763 pub tags: Option<Vec<ResourceProperty>>,
765 #[doc(hidden)]
766 pub __source_breaking: fidl::marker::SourceBreaking,
767}
768
769impl fidl::Persistable for Dependency {}
770
771#[derive(Clone, Debug, Default, PartialEq)]
773pub struct DeviceCategory {
774 pub category: Option<String>,
775 pub subcategory: Option<String>,
776 #[doc(hidden)]
777 pub __source_breaking: fidl::marker::SourceBreaking,
778}
779
780impl fidl::Persistable for DeviceCategory {}
781
782#[derive(Clone, Debug, Default, PartialEq)]
784pub struct DriverInfo {
785 pub url: Option<String>,
787 pub name: Option<String>,
790 pub colocate: Option<bool>,
792 pub package_type: Option<DriverPackageType>,
794 pub is_fallback: Option<bool>,
798 pub device_categories: Option<Vec<DeviceCategory>>,
800 pub bind_rules_bytecode: Option<Vec<u8>>,
804 pub driver_framework_version: Option<u8>,
808 pub is_disabled: Option<bool>,
810 #[doc(hidden)]
811 pub __source_breaking: fidl::marker::SourceBreaking,
812}
813
814impl fidl::Persistable for DriverInfo {}
815
816#[derive(Clone, Debug, Default, PartialEq)]
819pub struct Node2 {
820 pub name: Option<String>,
821 pub dependencies: Option<Vec<Dependency>>,
822 #[doc(hidden)]
823 pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for Node2 {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
829pub struct NodeControllerRequestBindRequest {
830 pub force_rebind: Option<bool>,
833 pub driver_url_suffix: Option<String>,
837 #[doc(hidden)]
838 pub __source_breaking: fidl::marker::SourceBreaking,
839}
840
841impl fidl::Persistable for NodeControllerRequestBindRequest {}
842
843#[derive(Clone, Debug, Default, PartialEq)]
846pub struct NodeSymbol {
847 pub name: Option<String>,
849 pub address: Option<u64>,
851 pub module_name: Option<String>,
854 #[doc(hidden)]
855 pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for NodeSymbol {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
862pub struct Selector {
863 pub offers: Option<Vec<Offer>>,
865 pub include_properties: Option<Vec<ResourceProperty>>,
868 pub exclude_properties: Option<Vec<ResourceProperty>>,
870 #[doc(hidden)]
871 pub __source_breaking: fidl::marker::SourceBreaking,
872}
873
874impl fidl::Persistable for Selector {}
875
876#[derive(Clone, Debug)]
877pub enum DeviceAddress {
878 IntValue(u8),
880 ArrayIntValue(Vec<u8>),
882 CharIntValue(String),
884 ArrayCharIntValue(Vec<String>),
886 StringValue(String),
888 #[doc(hidden)]
889 __SourceBreaking { unknown_ordinal: u64 },
890}
891
892#[macro_export]
894macro_rules! DeviceAddressUnknown {
895 () => {
896 _
897 };
898}
899
900impl PartialEq for DeviceAddress {
902 fn eq(&self, other: &Self) -> bool {
903 match (self, other) {
904 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
905 (Self::ArrayIntValue(x), Self::ArrayIntValue(y)) => *x == *y,
906 (Self::CharIntValue(x), Self::CharIntValue(y)) => *x == *y,
907 (Self::ArrayCharIntValue(x), Self::ArrayCharIntValue(y)) => *x == *y,
908 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
909 _ => false,
910 }
911 }
912}
913
914impl DeviceAddress {
915 #[inline]
916 pub fn ordinal(&self) -> u64 {
917 match *self {
918 Self::IntValue(_) => 1,
919 Self::ArrayIntValue(_) => 2,
920 Self::CharIntValue(_) => 3,
921 Self::ArrayCharIntValue(_) => 4,
922 Self::StringValue(_) => 5,
923 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
924 }
925 }
926
927 #[inline]
928 pub fn unknown_variant_for_testing() -> Self {
929 Self::__SourceBreaking { unknown_ordinal: 0 }
930 }
931
932 #[inline]
933 pub fn is_unknown(&self) -> bool {
934 match self {
935 Self::__SourceBreaking { .. } => true,
936 _ => false,
937 }
938 }
939}
940
941impl fidl::Persistable for DeviceAddress {}
942
943#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
944pub enum NodePropertyKey {
945 IntValue(u32),
947 StringValue(String),
948}
949
950impl NodePropertyKey {
951 #[inline]
952 pub fn ordinal(&self) -> u64 {
953 match *self {
954 Self::IntValue(_) => 1,
955 Self::StringValue(_) => 2,
956 }
957 }
958}
959
960impl fidl::Persistable for NodePropertyKey {}
961
962#[derive(Clone, Debug)]
963pub enum NodePropertyValue {
964 IntValue(u32),
965 StringValue(String),
966 BoolValue(bool),
967 EnumValue(String),
968 #[doc(hidden)]
969 __SourceBreaking {
970 unknown_ordinal: u64,
971 },
972}
973
974#[macro_export]
976macro_rules! NodePropertyValueUnknown {
977 () => {
978 _
979 };
980}
981
982impl PartialEq for NodePropertyValue {
984 fn eq(&self, other: &Self) -> bool {
985 match (self, other) {
986 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
987 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
988 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
989 (Self::EnumValue(x), Self::EnumValue(y)) => *x == *y,
990 _ => false,
991 }
992 }
993}
994
995impl NodePropertyValue {
996 #[inline]
997 pub fn ordinal(&self) -> u64 {
998 match *self {
999 Self::IntValue(_) => 1,
1000 Self::StringValue(_) => 2,
1001 Self::BoolValue(_) => 3,
1002 Self::EnumValue(_) => 4,
1003 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1004 }
1005 }
1006
1007 #[inline]
1008 pub fn unknown_variant_for_testing() -> Self {
1009 Self::__SourceBreaking { unknown_ordinal: 0 }
1010 }
1011
1012 #[inline]
1013 pub fn is_unknown(&self) -> bool {
1014 match self {
1015 Self::__SourceBreaking { .. } => true,
1016 _ => false,
1017 }
1018 }
1019}
1020
1021impl fidl::Persistable for NodePropertyValue {}
1022
1023#[derive(Clone, Debug)]
1024pub enum Offer {
1025 ZirconTransport(fidl_fuchsia_component_decl_common::Offer),
1026 DriverTransport(fidl_fuchsia_component_decl_common::Offer),
1027 DictionaryOffer(fidl_fuchsia_component_decl_common::Offer),
1030 #[doc(hidden)]
1031 __SourceBreaking {
1032 unknown_ordinal: u64,
1033 },
1034}
1035
1036#[macro_export]
1038macro_rules! OfferUnknown {
1039 () => {
1040 _
1041 };
1042}
1043
1044impl PartialEq for Offer {
1046 fn eq(&self, other: &Self) -> bool {
1047 match (self, other) {
1048 (Self::ZirconTransport(x), Self::ZirconTransport(y)) => *x == *y,
1049 (Self::DriverTransport(x), Self::DriverTransport(y)) => *x == *y,
1050 (Self::DictionaryOffer(x), Self::DictionaryOffer(y)) => *x == *y,
1051 _ => false,
1052 }
1053 }
1054}
1055
1056impl Offer {
1057 #[inline]
1058 pub fn ordinal(&self) -> u64 {
1059 match *self {
1060 Self::ZirconTransport(_) => 1,
1061 Self::DriverTransport(_) => 2,
1062 Self::DictionaryOffer(_) => 3,
1063 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1064 }
1065 }
1066
1067 #[inline]
1068 pub fn unknown_variant_for_testing() -> Self {
1069 Self::__SourceBreaking { unknown_ordinal: 0 }
1070 }
1071
1072 #[inline]
1073 pub fn is_unknown(&self) -> bool {
1074 match self {
1075 Self::__SourceBreaking { .. } => true,
1076 _ => false,
1077 }
1078 }
1079}
1080
1081impl fidl::Persistable for Offer {}
1082
1083pub mod composite_node_manager_ordinals {
1084 pub const ADD_SPEC: u64 = 0x524e353c8130cc74;
1085}
1086
1087pub mod driver_ordinals {
1088 pub const START: u64 = 0x27be00ae42aa60c2;
1089 pub const STOP: u64 = 0x4b96c67e29b3843d;
1090 pub const SUSPEND: u64 = 0x4cebadedf5da22b8;
1091 pub const RESUME: u64 = 0x2535384cc6595148;
1092}
1093
1094pub mod node_ordinals {
1095 pub const ADD_CHILD: u64 = 0x77d10dff3c1ea129;
1096 pub const PROVIDE_RESOURCE: u64 = 0x2ba4a8e5f3409ace;
1097}
1098
1099pub mod node_controller_ordinals {
1100 pub const REMOVE: u64 = 0x54fa8b3dfe7bb341;
1101 pub const REQUEST_BIND: u64 = 0x41b954726b13508f;
1102 pub const ON_BIND: u64 = 0x51f4165bc5ea202a;
1103 pub const WAIT_FOR_DRIVER: u64 = 0x69f7106e47d81387;
1104}
1105
1106pub mod resource_controller_ordinals {
1107 pub const REMOVE: u64 = 0x1257bec06bde4f98;
1108}
1109
1110mod internal {
1111 use super::*;
1112 unsafe impl fidl::encoding::TypeMarker for BusType {
1113 type Owned = Self;
1114
1115 #[inline(always)]
1116 fn inline_align(_context: fidl::encoding::Context) -> usize {
1117 std::mem::align_of::<u32>()
1118 }
1119
1120 #[inline(always)]
1121 fn inline_size(_context: fidl::encoding::Context) -> usize {
1122 std::mem::size_of::<u32>()
1123 }
1124
1125 #[inline(always)]
1126 fn encode_is_copy() -> bool {
1127 false
1128 }
1129
1130 #[inline(always)]
1131 fn decode_is_copy() -> bool {
1132 false
1133 }
1134 }
1135
1136 impl fidl::encoding::ValueTypeMarker for BusType {
1137 type Borrowed<'a> = Self;
1138 #[inline(always)]
1139 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1140 *value
1141 }
1142 }
1143
1144 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
1145 #[inline]
1146 unsafe fn encode(
1147 self,
1148 encoder: &mut fidl::encoding::Encoder<'_, D>,
1149 offset: usize,
1150 _depth: fidl::encoding::Depth,
1151 ) -> fidl::Result<()> {
1152 encoder.debug_check_bounds::<Self>(offset);
1153 encoder.write_num(self.into_primitive(), offset);
1154 Ok(())
1155 }
1156 }
1157
1158 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
1159 #[inline(always)]
1160 fn new_empty() -> Self {
1161 Self::unknown()
1162 }
1163
1164 #[inline]
1165 unsafe fn decode(
1166 &mut self,
1167 decoder: &mut fidl::encoding::Decoder<'_, D>,
1168 offset: usize,
1169 _depth: fidl::encoding::Depth,
1170 ) -> fidl::Result<()> {
1171 decoder.debug_check_bounds::<Self>(offset);
1172 let prim = decoder.read_num::<u32>(offset);
1173
1174 *self = Self::from_primitive_allow_unknown(prim);
1175 Ok(())
1176 }
1177 }
1178 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
1179 type Owned = Self;
1180
1181 #[inline(always)]
1182 fn inline_align(_context: fidl::encoding::Context) -> usize {
1183 std::mem::align_of::<u32>()
1184 }
1185
1186 #[inline(always)]
1187 fn inline_size(_context: fidl::encoding::Context) -> usize {
1188 std::mem::size_of::<u32>()
1189 }
1190
1191 #[inline(always)]
1192 fn encode_is_copy() -> bool {
1193 false
1194 }
1195
1196 #[inline(always)]
1197 fn decode_is_copy() -> bool {
1198 false
1199 }
1200 }
1201
1202 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
1203 type Borrowed<'a> = Self;
1204 #[inline(always)]
1205 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1206 *value
1207 }
1208 }
1209
1210 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1211 for CompositeNodeSpecError
1212 {
1213 #[inline]
1214 unsafe fn encode(
1215 self,
1216 encoder: &mut fidl::encoding::Encoder<'_, D>,
1217 offset: usize,
1218 _depth: fidl::encoding::Depth,
1219 ) -> fidl::Result<()> {
1220 encoder.debug_check_bounds::<Self>(offset);
1221 encoder.write_num(self.into_primitive(), offset);
1222 Ok(())
1223 }
1224 }
1225
1226 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1227 for CompositeNodeSpecError
1228 {
1229 #[inline(always)]
1230 fn new_empty() -> Self {
1231 Self::unknown()
1232 }
1233
1234 #[inline]
1235 unsafe fn decode(
1236 &mut self,
1237 decoder: &mut fidl::encoding::Decoder<'_, D>,
1238 offset: usize,
1239 _depth: fidl::encoding::Depth,
1240 ) -> fidl::Result<()> {
1241 decoder.debug_check_bounds::<Self>(offset);
1242 let prim = decoder.read_num::<u32>(offset);
1243
1244 *self = Self::from_primitive_allow_unknown(prim);
1245 Ok(())
1246 }
1247 }
1248 unsafe impl fidl::encoding::TypeMarker for Condition {
1249 type Owned = Self;
1250
1251 #[inline(always)]
1252 fn inline_align(_context: fidl::encoding::Context) -> usize {
1253 std::mem::align_of::<u32>()
1254 }
1255
1256 #[inline(always)]
1257 fn inline_size(_context: fidl::encoding::Context) -> usize {
1258 std::mem::size_of::<u32>()
1259 }
1260
1261 #[inline(always)]
1262 fn encode_is_copy() -> bool {
1263 true
1264 }
1265
1266 #[inline(always)]
1267 fn decode_is_copy() -> bool {
1268 false
1269 }
1270 }
1271
1272 impl fidl::encoding::ValueTypeMarker for Condition {
1273 type Borrowed<'a> = Self;
1274 #[inline(always)]
1275 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1276 *value
1277 }
1278 }
1279
1280 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
1281 #[inline]
1282 unsafe fn encode(
1283 self,
1284 encoder: &mut fidl::encoding::Encoder<'_, D>,
1285 offset: usize,
1286 _depth: fidl::encoding::Depth,
1287 ) -> fidl::Result<()> {
1288 encoder.debug_check_bounds::<Self>(offset);
1289 encoder.write_num(self.into_primitive(), offset);
1290 Ok(())
1291 }
1292 }
1293
1294 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
1295 #[inline(always)]
1296 fn new_empty() -> Self {
1297 Self::Unknown
1298 }
1299
1300 #[inline]
1301 unsafe fn decode(
1302 &mut self,
1303 decoder: &mut fidl::encoding::Decoder<'_, D>,
1304 offset: usize,
1305 _depth: fidl::encoding::Depth,
1306 ) -> fidl::Result<()> {
1307 decoder.debug_check_bounds::<Self>(offset);
1308 let prim = decoder.read_num::<u32>(offset);
1309
1310 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1311 Ok(())
1312 }
1313 }
1314 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
1315 type Owned = Self;
1316
1317 #[inline(always)]
1318 fn inline_align(_context: fidl::encoding::Context) -> usize {
1319 std::mem::align_of::<u32>()
1320 }
1321
1322 #[inline(always)]
1323 fn inline_size(_context: fidl::encoding::Context) -> usize {
1324 std::mem::size_of::<u32>()
1325 }
1326
1327 #[inline(always)]
1328 fn encode_is_copy() -> bool {
1329 false
1330 }
1331
1332 #[inline(always)]
1333 fn decode_is_copy() -> bool {
1334 false
1335 }
1336 }
1337
1338 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
1339 type Borrowed<'a> = Self;
1340 #[inline(always)]
1341 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1342 *value
1343 }
1344 }
1345
1346 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1347 for DeviceAddressStability
1348 {
1349 #[inline]
1350 unsafe fn encode(
1351 self,
1352 encoder: &mut fidl::encoding::Encoder<'_, D>,
1353 offset: usize,
1354 _depth: fidl::encoding::Depth,
1355 ) -> fidl::Result<()> {
1356 encoder.debug_check_bounds::<Self>(offset);
1357 encoder.write_num(self.into_primitive(), offset);
1358 Ok(())
1359 }
1360 }
1361
1362 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1363 for DeviceAddressStability
1364 {
1365 #[inline(always)]
1366 fn new_empty() -> Self {
1367 Self::unknown()
1368 }
1369
1370 #[inline]
1371 unsafe fn decode(
1372 &mut self,
1373 decoder: &mut fidl::encoding::Decoder<'_, D>,
1374 offset: usize,
1375 _depth: fidl::encoding::Depth,
1376 ) -> fidl::Result<()> {
1377 decoder.debug_check_bounds::<Self>(offset);
1378 let prim = decoder.read_num::<u32>(offset);
1379
1380 *self = Self::from_primitive_allow_unknown(prim);
1381 Ok(())
1382 }
1383 }
1384 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
1385 type Owned = Self;
1386
1387 #[inline(always)]
1388 fn inline_align(_context: fidl::encoding::Context) -> usize {
1389 std::mem::align_of::<u8>()
1390 }
1391
1392 #[inline(always)]
1393 fn inline_size(_context: fidl::encoding::Context) -> usize {
1394 std::mem::size_of::<u8>()
1395 }
1396
1397 #[inline(always)]
1398 fn encode_is_copy() -> bool {
1399 false
1400 }
1401
1402 #[inline(always)]
1403 fn decode_is_copy() -> bool {
1404 false
1405 }
1406 }
1407
1408 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
1409 type Borrowed<'a> = Self;
1410 #[inline(always)]
1411 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1412 *value
1413 }
1414 }
1415
1416 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1417 for DriverPackageType
1418 {
1419 #[inline]
1420 unsafe fn encode(
1421 self,
1422 encoder: &mut fidl::encoding::Encoder<'_, D>,
1423 offset: usize,
1424 _depth: fidl::encoding::Depth,
1425 ) -> fidl::Result<()> {
1426 encoder.debug_check_bounds::<Self>(offset);
1427 encoder.write_num(self.into_primitive(), offset);
1428 Ok(())
1429 }
1430 }
1431
1432 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
1433 #[inline(always)]
1434 fn new_empty() -> Self {
1435 Self::unknown()
1436 }
1437
1438 #[inline]
1439 unsafe fn decode(
1440 &mut self,
1441 decoder: &mut fidl::encoding::Decoder<'_, D>,
1442 offset: usize,
1443 _depth: fidl::encoding::Depth,
1444 ) -> fidl::Result<()> {
1445 decoder.debug_check_bounds::<Self>(offset);
1446 let prim = decoder.read_num::<u8>(offset);
1447
1448 *self = Self::from_primitive_allow_unknown(prim);
1449 Ok(())
1450 }
1451 }
1452 unsafe impl fidl::encoding::TypeMarker for NodeError {
1453 type Owned = Self;
1454
1455 #[inline(always)]
1456 fn inline_align(_context: fidl::encoding::Context) -> usize {
1457 std::mem::align_of::<u32>()
1458 }
1459
1460 #[inline(always)]
1461 fn inline_size(_context: fidl::encoding::Context) -> usize {
1462 std::mem::size_of::<u32>()
1463 }
1464
1465 #[inline(always)]
1466 fn encode_is_copy() -> bool {
1467 false
1468 }
1469
1470 #[inline(always)]
1471 fn decode_is_copy() -> bool {
1472 false
1473 }
1474 }
1475
1476 impl fidl::encoding::ValueTypeMarker for NodeError {
1477 type Borrowed<'a> = Self;
1478 #[inline(always)]
1479 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1480 *value
1481 }
1482 }
1483
1484 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
1485 #[inline]
1486 unsafe fn encode(
1487 self,
1488 encoder: &mut fidl::encoding::Encoder<'_, D>,
1489 offset: usize,
1490 _depth: fidl::encoding::Depth,
1491 ) -> fidl::Result<()> {
1492 encoder.debug_check_bounds::<Self>(offset);
1493 encoder.write_num(self.into_primitive(), offset);
1494 Ok(())
1495 }
1496 }
1497
1498 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
1499 #[inline(always)]
1500 fn new_empty() -> Self {
1501 Self::unknown()
1502 }
1503
1504 #[inline]
1505 unsafe fn decode(
1506 &mut self,
1507 decoder: &mut fidl::encoding::Decoder<'_, D>,
1508 offset: usize,
1509 _depth: fidl::encoding::Depth,
1510 ) -> fidl::Result<()> {
1511 decoder.debug_check_bounds::<Self>(offset);
1512 let prim = decoder.read_num::<u32>(offset);
1513
1514 *self = Self::from_primitive_allow_unknown(prim);
1515 Ok(())
1516 }
1517 }
1518
1519 impl fidl::encoding::ValueTypeMarker for BindRule {
1520 type Borrowed<'a> = &'a Self;
1521 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1522 value
1523 }
1524 }
1525
1526 unsafe impl fidl::encoding::TypeMarker for BindRule {
1527 type Owned = Self;
1528
1529 #[inline(always)]
1530 fn inline_align(_context: fidl::encoding::Context) -> usize {
1531 8
1532 }
1533
1534 #[inline(always)]
1535 fn inline_size(_context: fidl::encoding::Context) -> usize {
1536 40
1537 }
1538 }
1539
1540 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule, D> for &BindRule {
1541 #[inline]
1542 unsafe fn encode(
1543 self,
1544 encoder: &mut fidl::encoding::Encoder<'_, D>,
1545 offset: usize,
1546 _depth: fidl::encoding::Depth,
1547 ) -> fidl::Result<()> {
1548 encoder.debug_check_bounds::<BindRule>(offset);
1549 fidl::encoding::Encode::<BindRule, D>::encode(
1551 (
1552 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1553 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1554 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1555 ),
1556 encoder, offset, _depth
1557 )
1558 }
1559 }
1560 unsafe impl<
1561 D: fidl::encoding::ResourceDialect,
1562 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1563 T1: fidl::encoding::Encode<Condition, D>,
1564 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1565 > fidl::encoding::Encode<BindRule, D> for (T0, T1, T2)
1566 {
1567 #[inline]
1568 unsafe fn encode(
1569 self,
1570 encoder: &mut fidl::encoding::Encoder<'_, D>,
1571 offset: usize,
1572 depth: fidl::encoding::Depth,
1573 ) -> fidl::Result<()> {
1574 encoder.debug_check_bounds::<BindRule>(offset);
1575 unsafe {
1578 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1579 (ptr as *mut u64).write_unaligned(0);
1580 }
1581 self.0.encode(encoder, offset + 0, depth)?;
1583 self.1.encode(encoder, offset + 16, depth)?;
1584 self.2.encode(encoder, offset + 24, depth)?;
1585 Ok(())
1586 }
1587 }
1588
1589 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule {
1590 #[inline(always)]
1591 fn new_empty() -> Self {
1592 Self {
1593 key: fidl::new_empty!(NodePropertyKey, D),
1594 condition: fidl::new_empty!(Condition, D),
1595 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1596 }
1597 }
1598
1599 #[inline]
1600 unsafe fn decode(
1601 &mut self,
1602 decoder: &mut fidl::encoding::Decoder<'_, D>,
1603 offset: usize,
1604 _depth: fidl::encoding::Depth,
1605 ) -> fidl::Result<()> {
1606 decoder.debug_check_bounds::<Self>(offset);
1607 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1609 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1610 let mask = 0xffffffff00000000u64;
1611 let maskedval = padval & mask;
1612 if maskedval != 0 {
1613 return Err(fidl::Error::NonZeroPadding {
1614 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1615 });
1616 }
1617 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1618 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1619 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1620 Ok(())
1621 }
1622 }
1623
1624 impl fidl::encoding::ValueTypeMarker for BindRule2 {
1625 type Borrowed<'a> = &'a Self;
1626 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1627 value
1628 }
1629 }
1630
1631 unsafe impl fidl::encoding::TypeMarker for BindRule2 {
1632 type Owned = Self;
1633
1634 #[inline(always)]
1635 fn inline_align(_context: fidl::encoding::Context) -> usize {
1636 8
1637 }
1638
1639 #[inline(always)]
1640 fn inline_size(_context: fidl::encoding::Context) -> usize {
1641 40
1642 }
1643 }
1644
1645 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule2, D>
1646 for &BindRule2
1647 {
1648 #[inline]
1649 unsafe fn encode(
1650 self,
1651 encoder: &mut fidl::encoding::Encoder<'_, D>,
1652 offset: usize,
1653 _depth: fidl::encoding::Depth,
1654 ) -> fidl::Result<()> {
1655 encoder.debug_check_bounds::<BindRule2>(offset);
1656 fidl::encoding::Encode::<BindRule2, D>::encode(
1658 (
1659 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1660 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1661 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1662 ),
1663 encoder, offset, _depth
1664 )
1665 }
1666 }
1667 unsafe impl<
1668 D: fidl::encoding::ResourceDialect,
1669 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1670 T1: fidl::encoding::Encode<Condition, D>,
1671 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1672 > fidl::encoding::Encode<BindRule2, D> for (T0, T1, T2)
1673 {
1674 #[inline]
1675 unsafe fn encode(
1676 self,
1677 encoder: &mut fidl::encoding::Encoder<'_, D>,
1678 offset: usize,
1679 depth: fidl::encoding::Depth,
1680 ) -> fidl::Result<()> {
1681 encoder.debug_check_bounds::<BindRule2>(offset);
1682 unsafe {
1685 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1686 (ptr as *mut u64).write_unaligned(0);
1687 }
1688 self.0.encode(encoder, offset + 0, depth)?;
1690 self.1.encode(encoder, offset + 16, depth)?;
1691 self.2.encode(encoder, offset + 24, depth)?;
1692 Ok(())
1693 }
1694 }
1695
1696 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule2 {
1697 #[inline(always)]
1698 fn new_empty() -> Self {
1699 Self {
1700 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1701 condition: fidl::new_empty!(Condition, D),
1702 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1703 }
1704 }
1705
1706 #[inline]
1707 unsafe fn decode(
1708 &mut self,
1709 decoder: &mut fidl::encoding::Decoder<'_, D>,
1710 offset: usize,
1711 _depth: fidl::encoding::Depth,
1712 ) -> fidl::Result<()> {
1713 decoder.debug_check_bounds::<Self>(offset);
1714 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1716 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1717 let mask = 0xffffffff00000000u64;
1718 let maskedval = padval & mask;
1719 if maskedval != 0 {
1720 return Err(fidl::Error::NonZeroPadding {
1721 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1722 });
1723 }
1724 fidl::decode!(
1725 fidl::encoding::BoundedString<256>,
1726 D,
1727 &mut self.key,
1728 decoder,
1729 offset + 0,
1730 _depth
1731 )?;
1732 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1733 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1734 Ok(())
1735 }
1736 }
1737
1738 impl fidl::encoding::ValueTypeMarker for NodeProperty {
1739 type Borrowed<'a> = &'a Self;
1740 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1741 value
1742 }
1743 }
1744
1745 unsafe impl fidl::encoding::TypeMarker for NodeProperty {
1746 type Owned = Self;
1747
1748 #[inline(always)]
1749 fn inline_align(_context: fidl::encoding::Context) -> usize {
1750 8
1751 }
1752
1753 #[inline(always)]
1754 fn inline_size(_context: fidl::encoding::Context) -> usize {
1755 32
1756 }
1757 }
1758
1759 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty, D>
1760 for &NodeProperty
1761 {
1762 #[inline]
1763 unsafe fn encode(
1764 self,
1765 encoder: &mut fidl::encoding::Encoder<'_, D>,
1766 offset: usize,
1767 _depth: fidl::encoding::Depth,
1768 ) -> fidl::Result<()> {
1769 encoder.debug_check_bounds::<NodeProperty>(offset);
1770 fidl::encoding::Encode::<NodeProperty, D>::encode(
1772 (
1773 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1774 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1775 ),
1776 encoder,
1777 offset,
1778 _depth,
1779 )
1780 }
1781 }
1782 unsafe impl<
1783 D: fidl::encoding::ResourceDialect,
1784 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1785 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1786 > fidl::encoding::Encode<NodeProperty, D> for (T0, T1)
1787 {
1788 #[inline]
1789 unsafe fn encode(
1790 self,
1791 encoder: &mut fidl::encoding::Encoder<'_, D>,
1792 offset: usize,
1793 depth: fidl::encoding::Depth,
1794 ) -> fidl::Result<()> {
1795 encoder.debug_check_bounds::<NodeProperty>(offset);
1796 self.0.encode(encoder, offset + 0, depth)?;
1800 self.1.encode(encoder, offset + 16, depth)?;
1801 Ok(())
1802 }
1803 }
1804
1805 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty {
1806 #[inline(always)]
1807 fn new_empty() -> Self {
1808 Self {
1809 key: fidl::new_empty!(NodePropertyKey, D),
1810 value: fidl::new_empty!(NodePropertyValue, D),
1811 }
1812 }
1813
1814 #[inline]
1815 unsafe fn decode(
1816 &mut self,
1817 decoder: &mut fidl::encoding::Decoder<'_, D>,
1818 offset: usize,
1819 _depth: fidl::encoding::Depth,
1820 ) -> fidl::Result<()> {
1821 decoder.debug_check_bounds::<Self>(offset);
1822 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1824 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1825 Ok(())
1826 }
1827 }
1828
1829 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
1830 type Borrowed<'a> = &'a Self;
1831 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1832 value
1833 }
1834 }
1835
1836 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
1837 type Owned = Self;
1838
1839 #[inline(always)]
1840 fn inline_align(_context: fidl::encoding::Context) -> usize {
1841 8
1842 }
1843
1844 #[inline(always)]
1845 fn inline_size(_context: fidl::encoding::Context) -> usize {
1846 32
1847 }
1848 }
1849
1850 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
1851 for &NodeProperty2
1852 {
1853 #[inline]
1854 unsafe fn encode(
1855 self,
1856 encoder: &mut fidl::encoding::Encoder<'_, D>,
1857 offset: usize,
1858 _depth: fidl::encoding::Depth,
1859 ) -> fidl::Result<()> {
1860 encoder.debug_check_bounds::<NodeProperty2>(offset);
1861 fidl::encoding::Encode::<NodeProperty2, D>::encode(
1863 (
1864 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
1865 &self.key,
1866 ),
1867 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1868 ),
1869 encoder,
1870 offset,
1871 _depth,
1872 )
1873 }
1874 }
1875 unsafe impl<
1876 D: fidl::encoding::ResourceDialect,
1877 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1878 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1879 > fidl::encoding::Encode<NodeProperty2, D> for (T0, T1)
1880 {
1881 #[inline]
1882 unsafe fn encode(
1883 self,
1884 encoder: &mut fidl::encoding::Encoder<'_, D>,
1885 offset: usize,
1886 depth: fidl::encoding::Depth,
1887 ) -> fidl::Result<()> {
1888 encoder.debug_check_bounds::<NodeProperty2>(offset);
1889 self.0.encode(encoder, offset + 0, depth)?;
1893 self.1.encode(encoder, offset + 16, depth)?;
1894 Ok(())
1895 }
1896 }
1897
1898 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty2 {
1899 #[inline(always)]
1900 fn new_empty() -> Self {
1901 Self {
1902 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1903 value: fidl::new_empty!(NodePropertyValue, D),
1904 }
1905 }
1906
1907 #[inline]
1908 unsafe fn decode(
1909 &mut self,
1910 decoder: &mut fidl::encoding::Decoder<'_, D>,
1911 offset: usize,
1912 _depth: fidl::encoding::Depth,
1913 ) -> fidl::Result<()> {
1914 decoder.debug_check_bounds::<Self>(offset);
1915 fidl::decode!(
1917 fidl::encoding::BoundedString<256>,
1918 D,
1919 &mut self.key,
1920 decoder,
1921 offset + 0,
1922 _depth
1923 )?;
1924 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1925 Ok(())
1926 }
1927 }
1928
1929 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry {
1930 type Borrowed<'a> = &'a Self;
1931 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1932 value
1933 }
1934 }
1935
1936 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry {
1937 type Owned = Self;
1938
1939 #[inline(always)]
1940 fn inline_align(_context: fidl::encoding::Context) -> usize {
1941 8
1942 }
1943
1944 #[inline(always)]
1945 fn inline_size(_context: fidl::encoding::Context) -> usize {
1946 32
1947 }
1948 }
1949
1950 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry, D>
1951 for &NodePropertyEntry
1952 {
1953 #[inline]
1954 unsafe fn encode(
1955 self,
1956 encoder: &mut fidl::encoding::Encoder<'_, D>,
1957 offset: usize,
1958 _depth: fidl::encoding::Depth,
1959 ) -> fidl::Result<()> {
1960 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1961 fidl::encoding::Encode::<NodePropertyEntry, D>::encode(
1963 (
1964 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1965 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
1966 ),
1967 encoder, offset, _depth
1968 )
1969 }
1970 }
1971 unsafe impl<
1972 D: fidl::encoding::ResourceDialect,
1973 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
1974 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
1975 > fidl::encoding::Encode<NodePropertyEntry, D> for (T0, T1)
1976 {
1977 #[inline]
1978 unsafe fn encode(
1979 self,
1980 encoder: &mut fidl::encoding::Encoder<'_, D>,
1981 offset: usize,
1982 depth: fidl::encoding::Depth,
1983 ) -> fidl::Result<()> {
1984 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1985 self.0.encode(encoder, offset + 0, depth)?;
1989 self.1.encode(encoder, offset + 16, depth)?;
1990 Ok(())
1991 }
1992 }
1993
1994 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry {
1995 #[inline(always)]
1996 fn new_empty() -> Self {
1997 Self {
1998 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
1999 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
2000 }
2001 }
2002
2003 #[inline]
2004 unsafe fn decode(
2005 &mut self,
2006 decoder: &mut fidl::encoding::Decoder<'_, D>,
2007 offset: usize,
2008 _depth: fidl::encoding::Depth,
2009 ) -> fidl::Result<()> {
2010 decoder.debug_check_bounds::<Self>(offset);
2011 fidl::decode!(
2013 fidl::encoding::BoundedString<128>,
2014 D,
2015 &mut self.name,
2016 decoder,
2017 offset + 0,
2018 _depth
2019 )?;
2020 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2021 Ok(())
2022 }
2023 }
2024
2025 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
2026 type Borrowed<'a> = &'a Self;
2027 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2028 value
2029 }
2030 }
2031
2032 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
2033 type Owned = Self;
2034
2035 #[inline(always)]
2036 fn inline_align(_context: fidl::encoding::Context) -> usize {
2037 8
2038 }
2039
2040 #[inline(always)]
2041 fn inline_size(_context: fidl::encoding::Context) -> usize {
2042 32
2043 }
2044 }
2045
2046 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
2047 for &NodePropertyEntry2
2048 {
2049 #[inline]
2050 unsafe fn encode(
2051 self,
2052 encoder: &mut fidl::encoding::Encoder<'_, D>,
2053 offset: usize,
2054 _depth: fidl::encoding::Depth,
2055 ) -> fidl::Result<()> {
2056 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2057 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
2059 (
2060 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2061 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2062 ),
2063 encoder, offset, _depth
2064 )
2065 }
2066 }
2067 unsafe impl<
2068 D: fidl::encoding::ResourceDialect,
2069 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
2070 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2071 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
2072 {
2073 #[inline]
2074 unsafe fn encode(
2075 self,
2076 encoder: &mut fidl::encoding::Encoder<'_, D>,
2077 offset: usize,
2078 depth: fidl::encoding::Depth,
2079 ) -> fidl::Result<()> {
2080 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2081 self.0.encode(encoder, offset + 0, depth)?;
2085 self.1.encode(encoder, offset + 16, depth)?;
2086 Ok(())
2087 }
2088 }
2089
2090 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
2091 #[inline(always)]
2092 fn new_empty() -> Self {
2093 Self {
2094 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2095 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2096 }
2097 }
2098
2099 #[inline]
2100 unsafe fn decode(
2101 &mut self,
2102 decoder: &mut fidl::encoding::Decoder<'_, D>,
2103 offset: usize,
2104 _depth: fidl::encoding::Depth,
2105 ) -> fidl::Result<()> {
2106 decoder.debug_check_bounds::<Self>(offset);
2107 fidl::decode!(
2109 fidl::encoding::BoundedString<128>,
2110 D,
2111 &mut self.name,
2112 decoder,
2113 offset + 0,
2114 _depth
2115 )?;
2116 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2117 Ok(())
2118 }
2119 }
2120
2121 impl fidl::encoding::ValueTypeMarker for ParentSpec {
2122 type Borrowed<'a> = &'a Self;
2123 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2124 value
2125 }
2126 }
2127
2128 unsafe impl fidl::encoding::TypeMarker for ParentSpec {
2129 type Owned = Self;
2130
2131 #[inline(always)]
2132 fn inline_align(_context: fidl::encoding::Context) -> usize {
2133 8
2134 }
2135
2136 #[inline(always)]
2137 fn inline_size(_context: fidl::encoding::Context) -> usize {
2138 32
2139 }
2140 }
2141
2142 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec, D>
2143 for &ParentSpec
2144 {
2145 #[inline]
2146 unsafe fn encode(
2147 self,
2148 encoder: &mut fidl::encoding::Encoder<'_, D>,
2149 offset: usize,
2150 _depth: fidl::encoding::Depth,
2151 ) -> fidl::Result<()> {
2152 encoder.debug_check_bounds::<ParentSpec>(offset);
2153 fidl::encoding::Encode::<ParentSpec, D>::encode(
2155 (
2156 <fidl::encoding::Vector<BindRule, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2157 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2158 ),
2159 encoder, offset, _depth
2160 )
2161 }
2162 }
2163 unsafe impl<
2164 D: fidl::encoding::ResourceDialect,
2165 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule, 64>, D>,
2166 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
2167 > fidl::encoding::Encode<ParentSpec, D> for (T0, T1)
2168 {
2169 #[inline]
2170 unsafe fn encode(
2171 self,
2172 encoder: &mut fidl::encoding::Encoder<'_, D>,
2173 offset: usize,
2174 depth: fidl::encoding::Depth,
2175 ) -> fidl::Result<()> {
2176 encoder.debug_check_bounds::<ParentSpec>(offset);
2177 self.0.encode(encoder, offset + 0, depth)?;
2181 self.1.encode(encoder, offset + 16, depth)?;
2182 Ok(())
2183 }
2184 }
2185
2186 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec {
2187 #[inline(always)]
2188 fn new_empty() -> Self {
2189 Self {
2190 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule, 64>, D),
2191 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
2192 }
2193 }
2194
2195 #[inline]
2196 unsafe fn decode(
2197 &mut self,
2198 decoder: &mut fidl::encoding::Decoder<'_, D>,
2199 offset: usize,
2200 _depth: fidl::encoding::Depth,
2201 ) -> fidl::Result<()> {
2202 decoder.debug_check_bounds::<Self>(offset);
2203 fidl::decode!(fidl::encoding::Vector<BindRule, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2205 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2206 Ok(())
2207 }
2208 }
2209
2210 impl fidl::encoding::ValueTypeMarker for ParentSpec2 {
2211 type Borrowed<'a> = &'a Self;
2212 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2213 value
2214 }
2215 }
2216
2217 unsafe impl fidl::encoding::TypeMarker for ParentSpec2 {
2218 type Owned = Self;
2219
2220 #[inline(always)]
2221 fn inline_align(_context: fidl::encoding::Context) -> usize {
2222 8
2223 }
2224
2225 #[inline(always)]
2226 fn inline_size(_context: fidl::encoding::Context) -> usize {
2227 32
2228 }
2229 }
2230
2231 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec2, D>
2232 for &ParentSpec2
2233 {
2234 #[inline]
2235 unsafe fn encode(
2236 self,
2237 encoder: &mut fidl::encoding::Encoder<'_, D>,
2238 offset: usize,
2239 _depth: fidl::encoding::Depth,
2240 ) -> fidl::Result<()> {
2241 encoder.debug_check_bounds::<ParentSpec2>(offset);
2242 fidl::encoding::Encode::<ParentSpec2, D>::encode(
2244 (
2245 <fidl::encoding::Vector<BindRule2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2246 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2247 ),
2248 encoder, offset, _depth
2249 )
2250 }
2251 }
2252 unsafe impl<
2253 D: fidl::encoding::ResourceDialect,
2254 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule2, 64>, D>,
2255 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2256 > fidl::encoding::Encode<ParentSpec2, D> for (T0, T1)
2257 {
2258 #[inline]
2259 unsafe fn encode(
2260 self,
2261 encoder: &mut fidl::encoding::Encoder<'_, D>,
2262 offset: usize,
2263 depth: fidl::encoding::Depth,
2264 ) -> fidl::Result<()> {
2265 encoder.debug_check_bounds::<ParentSpec2>(offset);
2266 self.0.encode(encoder, offset + 0, depth)?;
2270 self.1.encode(encoder, offset + 16, depth)?;
2271 Ok(())
2272 }
2273 }
2274
2275 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec2 {
2276 #[inline(always)]
2277 fn new_empty() -> Self {
2278 Self {
2279 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule2, 64>, D),
2280 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2281 }
2282 }
2283
2284 #[inline]
2285 unsafe fn decode(
2286 &mut self,
2287 decoder: &mut fidl::encoding::Decoder<'_, D>,
2288 offset: usize,
2289 _depth: fidl::encoding::Depth,
2290 ) -> fidl::Result<()> {
2291 decoder.debug_check_bounds::<Self>(offset);
2292 fidl::decode!(fidl::encoding::Vector<BindRule2, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2294 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2295 Ok(())
2296 }
2297 }
2298
2299 impl fidl::encoding::ValueTypeMarker for ResourceProperty {
2300 type Borrowed<'a> = &'a Self;
2301 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2302 value
2303 }
2304 }
2305
2306 unsafe impl fidl::encoding::TypeMarker for ResourceProperty {
2307 type Owned = Self;
2308
2309 #[inline(always)]
2310 fn inline_align(_context: fidl::encoding::Context) -> usize {
2311 8
2312 }
2313
2314 #[inline(always)]
2315 fn inline_size(_context: fidl::encoding::Context) -> usize {
2316 32
2317 }
2318 }
2319
2320 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResourceProperty, D>
2321 for &ResourceProperty
2322 {
2323 #[inline]
2324 unsafe fn encode(
2325 self,
2326 encoder: &mut fidl::encoding::Encoder<'_, D>,
2327 offset: usize,
2328 _depth: fidl::encoding::Depth,
2329 ) -> fidl::Result<()> {
2330 encoder.debug_check_bounds::<ResourceProperty>(offset);
2331 fidl::encoding::Encode::<ResourceProperty, D>::encode(
2333 (
2334 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
2335 &self.key,
2336 ),
2337 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2338 ),
2339 encoder,
2340 offset,
2341 _depth,
2342 )
2343 }
2344 }
2345 unsafe impl<
2346 D: fidl::encoding::ResourceDialect,
2347 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
2348 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2349 > fidl::encoding::Encode<ResourceProperty, D> for (T0, T1)
2350 {
2351 #[inline]
2352 unsafe fn encode(
2353 self,
2354 encoder: &mut fidl::encoding::Encoder<'_, D>,
2355 offset: usize,
2356 depth: fidl::encoding::Depth,
2357 ) -> fidl::Result<()> {
2358 encoder.debug_check_bounds::<ResourceProperty>(offset);
2359 self.0.encode(encoder, offset + 0, depth)?;
2363 self.1.encode(encoder, offset + 16, depth)?;
2364 Ok(())
2365 }
2366 }
2367
2368 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResourceProperty {
2369 #[inline(always)]
2370 fn new_empty() -> Self {
2371 Self {
2372 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
2373 value: fidl::new_empty!(NodePropertyValue, D),
2374 }
2375 }
2376
2377 #[inline]
2378 unsafe fn decode(
2379 &mut self,
2380 decoder: &mut fidl::encoding::Decoder<'_, D>,
2381 offset: usize,
2382 _depth: fidl::encoding::Depth,
2383 ) -> fidl::Result<()> {
2384 decoder.debug_check_bounds::<Self>(offset);
2385 fidl::decode!(
2387 fidl::encoding::UnboundedString,
2388 D,
2389 &mut self.key,
2390 decoder,
2391 offset + 0,
2392 _depth
2393 )?;
2394 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2395 Ok(())
2396 }
2397 }
2398
2399 impl BusInfo {
2400 #[inline(always)]
2401 fn max_ordinal_present(&self) -> u64 {
2402 if let Some(_) = self.address_stability {
2403 return 3;
2404 }
2405 if let Some(_) = self.address {
2406 return 2;
2407 }
2408 if let Some(_) = self.bus {
2409 return 1;
2410 }
2411 0
2412 }
2413 }
2414
2415 impl fidl::encoding::ValueTypeMarker for BusInfo {
2416 type Borrowed<'a> = &'a Self;
2417 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2418 value
2419 }
2420 }
2421
2422 unsafe impl fidl::encoding::TypeMarker for BusInfo {
2423 type Owned = Self;
2424
2425 #[inline(always)]
2426 fn inline_align(_context: fidl::encoding::Context) -> usize {
2427 8
2428 }
2429
2430 #[inline(always)]
2431 fn inline_size(_context: fidl::encoding::Context) -> usize {
2432 16
2433 }
2434 }
2435
2436 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
2437 unsafe fn encode(
2438 self,
2439 encoder: &mut fidl::encoding::Encoder<'_, D>,
2440 offset: usize,
2441 mut depth: fidl::encoding::Depth,
2442 ) -> fidl::Result<()> {
2443 encoder.debug_check_bounds::<BusInfo>(offset);
2444 let max_ordinal: u64 = self.max_ordinal_present();
2446 encoder.write_num(max_ordinal, offset);
2447 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2448 if max_ordinal == 0 {
2450 return Ok(());
2451 }
2452 depth.increment()?;
2453 let envelope_size = 8;
2454 let bytes_len = max_ordinal as usize * envelope_size;
2455 #[allow(unused_variables)]
2456 let offset = encoder.out_of_line_offset(bytes_len);
2457 let mut _prev_end_offset: usize = 0;
2458 if 1 > max_ordinal {
2459 return Ok(());
2460 }
2461
2462 let cur_offset: usize = (1 - 1) * envelope_size;
2465
2466 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2468
2469 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
2474 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
2475 encoder,
2476 offset + cur_offset,
2477 depth,
2478 )?;
2479
2480 _prev_end_offset = cur_offset + envelope_size;
2481 if 2 > max_ordinal {
2482 return Ok(());
2483 }
2484
2485 let cur_offset: usize = (2 - 1) * envelope_size;
2488
2489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2491
2492 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
2497 self.address
2498 .as_ref()
2499 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
2500 encoder,
2501 offset + cur_offset,
2502 depth,
2503 )?;
2504
2505 _prev_end_offset = cur_offset + envelope_size;
2506 if 3 > max_ordinal {
2507 return Ok(());
2508 }
2509
2510 let cur_offset: usize = (3 - 1) * envelope_size;
2513
2514 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2516
2517 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
2522 self.address_stability
2523 .as_ref()
2524 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
2525 encoder,
2526 offset + cur_offset,
2527 depth,
2528 )?;
2529
2530 _prev_end_offset = cur_offset + envelope_size;
2531
2532 Ok(())
2533 }
2534 }
2535
2536 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
2537 #[inline(always)]
2538 fn new_empty() -> Self {
2539 Self::default()
2540 }
2541
2542 unsafe fn decode(
2543 &mut self,
2544 decoder: &mut fidl::encoding::Decoder<'_, D>,
2545 offset: usize,
2546 mut depth: fidl::encoding::Depth,
2547 ) -> fidl::Result<()> {
2548 decoder.debug_check_bounds::<Self>(offset);
2549 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2550 None => return Err(fidl::Error::NotNullable),
2551 Some(len) => len,
2552 };
2553 if len == 0 {
2555 return Ok(());
2556 };
2557 depth.increment()?;
2558 let envelope_size = 8;
2559 let bytes_len = len * envelope_size;
2560 let offset = decoder.out_of_line_offset(bytes_len)?;
2561 let mut _next_ordinal_to_read = 0;
2563 let mut next_offset = offset;
2564 let end_offset = offset + bytes_len;
2565 _next_ordinal_to_read += 1;
2566 if next_offset >= end_offset {
2567 return Ok(());
2568 }
2569
2570 while _next_ordinal_to_read < 1 {
2572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2573 _next_ordinal_to_read += 1;
2574 next_offset += envelope_size;
2575 }
2576
2577 let next_out_of_line = decoder.next_out_of_line();
2578 let handles_before = decoder.remaining_handles();
2579 if let Some((inlined, num_bytes, num_handles)) =
2580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2581 {
2582 let member_inline_size =
2583 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2584 if inlined != (member_inline_size <= 4) {
2585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2586 }
2587 let inner_offset;
2588 let mut inner_depth = depth.clone();
2589 if inlined {
2590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2591 inner_offset = next_offset;
2592 } else {
2593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2594 inner_depth.increment()?;
2595 }
2596 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
2597 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
2598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2599 {
2600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2601 }
2602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2604 }
2605 }
2606
2607 next_offset += envelope_size;
2608 _next_ordinal_to_read += 1;
2609 if next_offset >= end_offset {
2610 return Ok(());
2611 }
2612
2613 while _next_ordinal_to_read < 2 {
2615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2616 _next_ordinal_to_read += 1;
2617 next_offset += envelope_size;
2618 }
2619
2620 let next_out_of_line = decoder.next_out_of_line();
2621 let handles_before = decoder.remaining_handles();
2622 if let Some((inlined, num_bytes, num_handles)) =
2623 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2624 {
2625 let member_inline_size =
2626 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2627 if inlined != (member_inline_size <= 4) {
2628 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2629 }
2630 let inner_offset;
2631 let mut inner_depth = depth.clone();
2632 if inlined {
2633 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2634 inner_offset = next_offset;
2635 } else {
2636 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2637 inner_depth.increment()?;
2638 }
2639 let val_ref =
2640 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
2641 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
2642 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2643 {
2644 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2645 }
2646 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2647 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2648 }
2649 }
2650
2651 next_offset += envelope_size;
2652 _next_ordinal_to_read += 1;
2653 if next_offset >= end_offset {
2654 return Ok(());
2655 }
2656
2657 while _next_ordinal_to_read < 3 {
2659 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2660 _next_ordinal_to_read += 1;
2661 next_offset += envelope_size;
2662 }
2663
2664 let next_out_of_line = decoder.next_out_of_line();
2665 let handles_before = decoder.remaining_handles();
2666 if let Some((inlined, num_bytes, num_handles)) =
2667 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2668 {
2669 let member_inline_size =
2670 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
2671 decoder.context,
2672 );
2673 if inlined != (member_inline_size <= 4) {
2674 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2675 }
2676 let inner_offset;
2677 let mut inner_depth = depth.clone();
2678 if inlined {
2679 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2680 inner_offset = next_offset;
2681 } else {
2682 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2683 inner_depth.increment()?;
2684 }
2685 let val_ref = self
2686 .address_stability
2687 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
2688 fidl::decode!(
2689 DeviceAddressStability,
2690 D,
2691 val_ref,
2692 decoder,
2693 inner_offset,
2694 inner_depth
2695 )?;
2696 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2697 {
2698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2699 }
2700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2702 }
2703 }
2704
2705 next_offset += envelope_size;
2706
2707 while next_offset < end_offset {
2709 _next_ordinal_to_read += 1;
2710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2711 next_offset += envelope_size;
2712 }
2713
2714 Ok(())
2715 }
2716 }
2717
2718 impl CompositeDriverInfo {
2719 #[inline(always)]
2720 fn max_ordinal_present(&self) -> u64 {
2721 if let Some(_) = self.driver_info {
2722 return 2;
2723 }
2724 if let Some(_) = self.composite_name {
2725 return 1;
2726 }
2727 0
2728 }
2729 }
2730
2731 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
2732 type Borrowed<'a> = &'a Self;
2733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2734 value
2735 }
2736 }
2737
2738 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
2739 type Owned = Self;
2740
2741 #[inline(always)]
2742 fn inline_align(_context: fidl::encoding::Context) -> usize {
2743 8
2744 }
2745
2746 #[inline(always)]
2747 fn inline_size(_context: fidl::encoding::Context) -> usize {
2748 16
2749 }
2750 }
2751
2752 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
2753 for &CompositeDriverInfo
2754 {
2755 unsafe fn encode(
2756 self,
2757 encoder: &mut fidl::encoding::Encoder<'_, D>,
2758 offset: usize,
2759 mut depth: fidl::encoding::Depth,
2760 ) -> fidl::Result<()> {
2761 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
2762 let max_ordinal: u64 = self.max_ordinal_present();
2764 encoder.write_num(max_ordinal, offset);
2765 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2766 if max_ordinal == 0 {
2768 return Ok(());
2769 }
2770 depth.increment()?;
2771 let envelope_size = 8;
2772 let bytes_len = max_ordinal as usize * envelope_size;
2773 #[allow(unused_variables)]
2774 let offset = encoder.out_of_line_offset(bytes_len);
2775 let mut _prev_end_offset: usize = 0;
2776 if 1 > max_ordinal {
2777 return Ok(());
2778 }
2779
2780 let cur_offset: usize = (1 - 1) * envelope_size;
2783
2784 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2786
2787 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2792 self.composite_name.as_ref().map(
2793 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2794 ),
2795 encoder,
2796 offset + cur_offset,
2797 depth,
2798 )?;
2799
2800 _prev_end_offset = cur_offset + envelope_size;
2801 if 2 > max_ordinal {
2802 return Ok(());
2803 }
2804
2805 let cur_offset: usize = (2 - 1) * envelope_size;
2808
2809 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2811
2812 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
2817 self.driver_info
2818 .as_ref()
2819 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
2820 encoder,
2821 offset + cur_offset,
2822 depth,
2823 )?;
2824
2825 _prev_end_offset = cur_offset + envelope_size;
2826
2827 Ok(())
2828 }
2829 }
2830
2831 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
2832 #[inline(always)]
2833 fn new_empty() -> Self {
2834 Self::default()
2835 }
2836
2837 unsafe fn decode(
2838 &mut self,
2839 decoder: &mut fidl::encoding::Decoder<'_, D>,
2840 offset: usize,
2841 mut depth: fidl::encoding::Depth,
2842 ) -> fidl::Result<()> {
2843 decoder.debug_check_bounds::<Self>(offset);
2844 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2845 None => return Err(fidl::Error::NotNullable),
2846 Some(len) => len,
2847 };
2848 if len == 0 {
2850 return Ok(());
2851 };
2852 depth.increment()?;
2853 let envelope_size = 8;
2854 let bytes_len = len * envelope_size;
2855 let offset = decoder.out_of_line_offset(bytes_len)?;
2856 let mut _next_ordinal_to_read = 0;
2858 let mut next_offset = offset;
2859 let end_offset = offset + bytes_len;
2860 _next_ordinal_to_read += 1;
2861 if next_offset >= end_offset {
2862 return Ok(());
2863 }
2864
2865 while _next_ordinal_to_read < 1 {
2867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2868 _next_ordinal_to_read += 1;
2869 next_offset += envelope_size;
2870 }
2871
2872 let next_out_of_line = decoder.next_out_of_line();
2873 let handles_before = decoder.remaining_handles();
2874 if let Some((inlined, num_bytes, num_handles)) =
2875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2876 {
2877 let member_inline_size =
2878 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2879 decoder.context,
2880 );
2881 if inlined != (member_inline_size <= 4) {
2882 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2883 }
2884 let inner_offset;
2885 let mut inner_depth = depth.clone();
2886 if inlined {
2887 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2888 inner_offset = next_offset;
2889 } else {
2890 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2891 inner_depth.increment()?;
2892 }
2893 let val_ref = self
2894 .composite_name
2895 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2896 fidl::decode!(
2897 fidl::encoding::UnboundedString,
2898 D,
2899 val_ref,
2900 decoder,
2901 inner_offset,
2902 inner_depth
2903 )?;
2904 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2905 {
2906 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2907 }
2908 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2909 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2910 }
2911 }
2912
2913 next_offset += envelope_size;
2914 _next_ordinal_to_read += 1;
2915 if next_offset >= end_offset {
2916 return Ok(());
2917 }
2918
2919 while _next_ordinal_to_read < 2 {
2921 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2922 _next_ordinal_to_read += 1;
2923 next_offset += envelope_size;
2924 }
2925
2926 let next_out_of_line = decoder.next_out_of_line();
2927 let handles_before = decoder.remaining_handles();
2928 if let Some((inlined, num_bytes, num_handles)) =
2929 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2930 {
2931 let member_inline_size =
2932 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2933 if inlined != (member_inline_size <= 4) {
2934 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2935 }
2936 let inner_offset;
2937 let mut inner_depth = depth.clone();
2938 if inlined {
2939 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2940 inner_offset = next_offset;
2941 } else {
2942 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2943 inner_depth.increment()?;
2944 }
2945 let val_ref =
2946 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
2947 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2948 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2949 {
2950 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2951 }
2952 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2953 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2954 }
2955 }
2956
2957 next_offset += envelope_size;
2958
2959 while next_offset < end_offset {
2961 _next_ordinal_to_read += 1;
2962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2963 next_offset += envelope_size;
2964 }
2965
2966 Ok(())
2967 }
2968 }
2969
2970 impl CompositeDriverMatch {
2971 #[inline(always)]
2972 fn max_ordinal_present(&self) -> u64 {
2973 if let Some(_) = self.primary_parent_index {
2974 return 3;
2975 }
2976 if let Some(_) = self.parent_names {
2977 return 2;
2978 }
2979 if let Some(_) = self.composite_driver {
2980 return 1;
2981 }
2982 0
2983 }
2984 }
2985
2986 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
2987 type Borrowed<'a> = &'a Self;
2988 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2989 value
2990 }
2991 }
2992
2993 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
2994 type Owned = Self;
2995
2996 #[inline(always)]
2997 fn inline_align(_context: fidl::encoding::Context) -> usize {
2998 8
2999 }
3000
3001 #[inline(always)]
3002 fn inline_size(_context: fidl::encoding::Context) -> usize {
3003 16
3004 }
3005 }
3006
3007 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
3008 for &CompositeDriverMatch
3009 {
3010 unsafe fn encode(
3011 self,
3012 encoder: &mut fidl::encoding::Encoder<'_, D>,
3013 offset: usize,
3014 mut depth: fidl::encoding::Depth,
3015 ) -> fidl::Result<()> {
3016 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
3017 let max_ordinal: u64 = self.max_ordinal_present();
3019 encoder.write_num(max_ordinal, offset);
3020 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3021 if max_ordinal == 0 {
3023 return Ok(());
3024 }
3025 depth.increment()?;
3026 let envelope_size = 8;
3027 let bytes_len = max_ordinal as usize * envelope_size;
3028 #[allow(unused_variables)]
3029 let offset = encoder.out_of_line_offset(bytes_len);
3030 let mut _prev_end_offset: usize = 0;
3031 if 1 > max_ordinal {
3032 return Ok(());
3033 }
3034
3035 let cur_offset: usize = (1 - 1) * envelope_size;
3038
3039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3041
3042 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
3047 self.composite_driver
3048 .as_ref()
3049 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3050 encoder,
3051 offset + cur_offset,
3052 depth,
3053 )?;
3054
3055 _prev_end_offset = cur_offset + envelope_size;
3056 if 2 > max_ordinal {
3057 return Ok(());
3058 }
3059
3060 let cur_offset: usize = (2 - 1) * envelope_size;
3063
3064 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3066
3067 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
3072 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
3073 encoder, offset + cur_offset, depth
3074 )?;
3075
3076 _prev_end_offset = cur_offset + envelope_size;
3077 if 3 > max_ordinal {
3078 return Ok(());
3079 }
3080
3081 let cur_offset: usize = (3 - 1) * envelope_size;
3084
3085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3087
3088 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3093 self.primary_parent_index
3094 .as_ref()
3095 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3096 encoder,
3097 offset + cur_offset,
3098 depth,
3099 )?;
3100
3101 _prev_end_offset = cur_offset + envelope_size;
3102
3103 Ok(())
3104 }
3105 }
3106
3107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
3108 #[inline(always)]
3109 fn new_empty() -> Self {
3110 Self::default()
3111 }
3112
3113 unsafe fn decode(
3114 &mut self,
3115 decoder: &mut fidl::encoding::Decoder<'_, D>,
3116 offset: usize,
3117 mut depth: fidl::encoding::Depth,
3118 ) -> fidl::Result<()> {
3119 decoder.debug_check_bounds::<Self>(offset);
3120 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3121 None => return Err(fidl::Error::NotNullable),
3122 Some(len) => len,
3123 };
3124 if len == 0 {
3126 return Ok(());
3127 };
3128 depth.increment()?;
3129 let envelope_size = 8;
3130 let bytes_len = len * envelope_size;
3131 let offset = decoder.out_of_line_offset(bytes_len)?;
3132 let mut _next_ordinal_to_read = 0;
3134 let mut next_offset = offset;
3135 let end_offset = offset + bytes_len;
3136 _next_ordinal_to_read += 1;
3137 if next_offset >= end_offset {
3138 return Ok(());
3139 }
3140
3141 while _next_ordinal_to_read < 1 {
3143 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3144 _next_ordinal_to_read += 1;
3145 next_offset += envelope_size;
3146 }
3147
3148 let next_out_of_line = decoder.next_out_of_line();
3149 let handles_before = decoder.remaining_handles();
3150 if let Some((inlined, num_bytes, num_handles)) =
3151 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3152 {
3153 let member_inline_size =
3154 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
3155 decoder.context,
3156 );
3157 if inlined != (member_inline_size <= 4) {
3158 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3159 }
3160 let inner_offset;
3161 let mut inner_depth = depth.clone();
3162 if inlined {
3163 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3164 inner_offset = next_offset;
3165 } else {
3166 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3167 inner_depth.increment()?;
3168 }
3169 let val_ref = self
3170 .composite_driver
3171 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
3172 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3173 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3174 {
3175 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3176 }
3177 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3178 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3179 }
3180 }
3181
3182 next_offset += envelope_size;
3183 _next_ordinal_to_read += 1;
3184 if next_offset >= end_offset {
3185 return Ok(());
3186 }
3187
3188 while _next_ordinal_to_read < 2 {
3190 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3191 _next_ordinal_to_read += 1;
3192 next_offset += envelope_size;
3193 }
3194
3195 let next_out_of_line = decoder.next_out_of_line();
3196 let handles_before = decoder.remaining_handles();
3197 if let Some((inlined, num_bytes, num_handles)) =
3198 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3199 {
3200 let member_inline_size = <fidl::encoding::UnboundedVector<
3201 fidl::encoding::UnboundedString,
3202 > as fidl::encoding::TypeMarker>::inline_size(
3203 decoder.context
3204 );
3205 if inlined != (member_inline_size <= 4) {
3206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3207 }
3208 let inner_offset;
3209 let mut inner_depth = depth.clone();
3210 if inlined {
3211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3212 inner_offset = next_offset;
3213 } else {
3214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3215 inner_depth.increment()?;
3216 }
3217 let val_ref = self.parent_names.get_or_insert_with(|| {
3218 fidl::new_empty!(
3219 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3220 D
3221 )
3222 });
3223 fidl::decode!(
3224 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3225 D,
3226 val_ref,
3227 decoder,
3228 inner_offset,
3229 inner_depth
3230 )?;
3231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3232 {
3233 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3234 }
3235 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3236 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3237 }
3238 }
3239
3240 next_offset += envelope_size;
3241 _next_ordinal_to_read += 1;
3242 if next_offset >= end_offset {
3243 return Ok(());
3244 }
3245
3246 while _next_ordinal_to_read < 3 {
3248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3249 _next_ordinal_to_read += 1;
3250 next_offset += envelope_size;
3251 }
3252
3253 let next_out_of_line = decoder.next_out_of_line();
3254 let handles_before = decoder.remaining_handles();
3255 if let Some((inlined, num_bytes, num_handles)) =
3256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3257 {
3258 let member_inline_size =
3259 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3260 if inlined != (member_inline_size <= 4) {
3261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3262 }
3263 let inner_offset;
3264 let mut inner_depth = depth.clone();
3265 if inlined {
3266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3267 inner_offset = next_offset;
3268 } else {
3269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3270 inner_depth.increment()?;
3271 }
3272 let val_ref =
3273 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3274 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3276 {
3277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3278 }
3279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3281 }
3282 }
3283
3284 next_offset += envelope_size;
3285
3286 while next_offset < end_offset {
3288 _next_ordinal_to_read += 1;
3289 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3290 next_offset += envelope_size;
3291 }
3292
3293 Ok(())
3294 }
3295 }
3296
3297 impl CompositeInfo {
3298 #[inline(always)]
3299 fn max_ordinal_present(&self) -> u64 {
3300 if let Some(_) = self.matched_driver {
3301 return 2;
3302 }
3303 if let Some(_) = self.spec {
3304 return 1;
3305 }
3306 0
3307 }
3308 }
3309
3310 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
3311 type Borrowed<'a> = &'a Self;
3312 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3313 value
3314 }
3315 }
3316
3317 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
3318 type Owned = Self;
3319
3320 #[inline(always)]
3321 fn inline_align(_context: fidl::encoding::Context) -> usize {
3322 8
3323 }
3324
3325 #[inline(always)]
3326 fn inline_size(_context: fidl::encoding::Context) -> usize {
3327 16
3328 }
3329 }
3330
3331 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
3332 for &CompositeInfo
3333 {
3334 unsafe fn encode(
3335 self,
3336 encoder: &mut fidl::encoding::Encoder<'_, D>,
3337 offset: usize,
3338 mut depth: fidl::encoding::Depth,
3339 ) -> fidl::Result<()> {
3340 encoder.debug_check_bounds::<CompositeInfo>(offset);
3341 let max_ordinal: u64 = self.max_ordinal_present();
3343 encoder.write_num(max_ordinal, offset);
3344 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3345 if max_ordinal == 0 {
3347 return Ok(());
3348 }
3349 depth.increment()?;
3350 let envelope_size = 8;
3351 let bytes_len = max_ordinal as usize * envelope_size;
3352 #[allow(unused_variables)]
3353 let offset = encoder.out_of_line_offset(bytes_len);
3354 let mut _prev_end_offset: usize = 0;
3355 if 1 > max_ordinal {
3356 return Ok(());
3357 }
3358
3359 let cur_offset: usize = (1 - 1) * envelope_size;
3362
3363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3365
3366 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
3371 self.spec
3372 .as_ref()
3373 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
3374 encoder,
3375 offset + cur_offset,
3376 depth,
3377 )?;
3378
3379 _prev_end_offset = cur_offset + envelope_size;
3380 if 2 > max_ordinal {
3381 return Ok(());
3382 }
3383
3384 let cur_offset: usize = (2 - 1) * envelope_size;
3387
3388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3390
3391 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
3396 self.matched_driver
3397 .as_ref()
3398 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
3399 encoder,
3400 offset + cur_offset,
3401 depth,
3402 )?;
3403
3404 _prev_end_offset = cur_offset + envelope_size;
3405
3406 Ok(())
3407 }
3408 }
3409
3410 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
3411 #[inline(always)]
3412 fn new_empty() -> Self {
3413 Self::default()
3414 }
3415
3416 unsafe fn decode(
3417 &mut self,
3418 decoder: &mut fidl::encoding::Decoder<'_, D>,
3419 offset: usize,
3420 mut depth: fidl::encoding::Depth,
3421 ) -> fidl::Result<()> {
3422 decoder.debug_check_bounds::<Self>(offset);
3423 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3424 None => return Err(fidl::Error::NotNullable),
3425 Some(len) => len,
3426 };
3427 if len == 0 {
3429 return Ok(());
3430 };
3431 depth.increment()?;
3432 let envelope_size = 8;
3433 let bytes_len = len * envelope_size;
3434 let offset = decoder.out_of_line_offset(bytes_len)?;
3435 let mut _next_ordinal_to_read = 0;
3437 let mut next_offset = offset;
3438 let end_offset = offset + bytes_len;
3439 _next_ordinal_to_read += 1;
3440 if next_offset >= end_offset {
3441 return Ok(());
3442 }
3443
3444 while _next_ordinal_to_read < 1 {
3446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3447 _next_ordinal_to_read += 1;
3448 next_offset += envelope_size;
3449 }
3450
3451 let next_out_of_line = decoder.next_out_of_line();
3452 let handles_before = decoder.remaining_handles();
3453 if let Some((inlined, num_bytes, num_handles)) =
3454 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3455 {
3456 let member_inline_size =
3457 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3458 if inlined != (member_inline_size <= 4) {
3459 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3460 }
3461 let inner_offset;
3462 let mut inner_depth = depth.clone();
3463 if inlined {
3464 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3465 inner_offset = next_offset;
3466 } else {
3467 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3468 inner_depth.increment()?;
3469 }
3470 let val_ref =
3471 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
3472 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
3473 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3474 {
3475 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3476 }
3477 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3478 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3479 }
3480 }
3481
3482 next_offset += envelope_size;
3483 _next_ordinal_to_read += 1;
3484 if next_offset >= end_offset {
3485 return Ok(());
3486 }
3487
3488 while _next_ordinal_to_read < 2 {
3490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3491 _next_ordinal_to_read += 1;
3492 next_offset += envelope_size;
3493 }
3494
3495 let next_out_of_line = decoder.next_out_of_line();
3496 let handles_before = decoder.remaining_handles();
3497 if let Some((inlined, num_bytes, num_handles)) =
3498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3499 {
3500 let member_inline_size =
3501 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
3502 decoder.context,
3503 );
3504 if inlined != (member_inline_size <= 4) {
3505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3506 }
3507 let inner_offset;
3508 let mut inner_depth = depth.clone();
3509 if inlined {
3510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3511 inner_offset = next_offset;
3512 } else {
3513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3514 inner_depth.increment()?;
3515 }
3516 let val_ref = self
3517 .matched_driver
3518 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
3519 fidl::decode!(
3520 CompositeDriverMatch,
3521 D,
3522 val_ref,
3523 decoder,
3524 inner_offset,
3525 inner_depth
3526 )?;
3527 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3528 {
3529 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3530 }
3531 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3532 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3533 }
3534 }
3535
3536 next_offset += envelope_size;
3537
3538 while next_offset < end_offset {
3540 _next_ordinal_to_read += 1;
3541 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3542 next_offset += envelope_size;
3543 }
3544
3545 Ok(())
3546 }
3547 }
3548
3549 impl CompositeNodeSpec {
3550 #[inline(always)]
3551 fn max_ordinal_present(&self) -> u64 {
3552 if let Some(_) = self.driver_host {
3553 return 4;
3554 }
3555 if let Some(_) = self.parents2 {
3556 return 3;
3557 }
3558 if let Some(_) = self.parents {
3559 return 2;
3560 }
3561 if let Some(_) = self.name {
3562 return 1;
3563 }
3564 0
3565 }
3566 }
3567
3568 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
3569 type Borrowed<'a> = &'a Self;
3570 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3571 value
3572 }
3573 }
3574
3575 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
3576 type Owned = Self;
3577
3578 #[inline(always)]
3579 fn inline_align(_context: fidl::encoding::Context) -> usize {
3580 8
3581 }
3582
3583 #[inline(always)]
3584 fn inline_size(_context: fidl::encoding::Context) -> usize {
3585 16
3586 }
3587 }
3588
3589 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
3590 for &CompositeNodeSpec
3591 {
3592 unsafe fn encode(
3593 self,
3594 encoder: &mut fidl::encoding::Encoder<'_, D>,
3595 offset: usize,
3596 mut depth: fidl::encoding::Depth,
3597 ) -> fidl::Result<()> {
3598 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
3599 let max_ordinal: u64 = self.max_ordinal_present();
3601 encoder.write_num(max_ordinal, offset);
3602 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3603 if max_ordinal == 0 {
3605 return Ok(());
3606 }
3607 depth.increment()?;
3608 let envelope_size = 8;
3609 let bytes_len = max_ordinal as usize * envelope_size;
3610 #[allow(unused_variables)]
3611 let offset = encoder.out_of_line_offset(bytes_len);
3612 let mut _prev_end_offset: usize = 0;
3613 if 1 > max_ordinal {
3614 return Ok(());
3615 }
3616
3617 let cur_offset: usize = (1 - 1) * envelope_size;
3620
3621 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3623
3624 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3629 self.name.as_ref().map(
3630 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3631 ),
3632 encoder,
3633 offset + cur_offset,
3634 depth,
3635 )?;
3636
3637 _prev_end_offset = cur_offset + envelope_size;
3638 if 2 > max_ordinal {
3639 return Ok(());
3640 }
3641
3642 let cur_offset: usize = (2 - 1) * envelope_size;
3645
3646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3648
3649 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec>, D>(
3654 self.parents.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::ValueTypeMarker>::borrow),
3655 encoder, offset + cur_offset, depth
3656 )?;
3657
3658 _prev_end_offset = cur_offset + envelope_size;
3659 if 3 > max_ordinal {
3660 return Ok(());
3661 }
3662
3663 let cur_offset: usize = (3 - 1) * envelope_size;
3666
3667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3669
3670 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec2>, D>(
3675 self.parents2.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::ValueTypeMarker>::borrow),
3676 encoder, offset + cur_offset, depth
3677 )?;
3678
3679 _prev_end_offset = cur_offset + envelope_size;
3680 if 4 > max_ordinal {
3681 return Ok(());
3682 }
3683
3684 let cur_offset: usize = (4 - 1) * envelope_size;
3687
3688 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3690
3691 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
3696 self.driver_host.as_ref().map(
3697 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
3698 ),
3699 encoder,
3700 offset + cur_offset,
3701 depth,
3702 )?;
3703
3704 _prev_end_offset = cur_offset + envelope_size;
3705
3706 Ok(())
3707 }
3708 }
3709
3710 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
3711 #[inline(always)]
3712 fn new_empty() -> Self {
3713 Self::default()
3714 }
3715
3716 unsafe fn decode(
3717 &mut self,
3718 decoder: &mut fidl::encoding::Decoder<'_, D>,
3719 offset: usize,
3720 mut depth: fidl::encoding::Depth,
3721 ) -> fidl::Result<()> {
3722 decoder.debug_check_bounds::<Self>(offset);
3723 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3724 None => return Err(fidl::Error::NotNullable),
3725 Some(len) => len,
3726 };
3727 if len == 0 {
3729 return Ok(());
3730 };
3731 depth.increment()?;
3732 let envelope_size = 8;
3733 let bytes_len = len * envelope_size;
3734 let offset = decoder.out_of_line_offset(bytes_len)?;
3735 let mut _next_ordinal_to_read = 0;
3737 let mut next_offset = offset;
3738 let end_offset = offset + bytes_len;
3739 _next_ordinal_to_read += 1;
3740 if next_offset >= end_offset {
3741 return Ok(());
3742 }
3743
3744 while _next_ordinal_to_read < 1 {
3746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3747 _next_ordinal_to_read += 1;
3748 next_offset += envelope_size;
3749 }
3750
3751 let next_out_of_line = decoder.next_out_of_line();
3752 let handles_before = decoder.remaining_handles();
3753 if let Some((inlined, num_bytes, num_handles)) =
3754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3755 {
3756 let member_inline_size =
3757 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3758 decoder.context,
3759 );
3760 if inlined != (member_inline_size <= 4) {
3761 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3762 }
3763 let inner_offset;
3764 let mut inner_depth = depth.clone();
3765 if inlined {
3766 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3767 inner_offset = next_offset;
3768 } else {
3769 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3770 inner_depth.increment()?;
3771 }
3772 let val_ref = self
3773 .name
3774 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3775 fidl::decode!(
3776 fidl::encoding::UnboundedString,
3777 D,
3778 val_ref,
3779 decoder,
3780 inner_offset,
3781 inner_depth
3782 )?;
3783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3784 {
3785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3786 }
3787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3789 }
3790 }
3791
3792 next_offset += envelope_size;
3793 _next_ordinal_to_read += 1;
3794 if next_offset >= end_offset {
3795 return Ok(());
3796 }
3797
3798 while _next_ordinal_to_read < 2 {
3800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3801 _next_ordinal_to_read += 1;
3802 next_offset += envelope_size;
3803 }
3804
3805 let next_out_of_line = decoder.next_out_of_line();
3806 let handles_before = decoder.remaining_handles();
3807 if let Some((inlined, num_bytes, num_handles)) =
3808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3809 {
3810 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3811 if inlined != (member_inline_size <= 4) {
3812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3813 }
3814 let inner_offset;
3815 let mut inner_depth = depth.clone();
3816 if inlined {
3817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3818 inner_offset = next_offset;
3819 } else {
3820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3821 inner_depth.increment()?;
3822 }
3823 let val_ref = self.parents.get_or_insert_with(|| {
3824 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec>, D)
3825 });
3826 fidl::decode!(
3827 fidl::encoding::UnboundedVector<ParentSpec>,
3828 D,
3829 val_ref,
3830 decoder,
3831 inner_offset,
3832 inner_depth
3833 )?;
3834 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3835 {
3836 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3837 }
3838 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3839 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3840 }
3841 }
3842
3843 next_offset += envelope_size;
3844 _next_ordinal_to_read += 1;
3845 if next_offset >= end_offset {
3846 return Ok(());
3847 }
3848
3849 while _next_ordinal_to_read < 3 {
3851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3852 _next_ordinal_to_read += 1;
3853 next_offset += envelope_size;
3854 }
3855
3856 let next_out_of_line = decoder.next_out_of_line();
3857 let handles_before = decoder.remaining_handles();
3858 if let Some((inlined, num_bytes, num_handles)) =
3859 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3860 {
3861 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3862 if inlined != (member_inline_size <= 4) {
3863 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3864 }
3865 let inner_offset;
3866 let mut inner_depth = depth.clone();
3867 if inlined {
3868 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3869 inner_offset = next_offset;
3870 } else {
3871 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3872 inner_depth.increment()?;
3873 }
3874 let val_ref = self.parents2.get_or_insert_with(|| {
3875 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec2>, D)
3876 });
3877 fidl::decode!(
3878 fidl::encoding::UnboundedVector<ParentSpec2>,
3879 D,
3880 val_ref,
3881 decoder,
3882 inner_offset,
3883 inner_depth
3884 )?;
3885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3886 {
3887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3888 }
3889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3891 }
3892 }
3893
3894 next_offset += envelope_size;
3895 _next_ordinal_to_read += 1;
3896 if next_offset >= end_offset {
3897 return Ok(());
3898 }
3899
3900 while _next_ordinal_to_read < 4 {
3902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3903 _next_ordinal_to_read += 1;
3904 next_offset += envelope_size;
3905 }
3906
3907 let next_out_of_line = decoder.next_out_of_line();
3908 let handles_before = decoder.remaining_handles();
3909 if let Some((inlined, num_bytes, num_handles)) =
3910 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3911 {
3912 let member_inline_size =
3913 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
3914 decoder.context,
3915 );
3916 if inlined != (member_inline_size <= 4) {
3917 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3918 }
3919 let inner_offset;
3920 let mut inner_depth = depth.clone();
3921 if inlined {
3922 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3923 inner_offset = next_offset;
3924 } else {
3925 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3926 inner_depth.increment()?;
3927 }
3928 let val_ref = self
3929 .driver_host
3930 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
3931 fidl::decode!(
3932 fidl::encoding::BoundedString<128>,
3933 D,
3934 val_ref,
3935 decoder,
3936 inner_offset,
3937 inner_depth
3938 )?;
3939 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3940 {
3941 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3942 }
3943 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3944 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3945 }
3946 }
3947
3948 next_offset += envelope_size;
3949
3950 while next_offset < end_offset {
3952 _next_ordinal_to_read += 1;
3953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3954 next_offset += envelope_size;
3955 }
3956
3957 Ok(())
3958 }
3959 }
3960
3961 impl CompositeParent {
3962 #[inline(always)]
3963 fn max_ordinal_present(&self) -> u64 {
3964 if let Some(_) = self.index {
3965 return 2;
3966 }
3967 if let Some(_) = self.composite {
3968 return 1;
3969 }
3970 0
3971 }
3972 }
3973
3974 impl fidl::encoding::ValueTypeMarker for CompositeParent {
3975 type Borrowed<'a> = &'a Self;
3976 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3977 value
3978 }
3979 }
3980
3981 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
3982 type Owned = Self;
3983
3984 #[inline(always)]
3985 fn inline_align(_context: fidl::encoding::Context) -> usize {
3986 8
3987 }
3988
3989 #[inline(always)]
3990 fn inline_size(_context: fidl::encoding::Context) -> usize {
3991 16
3992 }
3993 }
3994
3995 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
3996 for &CompositeParent
3997 {
3998 unsafe fn encode(
3999 self,
4000 encoder: &mut fidl::encoding::Encoder<'_, D>,
4001 offset: usize,
4002 mut depth: fidl::encoding::Depth,
4003 ) -> fidl::Result<()> {
4004 encoder.debug_check_bounds::<CompositeParent>(offset);
4005 let max_ordinal: u64 = self.max_ordinal_present();
4007 encoder.write_num(max_ordinal, offset);
4008 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4009 if max_ordinal == 0 {
4011 return Ok(());
4012 }
4013 depth.increment()?;
4014 let envelope_size = 8;
4015 let bytes_len = max_ordinal as usize * envelope_size;
4016 #[allow(unused_variables)]
4017 let offset = encoder.out_of_line_offset(bytes_len);
4018 let mut _prev_end_offset: usize = 0;
4019 if 1 > max_ordinal {
4020 return Ok(());
4021 }
4022
4023 let cur_offset: usize = (1 - 1) * envelope_size;
4026
4027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4029
4030 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
4035 self.composite
4036 .as_ref()
4037 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
4038 encoder,
4039 offset + cur_offset,
4040 depth,
4041 )?;
4042
4043 _prev_end_offset = cur_offset + envelope_size;
4044 if 2 > max_ordinal {
4045 return Ok(());
4046 }
4047
4048 let cur_offset: usize = (2 - 1) * envelope_size;
4051
4052 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4054
4055 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4060 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4061 encoder,
4062 offset + cur_offset,
4063 depth,
4064 )?;
4065
4066 _prev_end_offset = cur_offset + envelope_size;
4067
4068 Ok(())
4069 }
4070 }
4071
4072 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
4073 #[inline(always)]
4074 fn new_empty() -> Self {
4075 Self::default()
4076 }
4077
4078 unsafe fn decode(
4079 &mut self,
4080 decoder: &mut fidl::encoding::Decoder<'_, D>,
4081 offset: usize,
4082 mut depth: fidl::encoding::Depth,
4083 ) -> fidl::Result<()> {
4084 decoder.debug_check_bounds::<Self>(offset);
4085 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4086 None => return Err(fidl::Error::NotNullable),
4087 Some(len) => len,
4088 };
4089 if len == 0 {
4091 return Ok(());
4092 };
4093 depth.increment()?;
4094 let envelope_size = 8;
4095 let bytes_len = len * envelope_size;
4096 let offset = decoder.out_of_line_offset(bytes_len)?;
4097 let mut _next_ordinal_to_read = 0;
4099 let mut next_offset = offset;
4100 let end_offset = offset + bytes_len;
4101 _next_ordinal_to_read += 1;
4102 if next_offset >= end_offset {
4103 return Ok(());
4104 }
4105
4106 while _next_ordinal_to_read < 1 {
4108 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4109 _next_ordinal_to_read += 1;
4110 next_offset += envelope_size;
4111 }
4112
4113 let next_out_of_line = decoder.next_out_of_line();
4114 let handles_before = decoder.remaining_handles();
4115 if let Some((inlined, num_bytes, num_handles)) =
4116 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4117 {
4118 let member_inline_size =
4119 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4120 if inlined != (member_inline_size <= 4) {
4121 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4122 }
4123 let inner_offset;
4124 let mut inner_depth = depth.clone();
4125 if inlined {
4126 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4127 inner_offset = next_offset;
4128 } else {
4129 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4130 inner_depth.increment()?;
4131 }
4132 let val_ref =
4133 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
4134 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4135 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4136 {
4137 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4138 }
4139 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4140 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4141 }
4142 }
4143
4144 next_offset += envelope_size;
4145 _next_ordinal_to_read += 1;
4146 if next_offset >= end_offset {
4147 return Ok(());
4148 }
4149
4150 while _next_ordinal_to_read < 2 {
4152 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4153 _next_ordinal_to_read += 1;
4154 next_offset += envelope_size;
4155 }
4156
4157 let next_out_of_line = decoder.next_out_of_line();
4158 let handles_before = decoder.remaining_handles();
4159 if let Some((inlined, num_bytes, num_handles)) =
4160 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4161 {
4162 let member_inline_size =
4163 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4164 if inlined != (member_inline_size <= 4) {
4165 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4166 }
4167 let inner_offset;
4168 let mut inner_depth = depth.clone();
4169 if inlined {
4170 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4171 inner_offset = next_offset;
4172 } else {
4173 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4174 inner_depth.increment()?;
4175 }
4176 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
4177 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4178 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4179 {
4180 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4181 }
4182 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4183 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4184 }
4185 }
4186
4187 next_offset += envelope_size;
4188
4189 while next_offset < end_offset {
4191 _next_ordinal_to_read += 1;
4192 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4193 next_offset += envelope_size;
4194 }
4195
4196 Ok(())
4197 }
4198 }
4199
4200 impl Dependency {
4201 #[inline(always)]
4202 fn max_ordinal_present(&self) -> u64 {
4203 if let Some(_) = self.tags {
4204 return 2;
4205 }
4206 if let Some(_) = self.selector {
4207 return 1;
4208 }
4209 0
4210 }
4211 }
4212
4213 impl fidl::encoding::ValueTypeMarker for Dependency {
4214 type Borrowed<'a> = &'a Self;
4215 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4216 value
4217 }
4218 }
4219
4220 unsafe impl fidl::encoding::TypeMarker for Dependency {
4221 type Owned = Self;
4222
4223 #[inline(always)]
4224 fn inline_align(_context: fidl::encoding::Context) -> usize {
4225 8
4226 }
4227
4228 #[inline(always)]
4229 fn inline_size(_context: fidl::encoding::Context) -> usize {
4230 16
4231 }
4232 }
4233
4234 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dependency, D>
4235 for &Dependency
4236 {
4237 unsafe fn encode(
4238 self,
4239 encoder: &mut fidl::encoding::Encoder<'_, D>,
4240 offset: usize,
4241 mut depth: fidl::encoding::Depth,
4242 ) -> fidl::Result<()> {
4243 encoder.debug_check_bounds::<Dependency>(offset);
4244 let max_ordinal: u64 = self.max_ordinal_present();
4246 encoder.write_num(max_ordinal, offset);
4247 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4248 if max_ordinal == 0 {
4250 return Ok(());
4251 }
4252 depth.increment()?;
4253 let envelope_size = 8;
4254 let bytes_len = max_ordinal as usize * envelope_size;
4255 #[allow(unused_variables)]
4256 let offset = encoder.out_of_line_offset(bytes_len);
4257 let mut _prev_end_offset: usize = 0;
4258 if 1 > max_ordinal {
4259 return Ok(());
4260 }
4261
4262 let cur_offset: usize = (1 - 1) * envelope_size;
4265
4266 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4268
4269 fidl::encoding::encode_in_envelope_optional::<Selector, D>(
4274 self.selector.as_ref().map(<Selector as fidl::encoding::ValueTypeMarker>::borrow),
4275 encoder,
4276 offset + cur_offset,
4277 depth,
4278 )?;
4279
4280 _prev_end_offset = cur_offset + envelope_size;
4281 if 2 > max_ordinal {
4282 return Ok(());
4283 }
4284
4285 let cur_offset: usize = (2 - 1) * envelope_size;
4288
4289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4291
4292 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
4297 self.tags.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4298 encoder, offset + cur_offset, depth
4299 )?;
4300
4301 _prev_end_offset = cur_offset + envelope_size;
4302
4303 Ok(())
4304 }
4305 }
4306
4307 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dependency {
4308 #[inline(always)]
4309 fn new_empty() -> Self {
4310 Self::default()
4311 }
4312
4313 unsafe fn decode(
4314 &mut self,
4315 decoder: &mut fidl::encoding::Decoder<'_, D>,
4316 offset: usize,
4317 mut depth: fidl::encoding::Depth,
4318 ) -> fidl::Result<()> {
4319 decoder.debug_check_bounds::<Self>(offset);
4320 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4321 None => return Err(fidl::Error::NotNullable),
4322 Some(len) => len,
4323 };
4324 if len == 0 {
4326 return Ok(());
4327 };
4328 depth.increment()?;
4329 let envelope_size = 8;
4330 let bytes_len = len * envelope_size;
4331 let offset = decoder.out_of_line_offset(bytes_len)?;
4332 let mut _next_ordinal_to_read = 0;
4334 let mut next_offset = offset;
4335 let end_offset = offset + bytes_len;
4336 _next_ordinal_to_read += 1;
4337 if next_offset >= end_offset {
4338 return Ok(());
4339 }
4340
4341 while _next_ordinal_to_read < 1 {
4343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4344 _next_ordinal_to_read += 1;
4345 next_offset += envelope_size;
4346 }
4347
4348 let next_out_of_line = decoder.next_out_of_line();
4349 let handles_before = decoder.remaining_handles();
4350 if let Some((inlined, num_bytes, num_handles)) =
4351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4352 {
4353 let member_inline_size =
4354 <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4355 if inlined != (member_inline_size <= 4) {
4356 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4357 }
4358 let inner_offset;
4359 let mut inner_depth = depth.clone();
4360 if inlined {
4361 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4362 inner_offset = next_offset;
4363 } else {
4364 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4365 inner_depth.increment()?;
4366 }
4367 let val_ref = self.selector.get_or_insert_with(|| fidl::new_empty!(Selector, D));
4368 fidl::decode!(Selector, D, val_ref, decoder, inner_offset, inner_depth)?;
4369 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4370 {
4371 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4372 }
4373 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4374 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4375 }
4376 }
4377
4378 next_offset += envelope_size;
4379 _next_ordinal_to_read += 1;
4380 if next_offset >= end_offset {
4381 return Ok(());
4382 }
4383
4384 while _next_ordinal_to_read < 2 {
4386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4387 _next_ordinal_to_read += 1;
4388 next_offset += envelope_size;
4389 }
4390
4391 let next_out_of_line = decoder.next_out_of_line();
4392 let handles_before = decoder.remaining_handles();
4393 if let Some((inlined, num_bytes, num_handles)) =
4394 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4395 {
4396 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4397 if inlined != (member_inline_size <= 4) {
4398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4399 }
4400 let inner_offset;
4401 let mut inner_depth = depth.clone();
4402 if inlined {
4403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4404 inner_offset = next_offset;
4405 } else {
4406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4407 inner_depth.increment()?;
4408 }
4409 let val_ref = self.tags.get_or_insert_with(
4410 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
4411 );
4412 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4414 {
4415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4416 }
4417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4419 }
4420 }
4421
4422 next_offset += envelope_size;
4423
4424 while next_offset < end_offset {
4426 _next_ordinal_to_read += 1;
4427 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4428 next_offset += envelope_size;
4429 }
4430
4431 Ok(())
4432 }
4433 }
4434
4435 impl DeviceCategory {
4436 #[inline(always)]
4437 fn max_ordinal_present(&self) -> u64 {
4438 if let Some(_) = self.subcategory {
4439 return 2;
4440 }
4441 if let Some(_) = self.category {
4442 return 1;
4443 }
4444 0
4445 }
4446 }
4447
4448 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
4449 type Borrowed<'a> = &'a Self;
4450 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4451 value
4452 }
4453 }
4454
4455 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
4456 type Owned = Self;
4457
4458 #[inline(always)]
4459 fn inline_align(_context: fidl::encoding::Context) -> usize {
4460 8
4461 }
4462
4463 #[inline(always)]
4464 fn inline_size(_context: fidl::encoding::Context) -> usize {
4465 16
4466 }
4467 }
4468
4469 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
4470 for &DeviceCategory
4471 {
4472 unsafe fn encode(
4473 self,
4474 encoder: &mut fidl::encoding::Encoder<'_, D>,
4475 offset: usize,
4476 mut depth: fidl::encoding::Depth,
4477 ) -> fidl::Result<()> {
4478 encoder.debug_check_bounds::<DeviceCategory>(offset);
4479 let max_ordinal: u64 = self.max_ordinal_present();
4481 encoder.write_num(max_ordinal, offset);
4482 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4483 if max_ordinal == 0 {
4485 return Ok(());
4486 }
4487 depth.increment()?;
4488 let envelope_size = 8;
4489 let bytes_len = max_ordinal as usize * envelope_size;
4490 #[allow(unused_variables)]
4491 let offset = encoder.out_of_line_offset(bytes_len);
4492 let mut _prev_end_offset: usize = 0;
4493 if 1 > max_ordinal {
4494 return Ok(());
4495 }
4496
4497 let cur_offset: usize = (1 - 1) * envelope_size;
4500
4501 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4503
4504 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4509 self.category.as_ref().map(
4510 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4511 ),
4512 encoder,
4513 offset + cur_offset,
4514 depth,
4515 )?;
4516
4517 _prev_end_offset = cur_offset + envelope_size;
4518 if 2 > max_ordinal {
4519 return Ok(());
4520 }
4521
4522 let cur_offset: usize = (2 - 1) * envelope_size;
4525
4526 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4528
4529 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4534 self.subcategory.as_ref().map(
4535 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4536 ),
4537 encoder,
4538 offset + cur_offset,
4539 depth,
4540 )?;
4541
4542 _prev_end_offset = cur_offset + envelope_size;
4543
4544 Ok(())
4545 }
4546 }
4547
4548 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
4549 #[inline(always)]
4550 fn new_empty() -> Self {
4551 Self::default()
4552 }
4553
4554 unsafe fn decode(
4555 &mut self,
4556 decoder: &mut fidl::encoding::Decoder<'_, D>,
4557 offset: usize,
4558 mut depth: fidl::encoding::Depth,
4559 ) -> fidl::Result<()> {
4560 decoder.debug_check_bounds::<Self>(offset);
4561 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4562 None => return Err(fidl::Error::NotNullable),
4563 Some(len) => len,
4564 };
4565 if len == 0 {
4567 return Ok(());
4568 };
4569 depth.increment()?;
4570 let envelope_size = 8;
4571 let bytes_len = len * envelope_size;
4572 let offset = decoder.out_of_line_offset(bytes_len)?;
4573 let mut _next_ordinal_to_read = 0;
4575 let mut next_offset = offset;
4576 let end_offset = offset + bytes_len;
4577 _next_ordinal_to_read += 1;
4578 if next_offset >= end_offset {
4579 return Ok(());
4580 }
4581
4582 while _next_ordinal_to_read < 1 {
4584 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4585 _next_ordinal_to_read += 1;
4586 next_offset += envelope_size;
4587 }
4588
4589 let next_out_of_line = decoder.next_out_of_line();
4590 let handles_before = decoder.remaining_handles();
4591 if let Some((inlined, num_bytes, num_handles)) =
4592 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4593 {
4594 let member_inline_size =
4595 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4596 decoder.context,
4597 );
4598 if inlined != (member_inline_size <= 4) {
4599 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4600 }
4601 let inner_offset;
4602 let mut inner_depth = depth.clone();
4603 if inlined {
4604 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4605 inner_offset = next_offset;
4606 } else {
4607 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4608 inner_depth.increment()?;
4609 }
4610 let val_ref = self
4611 .category
4612 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4613 fidl::decode!(
4614 fidl::encoding::UnboundedString,
4615 D,
4616 val_ref,
4617 decoder,
4618 inner_offset,
4619 inner_depth
4620 )?;
4621 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4622 {
4623 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4624 }
4625 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4626 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4627 }
4628 }
4629
4630 next_offset += envelope_size;
4631 _next_ordinal_to_read += 1;
4632 if next_offset >= end_offset {
4633 return Ok(());
4634 }
4635
4636 while _next_ordinal_to_read < 2 {
4638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4639 _next_ordinal_to_read += 1;
4640 next_offset += envelope_size;
4641 }
4642
4643 let next_out_of_line = decoder.next_out_of_line();
4644 let handles_before = decoder.remaining_handles();
4645 if let Some((inlined, num_bytes, num_handles)) =
4646 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4647 {
4648 let member_inline_size =
4649 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4650 decoder.context,
4651 );
4652 if inlined != (member_inline_size <= 4) {
4653 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4654 }
4655 let inner_offset;
4656 let mut inner_depth = depth.clone();
4657 if inlined {
4658 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4659 inner_offset = next_offset;
4660 } else {
4661 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4662 inner_depth.increment()?;
4663 }
4664 let val_ref = self
4665 .subcategory
4666 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4667 fidl::decode!(
4668 fidl::encoding::UnboundedString,
4669 D,
4670 val_ref,
4671 decoder,
4672 inner_offset,
4673 inner_depth
4674 )?;
4675 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4676 {
4677 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4678 }
4679 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4680 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4681 }
4682 }
4683
4684 next_offset += envelope_size;
4685
4686 while next_offset < end_offset {
4688 _next_ordinal_to_read += 1;
4689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4690 next_offset += envelope_size;
4691 }
4692
4693 Ok(())
4694 }
4695 }
4696
4697 impl DriverInfo {
4698 #[inline(always)]
4699 fn max_ordinal_present(&self) -> u64 {
4700 if let Some(_) = self.is_disabled {
4701 return 9;
4702 }
4703 if let Some(_) = self.driver_framework_version {
4704 return 8;
4705 }
4706 if let Some(_) = self.bind_rules_bytecode {
4707 return 7;
4708 }
4709 if let Some(_) = self.device_categories {
4710 return 6;
4711 }
4712 if let Some(_) = self.is_fallback {
4713 return 5;
4714 }
4715 if let Some(_) = self.package_type {
4716 return 4;
4717 }
4718 if let Some(_) = self.colocate {
4719 return 3;
4720 }
4721 if let Some(_) = self.name {
4722 return 2;
4723 }
4724 if let Some(_) = self.url {
4725 return 1;
4726 }
4727 0
4728 }
4729 }
4730
4731 impl fidl::encoding::ValueTypeMarker for DriverInfo {
4732 type Borrowed<'a> = &'a Self;
4733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4734 value
4735 }
4736 }
4737
4738 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
4739 type Owned = Self;
4740
4741 #[inline(always)]
4742 fn inline_align(_context: fidl::encoding::Context) -> usize {
4743 8
4744 }
4745
4746 #[inline(always)]
4747 fn inline_size(_context: fidl::encoding::Context) -> usize {
4748 16
4749 }
4750 }
4751
4752 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
4753 for &DriverInfo
4754 {
4755 unsafe fn encode(
4756 self,
4757 encoder: &mut fidl::encoding::Encoder<'_, D>,
4758 offset: usize,
4759 mut depth: fidl::encoding::Depth,
4760 ) -> fidl::Result<()> {
4761 encoder.debug_check_bounds::<DriverInfo>(offset);
4762 let max_ordinal: u64 = self.max_ordinal_present();
4764 encoder.write_num(max_ordinal, offset);
4765 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4766 if max_ordinal == 0 {
4768 return Ok(());
4769 }
4770 depth.increment()?;
4771 let envelope_size = 8;
4772 let bytes_len = max_ordinal as usize * envelope_size;
4773 #[allow(unused_variables)]
4774 let offset = encoder.out_of_line_offset(bytes_len);
4775 let mut _prev_end_offset: usize = 0;
4776 if 1 > max_ordinal {
4777 return Ok(());
4778 }
4779
4780 let cur_offset: usize = (1 - 1) * envelope_size;
4783
4784 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4786
4787 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4792 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4793 encoder, offset + cur_offset, depth
4794 )?;
4795
4796 _prev_end_offset = cur_offset + envelope_size;
4797 if 2 > max_ordinal {
4798 return Ok(());
4799 }
4800
4801 let cur_offset: usize = (2 - 1) * envelope_size;
4804
4805 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4807
4808 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4813 self.name.as_ref().map(
4814 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4815 ),
4816 encoder,
4817 offset + cur_offset,
4818 depth,
4819 )?;
4820
4821 _prev_end_offset = cur_offset + envelope_size;
4822 if 3 > max_ordinal {
4823 return Ok(());
4824 }
4825
4826 let cur_offset: usize = (3 - 1) * envelope_size;
4829
4830 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4832
4833 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4838 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4839 encoder,
4840 offset + cur_offset,
4841 depth,
4842 )?;
4843
4844 _prev_end_offset = cur_offset + envelope_size;
4845 if 4 > max_ordinal {
4846 return Ok(());
4847 }
4848
4849 let cur_offset: usize = (4 - 1) * envelope_size;
4852
4853 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4855
4856 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
4861 self.package_type
4862 .as_ref()
4863 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
4864 encoder,
4865 offset + cur_offset,
4866 depth,
4867 )?;
4868
4869 _prev_end_offset = cur_offset + envelope_size;
4870 if 5 > max_ordinal {
4871 return Ok(());
4872 }
4873
4874 let cur_offset: usize = (5 - 1) * envelope_size;
4877
4878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4880
4881 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4886 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4887 encoder,
4888 offset + cur_offset,
4889 depth,
4890 )?;
4891
4892 _prev_end_offset = cur_offset + envelope_size;
4893 if 6 > max_ordinal {
4894 return Ok(());
4895 }
4896
4897 let cur_offset: usize = (6 - 1) * envelope_size;
4900
4901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4903
4904 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
4909 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
4910 encoder, offset + cur_offset, depth
4911 )?;
4912
4913 _prev_end_offset = cur_offset + envelope_size;
4914 if 7 > max_ordinal {
4915 return Ok(());
4916 }
4917
4918 let cur_offset: usize = (7 - 1) * envelope_size;
4921
4922 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4924
4925 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4930 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4931 encoder, offset + cur_offset, depth
4932 )?;
4933
4934 _prev_end_offset = cur_offset + envelope_size;
4935 if 8 > max_ordinal {
4936 return Ok(());
4937 }
4938
4939 let cur_offset: usize = (8 - 1) * envelope_size;
4942
4943 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4945
4946 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4951 self.driver_framework_version
4952 .as_ref()
4953 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4954 encoder,
4955 offset + cur_offset,
4956 depth,
4957 )?;
4958
4959 _prev_end_offset = cur_offset + envelope_size;
4960 if 9 > max_ordinal {
4961 return Ok(());
4962 }
4963
4964 let cur_offset: usize = (9 - 1) * envelope_size;
4967
4968 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4970
4971 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4976 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4977 encoder,
4978 offset + cur_offset,
4979 depth,
4980 )?;
4981
4982 _prev_end_offset = cur_offset + envelope_size;
4983
4984 Ok(())
4985 }
4986 }
4987
4988 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
4989 #[inline(always)]
4990 fn new_empty() -> Self {
4991 Self::default()
4992 }
4993
4994 unsafe fn decode(
4995 &mut self,
4996 decoder: &mut fidl::encoding::Decoder<'_, D>,
4997 offset: usize,
4998 mut depth: fidl::encoding::Depth,
4999 ) -> fidl::Result<()> {
5000 decoder.debug_check_bounds::<Self>(offset);
5001 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5002 None => return Err(fidl::Error::NotNullable),
5003 Some(len) => len,
5004 };
5005 if len == 0 {
5007 return Ok(());
5008 };
5009 depth.increment()?;
5010 let envelope_size = 8;
5011 let bytes_len = len * envelope_size;
5012 let offset = decoder.out_of_line_offset(bytes_len)?;
5013 let mut _next_ordinal_to_read = 0;
5015 let mut next_offset = offset;
5016 let end_offset = offset + bytes_len;
5017 _next_ordinal_to_read += 1;
5018 if next_offset >= end_offset {
5019 return Ok(());
5020 }
5021
5022 while _next_ordinal_to_read < 1 {
5024 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5025 _next_ordinal_to_read += 1;
5026 next_offset += envelope_size;
5027 }
5028
5029 let next_out_of_line = decoder.next_out_of_line();
5030 let handles_before = decoder.remaining_handles();
5031 if let Some((inlined, num_bytes, num_handles)) =
5032 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5033 {
5034 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5035 if inlined != (member_inline_size <= 4) {
5036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5037 }
5038 let inner_offset;
5039 let mut inner_depth = depth.clone();
5040 if inlined {
5041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5042 inner_offset = next_offset;
5043 } else {
5044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5045 inner_depth.increment()?;
5046 }
5047 let val_ref = self.url.get_or_insert_with(|| {
5048 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5049 });
5050 fidl::decode!(
5051 fidl::encoding::BoundedString<4096>,
5052 D,
5053 val_ref,
5054 decoder,
5055 inner_offset,
5056 inner_depth
5057 )?;
5058 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5059 {
5060 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5061 }
5062 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5063 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5064 }
5065 }
5066
5067 next_offset += envelope_size;
5068 _next_ordinal_to_read += 1;
5069 if next_offset >= end_offset {
5070 return Ok(());
5071 }
5072
5073 while _next_ordinal_to_read < 2 {
5075 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5076 _next_ordinal_to_read += 1;
5077 next_offset += envelope_size;
5078 }
5079
5080 let next_out_of_line = decoder.next_out_of_line();
5081 let handles_before = decoder.remaining_handles();
5082 if let Some((inlined, num_bytes, num_handles)) =
5083 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5084 {
5085 let member_inline_size =
5086 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5087 decoder.context,
5088 );
5089 if inlined != (member_inline_size <= 4) {
5090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5091 }
5092 let inner_offset;
5093 let mut inner_depth = depth.clone();
5094 if inlined {
5095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5096 inner_offset = next_offset;
5097 } else {
5098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5099 inner_depth.increment()?;
5100 }
5101 let val_ref = self
5102 .name
5103 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5104 fidl::decode!(
5105 fidl::encoding::UnboundedString,
5106 D,
5107 val_ref,
5108 decoder,
5109 inner_offset,
5110 inner_depth
5111 )?;
5112 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5113 {
5114 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5115 }
5116 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5117 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5118 }
5119 }
5120
5121 next_offset += envelope_size;
5122 _next_ordinal_to_read += 1;
5123 if next_offset >= end_offset {
5124 return Ok(());
5125 }
5126
5127 while _next_ordinal_to_read < 3 {
5129 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5130 _next_ordinal_to_read += 1;
5131 next_offset += envelope_size;
5132 }
5133
5134 let next_out_of_line = decoder.next_out_of_line();
5135 let handles_before = decoder.remaining_handles();
5136 if let Some((inlined, num_bytes, num_handles)) =
5137 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5138 {
5139 let member_inline_size =
5140 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5141 if inlined != (member_inline_size <= 4) {
5142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5143 }
5144 let inner_offset;
5145 let mut inner_depth = depth.clone();
5146 if inlined {
5147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5148 inner_offset = next_offset;
5149 } else {
5150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5151 inner_depth.increment()?;
5152 }
5153 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
5154 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5156 {
5157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5158 }
5159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5161 }
5162 }
5163
5164 next_offset += envelope_size;
5165 _next_ordinal_to_read += 1;
5166 if next_offset >= end_offset {
5167 return Ok(());
5168 }
5169
5170 while _next_ordinal_to_read < 4 {
5172 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5173 _next_ordinal_to_read += 1;
5174 next_offset += envelope_size;
5175 }
5176
5177 let next_out_of_line = decoder.next_out_of_line();
5178 let handles_before = decoder.remaining_handles();
5179 if let Some((inlined, num_bytes, num_handles)) =
5180 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5181 {
5182 let member_inline_size =
5183 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5184 if inlined != (member_inline_size <= 4) {
5185 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5186 }
5187 let inner_offset;
5188 let mut inner_depth = depth.clone();
5189 if inlined {
5190 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5191 inner_offset = next_offset;
5192 } else {
5193 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5194 inner_depth.increment()?;
5195 }
5196 let val_ref =
5197 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
5198 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
5199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5200 {
5201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5202 }
5203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5205 }
5206 }
5207
5208 next_offset += envelope_size;
5209 _next_ordinal_to_read += 1;
5210 if next_offset >= end_offset {
5211 return Ok(());
5212 }
5213
5214 while _next_ordinal_to_read < 5 {
5216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5217 _next_ordinal_to_read += 1;
5218 next_offset += envelope_size;
5219 }
5220
5221 let next_out_of_line = decoder.next_out_of_line();
5222 let handles_before = decoder.remaining_handles();
5223 if let Some((inlined, num_bytes, num_handles)) =
5224 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5225 {
5226 let member_inline_size =
5227 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5228 if inlined != (member_inline_size <= 4) {
5229 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5230 }
5231 let inner_offset;
5232 let mut inner_depth = depth.clone();
5233 if inlined {
5234 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5235 inner_offset = next_offset;
5236 } else {
5237 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5238 inner_depth.increment()?;
5239 }
5240 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
5241 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5242 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5243 {
5244 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5245 }
5246 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5247 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5248 }
5249 }
5250
5251 next_offset += envelope_size;
5252 _next_ordinal_to_read += 1;
5253 if next_offset >= end_offset {
5254 return Ok(());
5255 }
5256
5257 while _next_ordinal_to_read < 6 {
5259 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5260 _next_ordinal_to_read += 1;
5261 next_offset += envelope_size;
5262 }
5263
5264 let next_out_of_line = decoder.next_out_of_line();
5265 let handles_before = decoder.remaining_handles();
5266 if let Some((inlined, num_bytes, num_handles)) =
5267 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5268 {
5269 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5270 if inlined != (member_inline_size <= 4) {
5271 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5272 }
5273 let inner_offset;
5274 let mut inner_depth = depth.clone();
5275 if inlined {
5276 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5277 inner_offset = next_offset;
5278 } else {
5279 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5280 inner_depth.increment()?;
5281 }
5282 let val_ref = self.device_categories.get_or_insert_with(|| {
5283 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
5284 });
5285 fidl::decode!(
5286 fidl::encoding::UnboundedVector<DeviceCategory>,
5287 D,
5288 val_ref,
5289 decoder,
5290 inner_offset,
5291 inner_depth
5292 )?;
5293 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5294 {
5295 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5296 }
5297 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5298 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5299 }
5300 }
5301
5302 next_offset += envelope_size;
5303 _next_ordinal_to_read += 1;
5304 if next_offset >= end_offset {
5305 return Ok(());
5306 }
5307
5308 while _next_ordinal_to_read < 7 {
5310 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5311 _next_ordinal_to_read += 1;
5312 next_offset += envelope_size;
5313 }
5314
5315 let next_out_of_line = decoder.next_out_of_line();
5316 let handles_before = decoder.remaining_handles();
5317 if let Some((inlined, num_bytes, num_handles)) =
5318 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5319 {
5320 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5321 if inlined != (member_inline_size <= 4) {
5322 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5323 }
5324 let inner_offset;
5325 let mut inner_depth = depth.clone();
5326 if inlined {
5327 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5328 inner_offset = next_offset;
5329 } else {
5330 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5331 inner_depth.increment()?;
5332 }
5333 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
5334 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5335 });
5336 fidl::decode!(
5337 fidl::encoding::UnboundedVector<u8>,
5338 D,
5339 val_ref,
5340 decoder,
5341 inner_offset,
5342 inner_depth
5343 )?;
5344 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5345 {
5346 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5347 }
5348 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5349 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5350 }
5351 }
5352
5353 next_offset += envelope_size;
5354 _next_ordinal_to_read += 1;
5355 if next_offset >= end_offset {
5356 return Ok(());
5357 }
5358
5359 while _next_ordinal_to_read < 8 {
5361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5362 _next_ordinal_to_read += 1;
5363 next_offset += envelope_size;
5364 }
5365
5366 let next_out_of_line = decoder.next_out_of_line();
5367 let handles_before = decoder.remaining_handles();
5368 if let Some((inlined, num_bytes, num_handles)) =
5369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5370 {
5371 let member_inline_size =
5372 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5373 if inlined != (member_inline_size <= 4) {
5374 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5375 }
5376 let inner_offset;
5377 let mut inner_depth = depth.clone();
5378 if inlined {
5379 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5380 inner_offset = next_offset;
5381 } else {
5382 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5383 inner_depth.increment()?;
5384 }
5385 let val_ref =
5386 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
5387 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5389 {
5390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5391 }
5392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5394 }
5395 }
5396
5397 next_offset += envelope_size;
5398 _next_ordinal_to_read += 1;
5399 if next_offset >= end_offset {
5400 return Ok(());
5401 }
5402
5403 while _next_ordinal_to_read < 9 {
5405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5406 _next_ordinal_to_read += 1;
5407 next_offset += envelope_size;
5408 }
5409
5410 let next_out_of_line = decoder.next_out_of_line();
5411 let handles_before = decoder.remaining_handles();
5412 if let Some((inlined, num_bytes, num_handles)) =
5413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5414 {
5415 let member_inline_size =
5416 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5417 if inlined != (member_inline_size <= 4) {
5418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5419 }
5420 let inner_offset;
5421 let mut inner_depth = depth.clone();
5422 if inlined {
5423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5424 inner_offset = next_offset;
5425 } else {
5426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5427 inner_depth.increment()?;
5428 }
5429 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5430 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5432 {
5433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5434 }
5435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5437 }
5438 }
5439
5440 next_offset += envelope_size;
5441
5442 while next_offset < end_offset {
5444 _next_ordinal_to_read += 1;
5445 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5446 next_offset += envelope_size;
5447 }
5448
5449 Ok(())
5450 }
5451 }
5452
5453 impl Node2 {
5454 #[inline(always)]
5455 fn max_ordinal_present(&self) -> u64 {
5456 if let Some(_) = self.dependencies {
5457 return 2;
5458 }
5459 if let Some(_) = self.name {
5460 return 1;
5461 }
5462 0
5463 }
5464 }
5465
5466 impl fidl::encoding::ValueTypeMarker for Node2 {
5467 type Borrowed<'a> = &'a Self;
5468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5469 value
5470 }
5471 }
5472
5473 unsafe impl fidl::encoding::TypeMarker for Node2 {
5474 type Owned = Self;
5475
5476 #[inline(always)]
5477 fn inline_align(_context: fidl::encoding::Context) -> usize {
5478 8
5479 }
5480
5481 #[inline(always)]
5482 fn inline_size(_context: fidl::encoding::Context) -> usize {
5483 16
5484 }
5485 }
5486
5487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node2, D> for &Node2 {
5488 unsafe fn encode(
5489 self,
5490 encoder: &mut fidl::encoding::Encoder<'_, D>,
5491 offset: usize,
5492 mut depth: fidl::encoding::Depth,
5493 ) -> fidl::Result<()> {
5494 encoder.debug_check_bounds::<Node2>(offset);
5495 let max_ordinal: u64 = self.max_ordinal_present();
5497 encoder.write_num(max_ordinal, offset);
5498 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5499 if max_ordinal == 0 {
5501 return Ok(());
5502 }
5503 depth.increment()?;
5504 let envelope_size = 8;
5505 let bytes_len = max_ordinal as usize * envelope_size;
5506 #[allow(unused_variables)]
5507 let offset = encoder.out_of_line_offset(bytes_len);
5508 let mut _prev_end_offset: usize = 0;
5509 if 1 > max_ordinal {
5510 return Ok(());
5511 }
5512
5513 let cur_offset: usize = (1 - 1) * envelope_size;
5516
5517 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5519
5520 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5525 self.name.as_ref().map(
5526 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5527 ),
5528 encoder,
5529 offset + cur_offset,
5530 depth,
5531 )?;
5532
5533 _prev_end_offset = cur_offset + envelope_size;
5534 if 2 > max_ordinal {
5535 return Ok(());
5536 }
5537
5538 let cur_offset: usize = (2 - 1) * envelope_size;
5541
5542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5544
5545 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Dependency>, D>(
5550 self.dependencies.as_ref().map(<fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::ValueTypeMarker>::borrow),
5551 encoder, offset + cur_offset, depth
5552 )?;
5553
5554 _prev_end_offset = cur_offset + envelope_size;
5555
5556 Ok(())
5557 }
5558 }
5559
5560 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node2 {
5561 #[inline(always)]
5562 fn new_empty() -> Self {
5563 Self::default()
5564 }
5565
5566 unsafe fn decode(
5567 &mut self,
5568 decoder: &mut fidl::encoding::Decoder<'_, D>,
5569 offset: usize,
5570 mut depth: fidl::encoding::Depth,
5571 ) -> fidl::Result<()> {
5572 decoder.debug_check_bounds::<Self>(offset);
5573 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5574 None => return Err(fidl::Error::NotNullable),
5575 Some(len) => len,
5576 };
5577 if len == 0 {
5579 return Ok(());
5580 };
5581 depth.increment()?;
5582 let envelope_size = 8;
5583 let bytes_len = len * envelope_size;
5584 let offset = decoder.out_of_line_offset(bytes_len)?;
5585 let mut _next_ordinal_to_read = 0;
5587 let mut next_offset = offset;
5588 let end_offset = offset + bytes_len;
5589 _next_ordinal_to_read += 1;
5590 if next_offset >= end_offset {
5591 return Ok(());
5592 }
5593
5594 while _next_ordinal_to_read < 1 {
5596 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5597 _next_ordinal_to_read += 1;
5598 next_offset += envelope_size;
5599 }
5600
5601 let next_out_of_line = decoder.next_out_of_line();
5602 let handles_before = decoder.remaining_handles();
5603 if let Some((inlined, num_bytes, num_handles)) =
5604 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5605 {
5606 let member_inline_size =
5607 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5608 decoder.context,
5609 );
5610 if inlined != (member_inline_size <= 4) {
5611 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5612 }
5613 let inner_offset;
5614 let mut inner_depth = depth.clone();
5615 if inlined {
5616 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5617 inner_offset = next_offset;
5618 } else {
5619 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5620 inner_depth.increment()?;
5621 }
5622 let val_ref = self
5623 .name
5624 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5625 fidl::decode!(
5626 fidl::encoding::UnboundedString,
5627 D,
5628 val_ref,
5629 decoder,
5630 inner_offset,
5631 inner_depth
5632 )?;
5633 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5634 {
5635 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5636 }
5637 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5638 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5639 }
5640 }
5641
5642 next_offset += envelope_size;
5643 _next_ordinal_to_read += 1;
5644 if next_offset >= end_offset {
5645 return Ok(());
5646 }
5647
5648 while _next_ordinal_to_read < 2 {
5650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5651 _next_ordinal_to_read += 1;
5652 next_offset += envelope_size;
5653 }
5654
5655 let next_out_of_line = decoder.next_out_of_line();
5656 let handles_before = decoder.remaining_handles();
5657 if let Some((inlined, num_bytes, num_handles)) =
5658 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5659 {
5660 let member_inline_size = <fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5661 if inlined != (member_inline_size <= 4) {
5662 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5663 }
5664 let inner_offset;
5665 let mut inner_depth = depth.clone();
5666 if inlined {
5667 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5668 inner_offset = next_offset;
5669 } else {
5670 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5671 inner_depth.increment()?;
5672 }
5673 let val_ref = self.dependencies.get_or_insert_with(|| {
5674 fidl::new_empty!(fidl::encoding::UnboundedVector<Dependency>, D)
5675 });
5676 fidl::decode!(
5677 fidl::encoding::UnboundedVector<Dependency>,
5678 D,
5679 val_ref,
5680 decoder,
5681 inner_offset,
5682 inner_depth
5683 )?;
5684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5685 {
5686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5687 }
5688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5690 }
5691 }
5692
5693 next_offset += envelope_size;
5694
5695 while next_offset < end_offset {
5697 _next_ordinal_to_read += 1;
5698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5699 next_offset += envelope_size;
5700 }
5701
5702 Ok(())
5703 }
5704 }
5705
5706 impl NodeControllerRequestBindRequest {
5707 #[inline(always)]
5708 fn max_ordinal_present(&self) -> u64 {
5709 if let Some(_) = self.driver_url_suffix {
5710 return 2;
5711 }
5712 if let Some(_) = self.force_rebind {
5713 return 1;
5714 }
5715 0
5716 }
5717 }
5718
5719 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
5720 type Borrowed<'a> = &'a Self;
5721 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5722 value
5723 }
5724 }
5725
5726 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
5727 type Owned = Self;
5728
5729 #[inline(always)]
5730 fn inline_align(_context: fidl::encoding::Context) -> usize {
5731 8
5732 }
5733
5734 #[inline(always)]
5735 fn inline_size(_context: fidl::encoding::Context) -> usize {
5736 16
5737 }
5738 }
5739
5740 unsafe impl<D: fidl::encoding::ResourceDialect>
5741 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
5742 for &NodeControllerRequestBindRequest
5743 {
5744 unsafe fn encode(
5745 self,
5746 encoder: &mut fidl::encoding::Encoder<'_, D>,
5747 offset: usize,
5748 mut depth: fidl::encoding::Depth,
5749 ) -> fidl::Result<()> {
5750 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
5751 let max_ordinal: u64 = self.max_ordinal_present();
5753 encoder.write_num(max_ordinal, offset);
5754 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5755 if max_ordinal == 0 {
5757 return Ok(());
5758 }
5759 depth.increment()?;
5760 let envelope_size = 8;
5761 let bytes_len = max_ordinal as usize * envelope_size;
5762 #[allow(unused_variables)]
5763 let offset = encoder.out_of_line_offset(bytes_len);
5764 let mut _prev_end_offset: usize = 0;
5765 if 1 > max_ordinal {
5766 return Ok(());
5767 }
5768
5769 let cur_offset: usize = (1 - 1) * envelope_size;
5772
5773 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5775
5776 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5781 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5782 encoder,
5783 offset + cur_offset,
5784 depth,
5785 )?;
5786
5787 _prev_end_offset = cur_offset + envelope_size;
5788 if 2 > max_ordinal {
5789 return Ok(());
5790 }
5791
5792 let cur_offset: usize = (2 - 1) * envelope_size;
5795
5796 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5798
5799 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5804 self.driver_url_suffix.as_ref().map(
5805 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5806 ),
5807 encoder,
5808 offset + cur_offset,
5809 depth,
5810 )?;
5811
5812 _prev_end_offset = cur_offset + envelope_size;
5813
5814 Ok(())
5815 }
5816 }
5817
5818 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5819 for NodeControllerRequestBindRequest
5820 {
5821 #[inline(always)]
5822 fn new_empty() -> Self {
5823 Self::default()
5824 }
5825
5826 unsafe fn decode(
5827 &mut self,
5828 decoder: &mut fidl::encoding::Decoder<'_, D>,
5829 offset: usize,
5830 mut depth: fidl::encoding::Depth,
5831 ) -> fidl::Result<()> {
5832 decoder.debug_check_bounds::<Self>(offset);
5833 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5834 None => return Err(fidl::Error::NotNullable),
5835 Some(len) => len,
5836 };
5837 if len == 0 {
5839 return Ok(());
5840 };
5841 depth.increment()?;
5842 let envelope_size = 8;
5843 let bytes_len = len * envelope_size;
5844 let offset = decoder.out_of_line_offset(bytes_len)?;
5845 let mut _next_ordinal_to_read = 0;
5847 let mut next_offset = offset;
5848 let end_offset = offset + bytes_len;
5849 _next_ordinal_to_read += 1;
5850 if next_offset >= end_offset {
5851 return Ok(());
5852 }
5853
5854 while _next_ordinal_to_read < 1 {
5856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5857 _next_ordinal_to_read += 1;
5858 next_offset += envelope_size;
5859 }
5860
5861 let next_out_of_line = decoder.next_out_of_line();
5862 let handles_before = decoder.remaining_handles();
5863 if let Some((inlined, num_bytes, num_handles)) =
5864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5865 {
5866 let member_inline_size =
5867 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5868 if inlined != (member_inline_size <= 4) {
5869 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5870 }
5871 let inner_offset;
5872 let mut inner_depth = depth.clone();
5873 if inlined {
5874 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5875 inner_offset = next_offset;
5876 } else {
5877 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5878 inner_depth.increment()?;
5879 }
5880 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
5881 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5882 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5883 {
5884 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5885 }
5886 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5887 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5888 }
5889 }
5890
5891 next_offset += envelope_size;
5892 _next_ordinal_to_read += 1;
5893 if next_offset >= end_offset {
5894 return Ok(());
5895 }
5896
5897 while _next_ordinal_to_read < 2 {
5899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5900 _next_ordinal_to_read += 1;
5901 next_offset += envelope_size;
5902 }
5903
5904 let next_out_of_line = decoder.next_out_of_line();
5905 let handles_before = decoder.remaining_handles();
5906 if let Some((inlined, num_bytes, num_handles)) =
5907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5908 {
5909 let member_inline_size =
5910 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5911 decoder.context,
5912 );
5913 if inlined != (member_inline_size <= 4) {
5914 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5915 }
5916 let inner_offset;
5917 let mut inner_depth = depth.clone();
5918 if inlined {
5919 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5920 inner_offset = next_offset;
5921 } else {
5922 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5923 inner_depth.increment()?;
5924 }
5925 let val_ref = self
5926 .driver_url_suffix
5927 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5928 fidl::decode!(
5929 fidl::encoding::UnboundedString,
5930 D,
5931 val_ref,
5932 decoder,
5933 inner_offset,
5934 inner_depth
5935 )?;
5936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5937 {
5938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5939 }
5940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5942 }
5943 }
5944
5945 next_offset += envelope_size;
5946
5947 while next_offset < end_offset {
5949 _next_ordinal_to_read += 1;
5950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5951 next_offset += envelope_size;
5952 }
5953
5954 Ok(())
5955 }
5956 }
5957
5958 impl NodeSymbol {
5959 #[inline(always)]
5960 fn max_ordinal_present(&self) -> u64 {
5961 if let Some(_) = self.module_name {
5962 return 3;
5963 }
5964 if let Some(_) = self.address {
5965 return 2;
5966 }
5967 if let Some(_) = self.name {
5968 return 1;
5969 }
5970 0
5971 }
5972 }
5973
5974 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
5975 type Borrowed<'a> = &'a Self;
5976 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5977 value
5978 }
5979 }
5980
5981 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
5982 type Owned = Self;
5983
5984 #[inline(always)]
5985 fn inline_align(_context: fidl::encoding::Context) -> usize {
5986 8
5987 }
5988
5989 #[inline(always)]
5990 fn inline_size(_context: fidl::encoding::Context) -> usize {
5991 16
5992 }
5993 }
5994
5995 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
5996 for &NodeSymbol
5997 {
5998 unsafe fn encode(
5999 self,
6000 encoder: &mut fidl::encoding::Encoder<'_, D>,
6001 offset: usize,
6002 mut depth: fidl::encoding::Depth,
6003 ) -> fidl::Result<()> {
6004 encoder.debug_check_bounds::<NodeSymbol>(offset);
6005 let max_ordinal: u64 = self.max_ordinal_present();
6007 encoder.write_num(max_ordinal, offset);
6008 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6009 if max_ordinal == 0 {
6011 return Ok(());
6012 }
6013 depth.increment()?;
6014 let envelope_size = 8;
6015 let bytes_len = max_ordinal as usize * envelope_size;
6016 #[allow(unused_variables)]
6017 let offset = encoder.out_of_line_offset(bytes_len);
6018 let mut _prev_end_offset: usize = 0;
6019 if 1 > max_ordinal {
6020 return Ok(());
6021 }
6022
6023 let cur_offset: usize = (1 - 1) * envelope_size;
6026
6027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6029
6030 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
6035 self.name.as_ref().map(
6036 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
6037 ),
6038 encoder,
6039 offset + cur_offset,
6040 depth,
6041 )?;
6042
6043 _prev_end_offset = cur_offset + envelope_size;
6044 if 2 > max_ordinal {
6045 return Ok(());
6046 }
6047
6048 let cur_offset: usize = (2 - 1) * envelope_size;
6051
6052 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6054
6055 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6060 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6061 encoder,
6062 offset + cur_offset,
6063 depth,
6064 )?;
6065
6066 _prev_end_offset = cur_offset + envelope_size;
6067 if 3 > max_ordinal {
6068 return Ok(());
6069 }
6070
6071 let cur_offset: usize = (3 - 1) * envelope_size;
6074
6075 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6077
6078 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
6083 self.module_name.as_ref().map(
6084 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
6085 ),
6086 encoder,
6087 offset + cur_offset,
6088 depth,
6089 )?;
6090
6091 _prev_end_offset = cur_offset + envelope_size;
6092
6093 Ok(())
6094 }
6095 }
6096
6097 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
6098 #[inline(always)]
6099 fn new_empty() -> Self {
6100 Self::default()
6101 }
6102
6103 unsafe fn decode(
6104 &mut self,
6105 decoder: &mut fidl::encoding::Decoder<'_, D>,
6106 offset: usize,
6107 mut depth: fidl::encoding::Depth,
6108 ) -> fidl::Result<()> {
6109 decoder.debug_check_bounds::<Self>(offset);
6110 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6111 None => return Err(fidl::Error::NotNullable),
6112 Some(len) => len,
6113 };
6114 if len == 0 {
6116 return Ok(());
6117 };
6118 depth.increment()?;
6119 let envelope_size = 8;
6120 let bytes_len = len * envelope_size;
6121 let offset = decoder.out_of_line_offset(bytes_len)?;
6122 let mut _next_ordinal_to_read = 0;
6124 let mut next_offset = offset;
6125 let end_offset = offset + bytes_len;
6126 _next_ordinal_to_read += 1;
6127 if next_offset >= end_offset {
6128 return Ok(());
6129 }
6130
6131 while _next_ordinal_to_read < 1 {
6133 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6134 _next_ordinal_to_read += 1;
6135 next_offset += envelope_size;
6136 }
6137
6138 let next_out_of_line = decoder.next_out_of_line();
6139 let handles_before = decoder.remaining_handles();
6140 if let Some((inlined, num_bytes, num_handles)) =
6141 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6142 {
6143 let member_inline_size =
6144 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6145 decoder.context,
6146 );
6147 if inlined != (member_inline_size <= 4) {
6148 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6149 }
6150 let inner_offset;
6151 let mut inner_depth = depth.clone();
6152 if inlined {
6153 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6154 inner_offset = next_offset;
6155 } else {
6156 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6157 inner_depth.increment()?;
6158 }
6159 let val_ref = self
6160 .name
6161 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6162 fidl::decode!(
6163 fidl::encoding::BoundedString<128>,
6164 D,
6165 val_ref,
6166 decoder,
6167 inner_offset,
6168 inner_depth
6169 )?;
6170 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6171 {
6172 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6173 }
6174 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6175 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6176 }
6177 }
6178
6179 next_offset += envelope_size;
6180 _next_ordinal_to_read += 1;
6181 if next_offset >= end_offset {
6182 return Ok(());
6183 }
6184
6185 while _next_ordinal_to_read < 2 {
6187 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6188 _next_ordinal_to_read += 1;
6189 next_offset += envelope_size;
6190 }
6191
6192 let next_out_of_line = decoder.next_out_of_line();
6193 let handles_before = decoder.remaining_handles();
6194 if let Some((inlined, num_bytes, num_handles)) =
6195 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6196 {
6197 let member_inline_size =
6198 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6199 if inlined != (member_inline_size <= 4) {
6200 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6201 }
6202 let inner_offset;
6203 let mut inner_depth = depth.clone();
6204 if inlined {
6205 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6206 inner_offset = next_offset;
6207 } else {
6208 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6209 inner_depth.increment()?;
6210 }
6211 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
6212 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6213 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6214 {
6215 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6216 }
6217 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6218 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6219 }
6220 }
6221
6222 next_offset += envelope_size;
6223 _next_ordinal_to_read += 1;
6224 if next_offset >= end_offset {
6225 return Ok(());
6226 }
6227
6228 while _next_ordinal_to_read < 3 {
6230 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6231 _next_ordinal_to_read += 1;
6232 next_offset += envelope_size;
6233 }
6234
6235 let next_out_of_line = decoder.next_out_of_line();
6236 let handles_before = decoder.remaining_handles();
6237 if let Some((inlined, num_bytes, num_handles)) =
6238 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6239 {
6240 let member_inline_size =
6241 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6242 decoder.context,
6243 );
6244 if inlined != (member_inline_size <= 4) {
6245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6246 }
6247 let inner_offset;
6248 let mut inner_depth = depth.clone();
6249 if inlined {
6250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6251 inner_offset = next_offset;
6252 } else {
6253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6254 inner_depth.increment()?;
6255 }
6256 let val_ref = self
6257 .module_name
6258 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6259 fidl::decode!(
6260 fidl::encoding::BoundedString<128>,
6261 D,
6262 val_ref,
6263 decoder,
6264 inner_offset,
6265 inner_depth
6266 )?;
6267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6268 {
6269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6270 }
6271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6273 }
6274 }
6275
6276 next_offset += envelope_size;
6277
6278 while next_offset < end_offset {
6280 _next_ordinal_to_read += 1;
6281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6282 next_offset += envelope_size;
6283 }
6284
6285 Ok(())
6286 }
6287 }
6288
6289 impl Selector {
6290 #[inline(always)]
6291 fn max_ordinal_present(&self) -> u64 {
6292 if let Some(_) = self.exclude_properties {
6293 return 3;
6294 }
6295 if let Some(_) = self.include_properties {
6296 return 2;
6297 }
6298 if let Some(_) = self.offers {
6299 return 1;
6300 }
6301 0
6302 }
6303 }
6304
6305 impl fidl::encoding::ValueTypeMarker for Selector {
6306 type Borrowed<'a> = &'a Self;
6307 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6308 value
6309 }
6310 }
6311
6312 unsafe impl fidl::encoding::TypeMarker for Selector {
6313 type Owned = Self;
6314
6315 #[inline(always)]
6316 fn inline_align(_context: fidl::encoding::Context) -> usize {
6317 8
6318 }
6319
6320 #[inline(always)]
6321 fn inline_size(_context: fidl::encoding::Context) -> usize {
6322 16
6323 }
6324 }
6325
6326 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
6327 unsafe fn encode(
6328 self,
6329 encoder: &mut fidl::encoding::Encoder<'_, D>,
6330 offset: usize,
6331 mut depth: fidl::encoding::Depth,
6332 ) -> fidl::Result<()> {
6333 encoder.debug_check_bounds::<Selector>(offset);
6334 let max_ordinal: u64 = self.max_ordinal_present();
6336 encoder.write_num(max_ordinal, offset);
6337 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6338 if max_ordinal == 0 {
6340 return Ok(());
6341 }
6342 depth.increment()?;
6343 let envelope_size = 8;
6344 let bytes_len = max_ordinal as usize * envelope_size;
6345 #[allow(unused_variables)]
6346 let offset = encoder.out_of_line_offset(bytes_len);
6347 let mut _prev_end_offset: usize = 0;
6348 if 1 > max_ordinal {
6349 return Ok(());
6350 }
6351
6352 let cur_offset: usize = (1 - 1) * envelope_size;
6355
6356 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6358
6359 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Offer, 128>, D>(
6364 self.offers.as_ref().map(
6365 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
6366 ),
6367 encoder,
6368 offset + cur_offset,
6369 depth,
6370 )?;
6371
6372 _prev_end_offset = cur_offset + envelope_size;
6373 if 2 > max_ordinal {
6374 return Ok(());
6375 }
6376
6377 let cur_offset: usize = (2 - 1) * envelope_size;
6380
6381 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6383
6384 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
6389 self.include_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6390 encoder, offset + cur_offset, depth
6391 )?;
6392
6393 _prev_end_offset = cur_offset + envelope_size;
6394 if 3 > max_ordinal {
6395 return Ok(());
6396 }
6397
6398 let cur_offset: usize = (3 - 1) * envelope_size;
6401
6402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6404
6405 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
6410 self.exclude_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6411 encoder, offset + cur_offset, depth
6412 )?;
6413
6414 _prev_end_offset = cur_offset + envelope_size;
6415
6416 Ok(())
6417 }
6418 }
6419
6420 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
6421 #[inline(always)]
6422 fn new_empty() -> Self {
6423 Self::default()
6424 }
6425
6426 unsafe fn decode(
6427 &mut self,
6428 decoder: &mut fidl::encoding::Decoder<'_, D>,
6429 offset: usize,
6430 mut depth: fidl::encoding::Depth,
6431 ) -> fidl::Result<()> {
6432 decoder.debug_check_bounds::<Self>(offset);
6433 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6434 None => return Err(fidl::Error::NotNullable),
6435 Some(len) => len,
6436 };
6437 if len == 0 {
6439 return Ok(());
6440 };
6441 depth.increment()?;
6442 let envelope_size = 8;
6443 let bytes_len = len * envelope_size;
6444 let offset = decoder.out_of_line_offset(bytes_len)?;
6445 let mut _next_ordinal_to_read = 0;
6447 let mut next_offset = offset;
6448 let end_offset = offset + bytes_len;
6449 _next_ordinal_to_read += 1;
6450 if next_offset >= end_offset {
6451 return Ok(());
6452 }
6453
6454 while _next_ordinal_to_read < 1 {
6456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6457 _next_ordinal_to_read += 1;
6458 next_offset += envelope_size;
6459 }
6460
6461 let next_out_of_line = decoder.next_out_of_line();
6462 let handles_before = decoder.remaining_handles();
6463 if let Some((inlined, num_bytes, num_handles)) =
6464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6465 {
6466 let member_inline_size =
6467 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
6468 decoder.context,
6469 );
6470 if inlined != (member_inline_size <= 4) {
6471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6472 }
6473 let inner_offset;
6474 let mut inner_depth = depth.clone();
6475 if inlined {
6476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6477 inner_offset = next_offset;
6478 } else {
6479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6480 inner_depth.increment()?;
6481 }
6482 let val_ref = self
6483 .offers
6484 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, D));
6485 fidl::decode!(fidl::encoding::Vector<Offer, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
6486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6487 {
6488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6489 }
6490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6492 }
6493 }
6494
6495 next_offset += envelope_size;
6496 _next_ordinal_to_read += 1;
6497 if next_offset >= end_offset {
6498 return Ok(());
6499 }
6500
6501 while _next_ordinal_to_read < 2 {
6503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6504 _next_ordinal_to_read += 1;
6505 next_offset += envelope_size;
6506 }
6507
6508 let next_out_of_line = decoder.next_out_of_line();
6509 let handles_before = decoder.remaining_handles();
6510 if let Some((inlined, num_bytes, num_handles)) =
6511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6512 {
6513 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6514 if inlined != (member_inline_size <= 4) {
6515 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6516 }
6517 let inner_offset;
6518 let mut inner_depth = depth.clone();
6519 if inlined {
6520 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6521 inner_offset = next_offset;
6522 } else {
6523 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6524 inner_depth.increment()?;
6525 }
6526 let val_ref = self.include_properties.get_or_insert_with(
6527 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
6528 );
6529 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6530 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6531 {
6532 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6533 }
6534 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6535 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6536 }
6537 }
6538
6539 next_offset += envelope_size;
6540 _next_ordinal_to_read += 1;
6541 if next_offset >= end_offset {
6542 return Ok(());
6543 }
6544
6545 while _next_ordinal_to_read < 3 {
6547 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6548 _next_ordinal_to_read += 1;
6549 next_offset += envelope_size;
6550 }
6551
6552 let next_out_of_line = decoder.next_out_of_line();
6553 let handles_before = decoder.remaining_handles();
6554 if let Some((inlined, num_bytes, num_handles)) =
6555 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6556 {
6557 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6558 if inlined != (member_inline_size <= 4) {
6559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6560 }
6561 let inner_offset;
6562 let mut inner_depth = depth.clone();
6563 if inlined {
6564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6565 inner_offset = next_offset;
6566 } else {
6567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6568 inner_depth.increment()?;
6569 }
6570 let val_ref = self.exclude_properties.get_or_insert_with(
6571 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
6572 );
6573 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6574 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6575 {
6576 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6577 }
6578 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6579 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6580 }
6581 }
6582
6583 next_offset += envelope_size;
6584
6585 while next_offset < end_offset {
6587 _next_ordinal_to_read += 1;
6588 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6589 next_offset += envelope_size;
6590 }
6591
6592 Ok(())
6593 }
6594 }
6595
6596 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
6597 type Borrowed<'a> = &'a Self;
6598 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6599 value
6600 }
6601 }
6602
6603 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
6604 type Owned = Self;
6605
6606 #[inline(always)]
6607 fn inline_align(_context: fidl::encoding::Context) -> usize {
6608 8
6609 }
6610
6611 #[inline(always)]
6612 fn inline_size(_context: fidl::encoding::Context) -> usize {
6613 16
6614 }
6615 }
6616
6617 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
6618 for &DeviceAddress
6619 {
6620 #[inline]
6621 unsafe fn encode(
6622 self,
6623 encoder: &mut fidl::encoding::Encoder<'_, D>,
6624 offset: usize,
6625 _depth: fidl::encoding::Depth,
6626 ) -> fidl::Result<()> {
6627 encoder.debug_check_bounds::<DeviceAddress>(offset);
6628 encoder.write_num::<u64>(self.ordinal(), offset);
6629 match self {
6630 DeviceAddress::IntValue(ref val) => {
6631 fidl::encoding::encode_in_envelope::<u8, D>(
6632 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
6633 encoder, offset + 8, _depth
6634 )
6635 }
6636 DeviceAddress::ArrayIntValue(ref val) => {
6637 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
6638 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
6639 encoder, offset + 8, _depth
6640 )
6641 }
6642 DeviceAddress::CharIntValue(ref val) => {
6643 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
6644 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
6645 encoder, offset + 8, _depth
6646 )
6647 }
6648 DeviceAddress::ArrayCharIntValue(ref val) => {
6649 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
6650 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
6651 encoder, offset + 8, _depth
6652 )
6653 }
6654 DeviceAddress::StringValue(ref val) => {
6655 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
6656 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
6657 encoder, offset + 8, _depth
6658 )
6659 }
6660 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6661 }
6662 }
6663 }
6664
6665 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
6666 #[inline(always)]
6667 fn new_empty() -> Self {
6668 Self::__SourceBreaking { unknown_ordinal: 0 }
6669 }
6670
6671 #[inline]
6672 unsafe fn decode(
6673 &mut self,
6674 decoder: &mut fidl::encoding::Decoder<'_, D>,
6675 offset: usize,
6676 mut depth: fidl::encoding::Depth,
6677 ) -> fidl::Result<()> {
6678 decoder.debug_check_bounds::<Self>(offset);
6679 #[allow(unused_variables)]
6680 let next_out_of_line = decoder.next_out_of_line();
6681 let handles_before = decoder.remaining_handles();
6682 let (ordinal, inlined, num_bytes, num_handles) =
6683 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6684
6685 let member_inline_size = match ordinal {
6686 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6687 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6688 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6689 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6690 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6691 0 => return Err(fidl::Error::UnknownUnionTag),
6692 _ => num_bytes as usize,
6693 };
6694
6695 if inlined != (member_inline_size <= 4) {
6696 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6697 }
6698 let _inner_offset;
6699 if inlined {
6700 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6701 _inner_offset = offset + 8;
6702 } else {
6703 depth.increment()?;
6704 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6705 }
6706 match ordinal {
6707 1 => {
6708 #[allow(irrefutable_let_patterns)]
6709 if let DeviceAddress::IntValue(_) = self {
6710 } else {
6712 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
6714 }
6715 #[allow(irrefutable_let_patterns)]
6716 if let DeviceAddress::IntValue(ref mut val) = self {
6717 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
6718 } else {
6719 unreachable!()
6720 }
6721 }
6722 2 => {
6723 #[allow(irrefutable_let_patterns)]
6724 if let DeviceAddress::ArrayIntValue(_) = self {
6725 } else {
6727 *self = DeviceAddress::ArrayIntValue(
6729 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
6730 );
6731 }
6732 #[allow(irrefutable_let_patterns)]
6733 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
6734 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
6735 } else {
6736 unreachable!()
6737 }
6738 }
6739 3 => {
6740 #[allow(irrefutable_let_patterns)]
6741 if let DeviceAddress::CharIntValue(_) = self {
6742 } else {
6744 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
6746 fidl::encoding::BoundedString<4>,
6747 D
6748 ));
6749 }
6750 #[allow(irrefutable_let_patterns)]
6751 if let DeviceAddress::CharIntValue(ref mut val) = self {
6752 fidl::decode!(
6753 fidl::encoding::BoundedString<4>,
6754 D,
6755 val,
6756 decoder,
6757 _inner_offset,
6758 depth
6759 )?;
6760 } else {
6761 unreachable!()
6762 }
6763 }
6764 4 => {
6765 #[allow(irrefutable_let_patterns)]
6766 if let DeviceAddress::ArrayCharIntValue(_) = self {
6767 } else {
6769 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
6771 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
6772 D
6773 ));
6774 }
6775 #[allow(irrefutable_let_patterns)]
6776 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
6777 fidl::decode!(
6778 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
6779 D,
6780 val,
6781 decoder,
6782 _inner_offset,
6783 depth
6784 )?;
6785 } else {
6786 unreachable!()
6787 }
6788 }
6789 5 => {
6790 #[allow(irrefutable_let_patterns)]
6791 if let DeviceAddress::StringValue(_) = self {
6792 } else {
6794 *self = DeviceAddress::StringValue(fidl::new_empty!(
6796 fidl::encoding::BoundedString<32>,
6797 D
6798 ));
6799 }
6800 #[allow(irrefutable_let_patterns)]
6801 if let DeviceAddress::StringValue(ref mut val) = self {
6802 fidl::decode!(
6803 fidl::encoding::BoundedString<32>,
6804 D,
6805 val,
6806 decoder,
6807 _inner_offset,
6808 depth
6809 )?;
6810 } else {
6811 unreachable!()
6812 }
6813 }
6814 #[allow(deprecated)]
6815 ordinal => {
6816 for _ in 0..num_handles {
6817 decoder.drop_next_handle()?;
6818 }
6819 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
6820 }
6821 }
6822 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6823 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6824 }
6825 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6826 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6827 }
6828 Ok(())
6829 }
6830 }
6831
6832 impl fidl::encoding::ValueTypeMarker for NodePropertyKey {
6833 type Borrowed<'a> = &'a Self;
6834 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6835 value
6836 }
6837 }
6838
6839 unsafe impl fidl::encoding::TypeMarker for NodePropertyKey {
6840 type Owned = Self;
6841
6842 #[inline(always)]
6843 fn inline_align(_context: fidl::encoding::Context) -> usize {
6844 8
6845 }
6846
6847 #[inline(always)]
6848 fn inline_size(_context: fidl::encoding::Context) -> usize {
6849 16
6850 }
6851 }
6852
6853 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyKey, D>
6854 for &NodePropertyKey
6855 {
6856 #[inline]
6857 unsafe fn encode(
6858 self,
6859 encoder: &mut fidl::encoding::Encoder<'_, D>,
6860 offset: usize,
6861 _depth: fidl::encoding::Depth,
6862 ) -> fidl::Result<()> {
6863 encoder.debug_check_bounds::<NodePropertyKey>(offset);
6864 encoder.write_num::<u64>(self.ordinal(), offset);
6865 match self {
6866 NodePropertyKey::IntValue(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
6867 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6868 encoder,
6869 offset + 8,
6870 _depth,
6871 ),
6872 NodePropertyKey::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
6873 fidl::encoding::BoundedString<256>,
6874 D,
6875 >(
6876 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
6877 val,
6878 ),
6879 encoder,
6880 offset + 8,
6881 _depth,
6882 ),
6883 }
6884 }
6885 }
6886
6887 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyKey {
6888 #[inline(always)]
6889 fn new_empty() -> Self {
6890 Self::IntValue(fidl::new_empty!(u32, D))
6891 }
6892
6893 #[inline]
6894 unsafe fn decode(
6895 &mut self,
6896 decoder: &mut fidl::encoding::Decoder<'_, D>,
6897 offset: usize,
6898 mut depth: fidl::encoding::Depth,
6899 ) -> fidl::Result<()> {
6900 decoder.debug_check_bounds::<Self>(offset);
6901 #[allow(unused_variables)]
6902 let next_out_of_line = decoder.next_out_of_line();
6903 let handles_before = decoder.remaining_handles();
6904 let (ordinal, inlined, num_bytes, num_handles) =
6905 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6906
6907 let member_inline_size = match ordinal {
6908 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6909 2 => {
6910 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6911 decoder.context,
6912 )
6913 }
6914 _ => return Err(fidl::Error::UnknownUnionTag),
6915 };
6916
6917 if inlined != (member_inline_size <= 4) {
6918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6919 }
6920 let _inner_offset;
6921 if inlined {
6922 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6923 _inner_offset = offset + 8;
6924 } else {
6925 depth.increment()?;
6926 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6927 }
6928 match ordinal {
6929 1 => {
6930 #[allow(irrefutable_let_patterns)]
6931 if let NodePropertyKey::IntValue(_) = self {
6932 } else {
6934 *self = NodePropertyKey::IntValue(fidl::new_empty!(u32, D));
6936 }
6937 #[allow(irrefutable_let_patterns)]
6938 if let NodePropertyKey::IntValue(ref mut val) = self {
6939 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
6940 } else {
6941 unreachable!()
6942 }
6943 }
6944 2 => {
6945 #[allow(irrefutable_let_patterns)]
6946 if let NodePropertyKey::StringValue(_) = self {
6947 } else {
6949 *self = NodePropertyKey::StringValue(fidl::new_empty!(
6951 fidl::encoding::BoundedString<256>,
6952 D
6953 ));
6954 }
6955 #[allow(irrefutable_let_patterns)]
6956 if let NodePropertyKey::StringValue(ref mut val) = self {
6957 fidl::decode!(
6958 fidl::encoding::BoundedString<256>,
6959 D,
6960 val,
6961 decoder,
6962 _inner_offset,
6963 depth
6964 )?;
6965 } else {
6966 unreachable!()
6967 }
6968 }
6969 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6970 }
6971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6973 }
6974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6976 }
6977 Ok(())
6978 }
6979 }
6980
6981 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
6982 type Borrowed<'a> = &'a Self;
6983 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6984 value
6985 }
6986 }
6987
6988 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
6989 type Owned = Self;
6990
6991 #[inline(always)]
6992 fn inline_align(_context: fidl::encoding::Context) -> usize {
6993 8
6994 }
6995
6996 #[inline(always)]
6997 fn inline_size(_context: fidl::encoding::Context) -> usize {
6998 16
6999 }
7000 }
7001
7002 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
7003 for &NodePropertyValue
7004 {
7005 #[inline]
7006 unsafe fn encode(
7007 self,
7008 encoder: &mut fidl::encoding::Encoder<'_, D>,
7009 offset: usize,
7010 _depth: fidl::encoding::Depth,
7011 ) -> fidl::Result<()> {
7012 encoder.debug_check_bounds::<NodePropertyValue>(offset);
7013 encoder.write_num::<u64>(self.ordinal(), offset);
7014 match self {
7015 NodePropertyValue::IntValue(ref val) => {
7016 fidl::encoding::encode_in_envelope::<u32, D>(
7017 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7018 encoder,
7019 offset + 8,
7020 _depth,
7021 )
7022 }
7023 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
7024 fidl::encoding::BoundedString<256>,
7025 D,
7026 >(
7027 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
7028 val,
7029 ),
7030 encoder,
7031 offset + 8,
7032 _depth,
7033 ),
7034 NodePropertyValue::BoolValue(ref val) => {
7035 fidl::encoding::encode_in_envelope::<bool, D>(
7036 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
7037 encoder,
7038 offset + 8,
7039 _depth,
7040 )
7041 }
7042 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
7043 fidl::encoding::BoundedString<256>,
7044 D,
7045 >(
7046 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
7047 val,
7048 ),
7049 encoder,
7050 offset + 8,
7051 _depth,
7052 ),
7053 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7054 }
7055 }
7056 }
7057
7058 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
7059 #[inline(always)]
7060 fn new_empty() -> Self {
7061 Self::__SourceBreaking { unknown_ordinal: 0 }
7062 }
7063
7064 #[inline]
7065 unsafe fn decode(
7066 &mut self,
7067 decoder: &mut fidl::encoding::Decoder<'_, D>,
7068 offset: usize,
7069 mut depth: fidl::encoding::Depth,
7070 ) -> fidl::Result<()> {
7071 decoder.debug_check_bounds::<Self>(offset);
7072 #[allow(unused_variables)]
7073 let next_out_of_line = decoder.next_out_of_line();
7074 let handles_before = decoder.remaining_handles();
7075 let (ordinal, inlined, num_bytes, num_handles) =
7076 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7077
7078 let member_inline_size = match ordinal {
7079 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7080 2 => {
7081 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
7082 decoder.context,
7083 )
7084 }
7085 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7086 4 => {
7087 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
7088 decoder.context,
7089 )
7090 }
7091 0 => return Err(fidl::Error::UnknownUnionTag),
7092 _ => num_bytes as usize,
7093 };
7094
7095 if inlined != (member_inline_size <= 4) {
7096 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7097 }
7098 let _inner_offset;
7099 if inlined {
7100 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7101 _inner_offset = offset + 8;
7102 } else {
7103 depth.increment()?;
7104 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7105 }
7106 match ordinal {
7107 1 => {
7108 #[allow(irrefutable_let_patterns)]
7109 if let NodePropertyValue::IntValue(_) = self {
7110 } else {
7112 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
7114 }
7115 #[allow(irrefutable_let_patterns)]
7116 if let NodePropertyValue::IntValue(ref mut val) = self {
7117 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
7118 } else {
7119 unreachable!()
7120 }
7121 }
7122 2 => {
7123 #[allow(irrefutable_let_patterns)]
7124 if let NodePropertyValue::StringValue(_) = self {
7125 } else {
7127 *self = NodePropertyValue::StringValue(fidl::new_empty!(
7129 fidl::encoding::BoundedString<256>,
7130 D
7131 ));
7132 }
7133 #[allow(irrefutable_let_patterns)]
7134 if let NodePropertyValue::StringValue(ref mut val) = self {
7135 fidl::decode!(
7136 fidl::encoding::BoundedString<256>,
7137 D,
7138 val,
7139 decoder,
7140 _inner_offset,
7141 depth
7142 )?;
7143 } else {
7144 unreachable!()
7145 }
7146 }
7147 3 => {
7148 #[allow(irrefutable_let_patterns)]
7149 if let NodePropertyValue::BoolValue(_) = self {
7150 } else {
7152 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
7154 }
7155 #[allow(irrefutable_let_patterns)]
7156 if let NodePropertyValue::BoolValue(ref mut val) = self {
7157 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
7158 } else {
7159 unreachable!()
7160 }
7161 }
7162 4 => {
7163 #[allow(irrefutable_let_patterns)]
7164 if let NodePropertyValue::EnumValue(_) = self {
7165 } else {
7167 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
7169 fidl::encoding::BoundedString<256>,
7170 D
7171 ));
7172 }
7173 #[allow(irrefutable_let_patterns)]
7174 if let NodePropertyValue::EnumValue(ref mut val) = self {
7175 fidl::decode!(
7176 fidl::encoding::BoundedString<256>,
7177 D,
7178 val,
7179 decoder,
7180 _inner_offset,
7181 depth
7182 )?;
7183 } else {
7184 unreachable!()
7185 }
7186 }
7187 #[allow(deprecated)]
7188 ordinal => {
7189 for _ in 0..num_handles {
7190 decoder.drop_next_handle()?;
7191 }
7192 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
7193 }
7194 }
7195 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7196 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7197 }
7198 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7199 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7200 }
7201 Ok(())
7202 }
7203 }
7204
7205 impl fidl::encoding::ValueTypeMarker for Offer {
7206 type Borrowed<'a> = &'a Self;
7207 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7208 value
7209 }
7210 }
7211
7212 unsafe impl fidl::encoding::TypeMarker for Offer {
7213 type Owned = Self;
7214
7215 #[inline(always)]
7216 fn inline_align(_context: fidl::encoding::Context) -> usize {
7217 8
7218 }
7219
7220 #[inline(always)]
7221 fn inline_size(_context: fidl::encoding::Context) -> usize {
7222 16
7223 }
7224 }
7225
7226 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
7227 #[inline]
7228 unsafe fn encode(
7229 self,
7230 encoder: &mut fidl::encoding::Encoder<'_, D>,
7231 offset: usize,
7232 _depth: fidl::encoding::Depth,
7233 ) -> fidl::Result<()> {
7234 encoder.debug_check_bounds::<Offer>(offset);
7235 encoder.write_num::<u64>(self.ordinal(), offset);
7236 match self {
7237 Offer::ZirconTransport(ref val) => {
7238 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7239 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7240 encoder, offset + 8, _depth
7241 )
7242 }
7243 Offer::DriverTransport(ref val) => {
7244 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7245 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7246 encoder, offset + 8, _depth
7247 )
7248 }
7249 Offer::DictionaryOffer(ref val) => {
7250 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7251 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7252 encoder, offset + 8, _depth
7253 )
7254 }
7255 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7256 }
7257 }
7258 }
7259
7260 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
7261 #[inline(always)]
7262 fn new_empty() -> Self {
7263 Self::__SourceBreaking { unknown_ordinal: 0 }
7264 }
7265
7266 #[inline]
7267 unsafe fn decode(
7268 &mut self,
7269 decoder: &mut fidl::encoding::Decoder<'_, D>,
7270 offset: usize,
7271 mut depth: fidl::encoding::Depth,
7272 ) -> fidl::Result<()> {
7273 decoder.debug_check_bounds::<Self>(offset);
7274 #[allow(unused_variables)]
7275 let next_out_of_line = decoder.next_out_of_line();
7276 let handles_before = decoder.remaining_handles();
7277 let (ordinal, inlined, num_bytes, num_handles) =
7278 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7279
7280 let member_inline_size = match ordinal {
7281 1 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7282 2 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7283 3 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7284 0 => return Err(fidl::Error::UnknownUnionTag),
7285 _ => num_bytes as usize,
7286 };
7287
7288 if inlined != (member_inline_size <= 4) {
7289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7290 }
7291 let _inner_offset;
7292 if inlined {
7293 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7294 _inner_offset = offset + 8;
7295 } else {
7296 depth.increment()?;
7297 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7298 }
7299 match ordinal {
7300 1 => {
7301 #[allow(irrefutable_let_patterns)]
7302 if let Offer::ZirconTransport(_) = self {
7303 } else {
7305 *self = Offer::ZirconTransport(fidl::new_empty!(
7307 fidl_fuchsia_component_decl_common::Offer,
7308 D
7309 ));
7310 }
7311 #[allow(irrefutable_let_patterns)]
7312 if let Offer::ZirconTransport(ref mut val) = self {
7313 fidl::decode!(
7314 fidl_fuchsia_component_decl_common::Offer,
7315 D,
7316 val,
7317 decoder,
7318 _inner_offset,
7319 depth
7320 )?;
7321 } else {
7322 unreachable!()
7323 }
7324 }
7325 2 => {
7326 #[allow(irrefutable_let_patterns)]
7327 if let Offer::DriverTransport(_) = self {
7328 } else {
7330 *self = Offer::DriverTransport(fidl::new_empty!(
7332 fidl_fuchsia_component_decl_common::Offer,
7333 D
7334 ));
7335 }
7336 #[allow(irrefutable_let_patterns)]
7337 if let Offer::DriverTransport(ref mut val) = self {
7338 fidl::decode!(
7339 fidl_fuchsia_component_decl_common::Offer,
7340 D,
7341 val,
7342 decoder,
7343 _inner_offset,
7344 depth
7345 )?;
7346 } else {
7347 unreachable!()
7348 }
7349 }
7350 3 => {
7351 #[allow(irrefutable_let_patterns)]
7352 if let Offer::DictionaryOffer(_) = self {
7353 } else {
7355 *self = Offer::DictionaryOffer(fidl::new_empty!(
7357 fidl_fuchsia_component_decl_common::Offer,
7358 D
7359 ));
7360 }
7361 #[allow(irrefutable_let_patterns)]
7362 if let Offer::DictionaryOffer(ref mut val) = self {
7363 fidl::decode!(
7364 fidl_fuchsia_component_decl_common::Offer,
7365 D,
7366 val,
7367 decoder,
7368 _inner_offset,
7369 depth
7370 )?;
7371 } else {
7372 unreachable!()
7373 }
7374 }
7375 #[allow(deprecated)]
7376 ordinal => {
7377 for _ in 0..num_handles {
7378 decoder.drop_next_handle()?;
7379 }
7380 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
7381 }
7382 }
7383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7384 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7385 }
7386 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7387 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7388 }
7389 Ok(())
7390 }
7391 }
7392}