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 node_manager_ordinals {
1107 pub const ADD_NODE: u64 = 0x71873eed0baf16fd;
1108}
1109
1110pub mod resource_controller_ordinals {
1111 pub const REMOVE: u64 = 0x1257bec06bde4f98;
1112}
1113
1114mod internal {
1115 use super::*;
1116 unsafe impl fidl::encoding::TypeMarker for BusType {
1117 type Owned = Self;
1118
1119 #[inline(always)]
1120 fn inline_align(_context: fidl::encoding::Context) -> usize {
1121 std::mem::align_of::<u32>()
1122 }
1123
1124 #[inline(always)]
1125 fn inline_size(_context: fidl::encoding::Context) -> usize {
1126 std::mem::size_of::<u32>()
1127 }
1128
1129 #[inline(always)]
1130 fn encode_is_copy() -> bool {
1131 false
1132 }
1133
1134 #[inline(always)]
1135 fn decode_is_copy() -> bool {
1136 false
1137 }
1138 }
1139
1140 impl fidl::encoding::ValueTypeMarker for BusType {
1141 type Borrowed<'a> = Self;
1142 #[inline(always)]
1143 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1144 *value
1145 }
1146 }
1147
1148 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
1149 #[inline]
1150 unsafe fn encode(
1151 self,
1152 encoder: &mut fidl::encoding::Encoder<'_, D>,
1153 offset: usize,
1154 _depth: fidl::encoding::Depth,
1155 ) -> fidl::Result<()> {
1156 encoder.debug_check_bounds::<Self>(offset);
1157 encoder.write_num(self.into_primitive(), offset);
1158 Ok(())
1159 }
1160 }
1161
1162 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
1163 #[inline(always)]
1164 fn new_empty() -> Self {
1165 Self::unknown()
1166 }
1167
1168 #[inline]
1169 unsafe fn decode(
1170 &mut self,
1171 decoder: &mut fidl::encoding::Decoder<'_, D>,
1172 offset: usize,
1173 _depth: fidl::encoding::Depth,
1174 ) -> fidl::Result<()> {
1175 decoder.debug_check_bounds::<Self>(offset);
1176 let prim = decoder.read_num::<u32>(offset);
1177
1178 *self = Self::from_primitive_allow_unknown(prim);
1179 Ok(())
1180 }
1181 }
1182 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
1183 type Owned = Self;
1184
1185 #[inline(always)]
1186 fn inline_align(_context: fidl::encoding::Context) -> usize {
1187 std::mem::align_of::<u32>()
1188 }
1189
1190 #[inline(always)]
1191 fn inline_size(_context: fidl::encoding::Context) -> usize {
1192 std::mem::size_of::<u32>()
1193 }
1194
1195 #[inline(always)]
1196 fn encode_is_copy() -> bool {
1197 false
1198 }
1199
1200 #[inline(always)]
1201 fn decode_is_copy() -> bool {
1202 false
1203 }
1204 }
1205
1206 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
1207 type Borrowed<'a> = Self;
1208 #[inline(always)]
1209 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1210 *value
1211 }
1212 }
1213
1214 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1215 for CompositeNodeSpecError
1216 {
1217 #[inline]
1218 unsafe fn encode(
1219 self,
1220 encoder: &mut fidl::encoding::Encoder<'_, D>,
1221 offset: usize,
1222 _depth: fidl::encoding::Depth,
1223 ) -> fidl::Result<()> {
1224 encoder.debug_check_bounds::<Self>(offset);
1225 encoder.write_num(self.into_primitive(), offset);
1226 Ok(())
1227 }
1228 }
1229
1230 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1231 for CompositeNodeSpecError
1232 {
1233 #[inline(always)]
1234 fn new_empty() -> Self {
1235 Self::unknown()
1236 }
1237
1238 #[inline]
1239 unsafe fn decode(
1240 &mut self,
1241 decoder: &mut fidl::encoding::Decoder<'_, D>,
1242 offset: usize,
1243 _depth: fidl::encoding::Depth,
1244 ) -> fidl::Result<()> {
1245 decoder.debug_check_bounds::<Self>(offset);
1246 let prim = decoder.read_num::<u32>(offset);
1247
1248 *self = Self::from_primitive_allow_unknown(prim);
1249 Ok(())
1250 }
1251 }
1252 unsafe impl fidl::encoding::TypeMarker for Condition {
1253 type Owned = Self;
1254
1255 #[inline(always)]
1256 fn inline_align(_context: fidl::encoding::Context) -> usize {
1257 std::mem::align_of::<u32>()
1258 }
1259
1260 #[inline(always)]
1261 fn inline_size(_context: fidl::encoding::Context) -> usize {
1262 std::mem::size_of::<u32>()
1263 }
1264
1265 #[inline(always)]
1266 fn encode_is_copy() -> bool {
1267 true
1268 }
1269
1270 #[inline(always)]
1271 fn decode_is_copy() -> bool {
1272 false
1273 }
1274 }
1275
1276 impl fidl::encoding::ValueTypeMarker for Condition {
1277 type Borrowed<'a> = Self;
1278 #[inline(always)]
1279 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1280 *value
1281 }
1282 }
1283
1284 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
1285 #[inline]
1286 unsafe fn encode(
1287 self,
1288 encoder: &mut fidl::encoding::Encoder<'_, D>,
1289 offset: usize,
1290 _depth: fidl::encoding::Depth,
1291 ) -> fidl::Result<()> {
1292 encoder.debug_check_bounds::<Self>(offset);
1293 encoder.write_num(self.into_primitive(), offset);
1294 Ok(())
1295 }
1296 }
1297
1298 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
1299 #[inline(always)]
1300 fn new_empty() -> Self {
1301 Self::Unknown
1302 }
1303
1304 #[inline]
1305 unsafe fn decode(
1306 &mut self,
1307 decoder: &mut fidl::encoding::Decoder<'_, D>,
1308 offset: usize,
1309 _depth: fidl::encoding::Depth,
1310 ) -> fidl::Result<()> {
1311 decoder.debug_check_bounds::<Self>(offset);
1312 let prim = decoder.read_num::<u32>(offset);
1313
1314 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1315 Ok(())
1316 }
1317 }
1318 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
1319 type Owned = Self;
1320
1321 #[inline(always)]
1322 fn inline_align(_context: fidl::encoding::Context) -> usize {
1323 std::mem::align_of::<u32>()
1324 }
1325
1326 #[inline(always)]
1327 fn inline_size(_context: fidl::encoding::Context) -> usize {
1328 std::mem::size_of::<u32>()
1329 }
1330
1331 #[inline(always)]
1332 fn encode_is_copy() -> bool {
1333 false
1334 }
1335
1336 #[inline(always)]
1337 fn decode_is_copy() -> bool {
1338 false
1339 }
1340 }
1341
1342 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
1343 type Borrowed<'a> = Self;
1344 #[inline(always)]
1345 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1346 *value
1347 }
1348 }
1349
1350 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1351 for DeviceAddressStability
1352 {
1353 #[inline]
1354 unsafe fn encode(
1355 self,
1356 encoder: &mut fidl::encoding::Encoder<'_, D>,
1357 offset: usize,
1358 _depth: fidl::encoding::Depth,
1359 ) -> fidl::Result<()> {
1360 encoder.debug_check_bounds::<Self>(offset);
1361 encoder.write_num(self.into_primitive(), offset);
1362 Ok(())
1363 }
1364 }
1365
1366 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1367 for DeviceAddressStability
1368 {
1369 #[inline(always)]
1370 fn new_empty() -> Self {
1371 Self::unknown()
1372 }
1373
1374 #[inline]
1375 unsafe fn decode(
1376 &mut self,
1377 decoder: &mut fidl::encoding::Decoder<'_, D>,
1378 offset: usize,
1379 _depth: fidl::encoding::Depth,
1380 ) -> fidl::Result<()> {
1381 decoder.debug_check_bounds::<Self>(offset);
1382 let prim = decoder.read_num::<u32>(offset);
1383
1384 *self = Self::from_primitive_allow_unknown(prim);
1385 Ok(())
1386 }
1387 }
1388 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
1389 type Owned = Self;
1390
1391 #[inline(always)]
1392 fn inline_align(_context: fidl::encoding::Context) -> usize {
1393 std::mem::align_of::<u8>()
1394 }
1395
1396 #[inline(always)]
1397 fn inline_size(_context: fidl::encoding::Context) -> usize {
1398 std::mem::size_of::<u8>()
1399 }
1400
1401 #[inline(always)]
1402 fn encode_is_copy() -> bool {
1403 false
1404 }
1405
1406 #[inline(always)]
1407 fn decode_is_copy() -> bool {
1408 false
1409 }
1410 }
1411
1412 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
1413 type Borrowed<'a> = Self;
1414 #[inline(always)]
1415 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1416 *value
1417 }
1418 }
1419
1420 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1421 for DriverPackageType
1422 {
1423 #[inline]
1424 unsafe fn encode(
1425 self,
1426 encoder: &mut fidl::encoding::Encoder<'_, D>,
1427 offset: usize,
1428 _depth: fidl::encoding::Depth,
1429 ) -> fidl::Result<()> {
1430 encoder.debug_check_bounds::<Self>(offset);
1431 encoder.write_num(self.into_primitive(), offset);
1432 Ok(())
1433 }
1434 }
1435
1436 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
1437 #[inline(always)]
1438 fn new_empty() -> Self {
1439 Self::unknown()
1440 }
1441
1442 #[inline]
1443 unsafe fn decode(
1444 &mut self,
1445 decoder: &mut fidl::encoding::Decoder<'_, D>,
1446 offset: usize,
1447 _depth: fidl::encoding::Depth,
1448 ) -> fidl::Result<()> {
1449 decoder.debug_check_bounds::<Self>(offset);
1450 let prim = decoder.read_num::<u8>(offset);
1451
1452 *self = Self::from_primitive_allow_unknown(prim);
1453 Ok(())
1454 }
1455 }
1456 unsafe impl fidl::encoding::TypeMarker for NodeError {
1457 type Owned = Self;
1458
1459 #[inline(always)]
1460 fn inline_align(_context: fidl::encoding::Context) -> usize {
1461 std::mem::align_of::<u32>()
1462 }
1463
1464 #[inline(always)]
1465 fn inline_size(_context: fidl::encoding::Context) -> usize {
1466 std::mem::size_of::<u32>()
1467 }
1468
1469 #[inline(always)]
1470 fn encode_is_copy() -> bool {
1471 false
1472 }
1473
1474 #[inline(always)]
1475 fn decode_is_copy() -> bool {
1476 false
1477 }
1478 }
1479
1480 impl fidl::encoding::ValueTypeMarker for NodeError {
1481 type Borrowed<'a> = Self;
1482 #[inline(always)]
1483 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1484 *value
1485 }
1486 }
1487
1488 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
1489 #[inline]
1490 unsafe fn encode(
1491 self,
1492 encoder: &mut fidl::encoding::Encoder<'_, D>,
1493 offset: usize,
1494 _depth: fidl::encoding::Depth,
1495 ) -> fidl::Result<()> {
1496 encoder.debug_check_bounds::<Self>(offset);
1497 encoder.write_num(self.into_primitive(), offset);
1498 Ok(())
1499 }
1500 }
1501
1502 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
1503 #[inline(always)]
1504 fn new_empty() -> Self {
1505 Self::unknown()
1506 }
1507
1508 #[inline]
1509 unsafe fn decode(
1510 &mut self,
1511 decoder: &mut fidl::encoding::Decoder<'_, D>,
1512 offset: usize,
1513 _depth: fidl::encoding::Depth,
1514 ) -> fidl::Result<()> {
1515 decoder.debug_check_bounds::<Self>(offset);
1516 let prim = decoder.read_num::<u32>(offset);
1517
1518 *self = Self::from_primitive_allow_unknown(prim);
1519 Ok(())
1520 }
1521 }
1522
1523 impl fidl::encoding::ValueTypeMarker for BindRule {
1524 type Borrowed<'a> = &'a Self;
1525 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1526 value
1527 }
1528 }
1529
1530 unsafe impl fidl::encoding::TypeMarker for BindRule {
1531 type Owned = Self;
1532
1533 #[inline(always)]
1534 fn inline_align(_context: fidl::encoding::Context) -> usize {
1535 8
1536 }
1537
1538 #[inline(always)]
1539 fn inline_size(_context: fidl::encoding::Context) -> usize {
1540 40
1541 }
1542 }
1543
1544 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule, D> for &BindRule {
1545 #[inline]
1546 unsafe fn encode(
1547 self,
1548 encoder: &mut fidl::encoding::Encoder<'_, D>,
1549 offset: usize,
1550 _depth: fidl::encoding::Depth,
1551 ) -> fidl::Result<()> {
1552 encoder.debug_check_bounds::<BindRule>(offset);
1553 fidl::encoding::Encode::<BindRule, D>::encode(
1555 (
1556 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1557 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1558 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1559 ),
1560 encoder, offset, _depth
1561 )
1562 }
1563 }
1564 unsafe impl<
1565 D: fidl::encoding::ResourceDialect,
1566 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1567 T1: fidl::encoding::Encode<Condition, D>,
1568 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1569 > fidl::encoding::Encode<BindRule, D> for (T0, T1, T2)
1570 {
1571 #[inline]
1572 unsafe fn encode(
1573 self,
1574 encoder: &mut fidl::encoding::Encoder<'_, D>,
1575 offset: usize,
1576 depth: fidl::encoding::Depth,
1577 ) -> fidl::Result<()> {
1578 encoder.debug_check_bounds::<BindRule>(offset);
1579 unsafe {
1582 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1583 (ptr as *mut u64).write_unaligned(0);
1584 }
1585 self.0.encode(encoder, offset + 0, depth)?;
1587 self.1.encode(encoder, offset + 16, depth)?;
1588 self.2.encode(encoder, offset + 24, depth)?;
1589 Ok(())
1590 }
1591 }
1592
1593 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule {
1594 #[inline(always)]
1595 fn new_empty() -> Self {
1596 Self {
1597 key: fidl::new_empty!(NodePropertyKey, D),
1598 condition: fidl::new_empty!(Condition, D),
1599 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1600 }
1601 }
1602
1603 #[inline]
1604 unsafe fn decode(
1605 &mut self,
1606 decoder: &mut fidl::encoding::Decoder<'_, D>,
1607 offset: usize,
1608 _depth: fidl::encoding::Depth,
1609 ) -> fidl::Result<()> {
1610 decoder.debug_check_bounds::<Self>(offset);
1611 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1613 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1614 let mask = 0xffffffff00000000u64;
1615 let maskedval = padval & mask;
1616 if maskedval != 0 {
1617 return Err(fidl::Error::NonZeroPadding {
1618 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1619 });
1620 }
1621 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1622 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1623 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1624 Ok(())
1625 }
1626 }
1627
1628 impl fidl::encoding::ValueTypeMarker for BindRule2 {
1629 type Borrowed<'a> = &'a Self;
1630 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1631 value
1632 }
1633 }
1634
1635 unsafe impl fidl::encoding::TypeMarker for BindRule2 {
1636 type Owned = Self;
1637
1638 #[inline(always)]
1639 fn inline_align(_context: fidl::encoding::Context) -> usize {
1640 8
1641 }
1642
1643 #[inline(always)]
1644 fn inline_size(_context: fidl::encoding::Context) -> usize {
1645 40
1646 }
1647 }
1648
1649 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule2, D>
1650 for &BindRule2
1651 {
1652 #[inline]
1653 unsafe fn encode(
1654 self,
1655 encoder: &mut fidl::encoding::Encoder<'_, D>,
1656 offset: usize,
1657 _depth: fidl::encoding::Depth,
1658 ) -> fidl::Result<()> {
1659 encoder.debug_check_bounds::<BindRule2>(offset);
1660 fidl::encoding::Encode::<BindRule2, D>::encode(
1662 (
1663 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1664 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
1665 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
1666 ),
1667 encoder, offset, _depth
1668 )
1669 }
1670 }
1671 unsafe impl<
1672 D: fidl::encoding::ResourceDialect,
1673 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1674 T1: fidl::encoding::Encode<Condition, D>,
1675 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
1676 > fidl::encoding::Encode<BindRule2, D> for (T0, T1, T2)
1677 {
1678 #[inline]
1679 unsafe fn encode(
1680 self,
1681 encoder: &mut fidl::encoding::Encoder<'_, D>,
1682 offset: usize,
1683 depth: fidl::encoding::Depth,
1684 ) -> fidl::Result<()> {
1685 encoder.debug_check_bounds::<BindRule2>(offset);
1686 unsafe {
1689 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1690 (ptr as *mut u64).write_unaligned(0);
1691 }
1692 self.0.encode(encoder, offset + 0, depth)?;
1694 self.1.encode(encoder, offset + 16, depth)?;
1695 self.2.encode(encoder, offset + 24, depth)?;
1696 Ok(())
1697 }
1698 }
1699
1700 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule2 {
1701 #[inline(always)]
1702 fn new_empty() -> Self {
1703 Self {
1704 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1705 condition: fidl::new_empty!(Condition, D),
1706 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
1707 }
1708 }
1709
1710 #[inline]
1711 unsafe fn decode(
1712 &mut self,
1713 decoder: &mut fidl::encoding::Decoder<'_, D>,
1714 offset: usize,
1715 _depth: fidl::encoding::Depth,
1716 ) -> fidl::Result<()> {
1717 decoder.debug_check_bounds::<Self>(offset);
1718 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1720 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1721 let mask = 0xffffffff00000000u64;
1722 let maskedval = padval & mask;
1723 if maskedval != 0 {
1724 return Err(fidl::Error::NonZeroPadding {
1725 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1726 });
1727 }
1728 fidl::decode!(
1729 fidl::encoding::BoundedString<256>,
1730 D,
1731 &mut self.key,
1732 decoder,
1733 offset + 0,
1734 _depth
1735 )?;
1736 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
1737 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
1738 Ok(())
1739 }
1740 }
1741
1742 impl fidl::encoding::ValueTypeMarker for NodeProperty {
1743 type Borrowed<'a> = &'a Self;
1744 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1745 value
1746 }
1747 }
1748
1749 unsafe impl fidl::encoding::TypeMarker for NodeProperty {
1750 type Owned = Self;
1751
1752 #[inline(always)]
1753 fn inline_align(_context: fidl::encoding::Context) -> usize {
1754 8
1755 }
1756
1757 #[inline(always)]
1758 fn inline_size(_context: fidl::encoding::Context) -> usize {
1759 32
1760 }
1761 }
1762
1763 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty, D>
1764 for &NodeProperty
1765 {
1766 #[inline]
1767 unsafe fn encode(
1768 self,
1769 encoder: &mut fidl::encoding::Encoder<'_, D>,
1770 offset: usize,
1771 _depth: fidl::encoding::Depth,
1772 ) -> fidl::Result<()> {
1773 encoder.debug_check_bounds::<NodeProperty>(offset);
1774 fidl::encoding::Encode::<NodeProperty, D>::encode(
1776 (
1777 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
1778 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1779 ),
1780 encoder,
1781 offset,
1782 _depth,
1783 )
1784 }
1785 }
1786 unsafe impl<
1787 D: fidl::encoding::ResourceDialect,
1788 T0: fidl::encoding::Encode<NodePropertyKey, D>,
1789 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1790 > fidl::encoding::Encode<NodeProperty, D> for (T0, T1)
1791 {
1792 #[inline]
1793 unsafe fn encode(
1794 self,
1795 encoder: &mut fidl::encoding::Encoder<'_, D>,
1796 offset: usize,
1797 depth: fidl::encoding::Depth,
1798 ) -> fidl::Result<()> {
1799 encoder.debug_check_bounds::<NodeProperty>(offset);
1800 self.0.encode(encoder, offset + 0, depth)?;
1804 self.1.encode(encoder, offset + 16, depth)?;
1805 Ok(())
1806 }
1807 }
1808
1809 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty {
1810 #[inline(always)]
1811 fn new_empty() -> Self {
1812 Self {
1813 key: fidl::new_empty!(NodePropertyKey, D),
1814 value: fidl::new_empty!(NodePropertyValue, D),
1815 }
1816 }
1817
1818 #[inline]
1819 unsafe fn decode(
1820 &mut self,
1821 decoder: &mut fidl::encoding::Decoder<'_, D>,
1822 offset: usize,
1823 _depth: fidl::encoding::Depth,
1824 ) -> fidl::Result<()> {
1825 decoder.debug_check_bounds::<Self>(offset);
1826 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
1828 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1829 Ok(())
1830 }
1831 }
1832
1833 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
1834 type Borrowed<'a> = &'a Self;
1835 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1836 value
1837 }
1838 }
1839
1840 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
1841 type Owned = Self;
1842
1843 #[inline(always)]
1844 fn inline_align(_context: fidl::encoding::Context) -> usize {
1845 8
1846 }
1847
1848 #[inline(always)]
1849 fn inline_size(_context: fidl::encoding::Context) -> usize {
1850 32
1851 }
1852 }
1853
1854 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
1855 for &NodeProperty2
1856 {
1857 #[inline]
1858 unsafe fn encode(
1859 self,
1860 encoder: &mut fidl::encoding::Encoder<'_, D>,
1861 offset: usize,
1862 _depth: fidl::encoding::Depth,
1863 ) -> fidl::Result<()> {
1864 encoder.debug_check_bounds::<NodeProperty2>(offset);
1865 fidl::encoding::Encode::<NodeProperty2, D>::encode(
1867 (
1868 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
1869 &self.key,
1870 ),
1871 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
1872 ),
1873 encoder,
1874 offset,
1875 _depth,
1876 )
1877 }
1878 }
1879 unsafe impl<
1880 D: fidl::encoding::ResourceDialect,
1881 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
1882 T1: fidl::encoding::Encode<NodePropertyValue, D>,
1883 > fidl::encoding::Encode<NodeProperty2, D> for (T0, T1)
1884 {
1885 #[inline]
1886 unsafe fn encode(
1887 self,
1888 encoder: &mut fidl::encoding::Encoder<'_, D>,
1889 offset: usize,
1890 depth: fidl::encoding::Depth,
1891 ) -> fidl::Result<()> {
1892 encoder.debug_check_bounds::<NodeProperty2>(offset);
1893 self.0.encode(encoder, offset + 0, depth)?;
1897 self.1.encode(encoder, offset + 16, depth)?;
1898 Ok(())
1899 }
1900 }
1901
1902 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty2 {
1903 #[inline(always)]
1904 fn new_empty() -> Self {
1905 Self {
1906 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
1907 value: fidl::new_empty!(NodePropertyValue, D),
1908 }
1909 }
1910
1911 #[inline]
1912 unsafe fn decode(
1913 &mut self,
1914 decoder: &mut fidl::encoding::Decoder<'_, D>,
1915 offset: usize,
1916 _depth: fidl::encoding::Depth,
1917 ) -> fidl::Result<()> {
1918 decoder.debug_check_bounds::<Self>(offset);
1919 fidl::decode!(
1921 fidl::encoding::BoundedString<256>,
1922 D,
1923 &mut self.key,
1924 decoder,
1925 offset + 0,
1926 _depth
1927 )?;
1928 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
1929 Ok(())
1930 }
1931 }
1932
1933 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry {
1934 type Borrowed<'a> = &'a Self;
1935 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1936 value
1937 }
1938 }
1939
1940 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry {
1941 type Owned = Self;
1942
1943 #[inline(always)]
1944 fn inline_align(_context: fidl::encoding::Context) -> usize {
1945 8
1946 }
1947
1948 #[inline(always)]
1949 fn inline_size(_context: fidl::encoding::Context) -> usize {
1950 32
1951 }
1952 }
1953
1954 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry, D>
1955 for &NodePropertyEntry
1956 {
1957 #[inline]
1958 unsafe fn encode(
1959 self,
1960 encoder: &mut fidl::encoding::Encoder<'_, D>,
1961 offset: usize,
1962 _depth: fidl::encoding::Depth,
1963 ) -> fidl::Result<()> {
1964 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1965 fidl::encoding::Encode::<NodePropertyEntry, D>::encode(
1967 (
1968 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
1969 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
1970 ),
1971 encoder, offset, _depth
1972 )
1973 }
1974 }
1975 unsafe impl<
1976 D: fidl::encoding::ResourceDialect,
1977 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
1978 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
1979 > fidl::encoding::Encode<NodePropertyEntry, D> for (T0, T1)
1980 {
1981 #[inline]
1982 unsafe fn encode(
1983 self,
1984 encoder: &mut fidl::encoding::Encoder<'_, D>,
1985 offset: usize,
1986 depth: fidl::encoding::Depth,
1987 ) -> fidl::Result<()> {
1988 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
1989 self.0.encode(encoder, offset + 0, depth)?;
1993 self.1.encode(encoder, offset + 16, depth)?;
1994 Ok(())
1995 }
1996 }
1997
1998 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry {
1999 #[inline(always)]
2000 fn new_empty() -> Self {
2001 Self {
2002 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2003 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
2004 }
2005 }
2006
2007 #[inline]
2008 unsafe fn decode(
2009 &mut self,
2010 decoder: &mut fidl::encoding::Decoder<'_, D>,
2011 offset: usize,
2012 _depth: fidl::encoding::Depth,
2013 ) -> fidl::Result<()> {
2014 decoder.debug_check_bounds::<Self>(offset);
2015 fidl::decode!(
2017 fidl::encoding::BoundedString<128>,
2018 D,
2019 &mut self.name,
2020 decoder,
2021 offset + 0,
2022 _depth
2023 )?;
2024 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2025 Ok(())
2026 }
2027 }
2028
2029 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
2030 type Borrowed<'a> = &'a Self;
2031 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2032 value
2033 }
2034 }
2035
2036 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
2037 type Owned = Self;
2038
2039 #[inline(always)]
2040 fn inline_align(_context: fidl::encoding::Context) -> usize {
2041 8
2042 }
2043
2044 #[inline(always)]
2045 fn inline_size(_context: fidl::encoding::Context) -> usize {
2046 32
2047 }
2048 }
2049
2050 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
2051 for &NodePropertyEntry2
2052 {
2053 #[inline]
2054 unsafe fn encode(
2055 self,
2056 encoder: &mut fidl::encoding::Encoder<'_, D>,
2057 offset: usize,
2058 _depth: fidl::encoding::Depth,
2059 ) -> fidl::Result<()> {
2060 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2061 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
2063 (
2064 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2065 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2066 ),
2067 encoder, offset, _depth
2068 )
2069 }
2070 }
2071 unsafe impl<
2072 D: fidl::encoding::ResourceDialect,
2073 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
2074 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2075 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
2076 {
2077 #[inline]
2078 unsafe fn encode(
2079 self,
2080 encoder: &mut fidl::encoding::Encoder<'_, D>,
2081 offset: usize,
2082 depth: fidl::encoding::Depth,
2083 ) -> fidl::Result<()> {
2084 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2085 self.0.encode(encoder, offset + 0, depth)?;
2089 self.1.encode(encoder, offset + 16, depth)?;
2090 Ok(())
2091 }
2092 }
2093
2094 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
2095 #[inline(always)]
2096 fn new_empty() -> Self {
2097 Self {
2098 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2099 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2100 }
2101 }
2102
2103 #[inline]
2104 unsafe fn decode(
2105 &mut self,
2106 decoder: &mut fidl::encoding::Decoder<'_, D>,
2107 offset: usize,
2108 _depth: fidl::encoding::Depth,
2109 ) -> fidl::Result<()> {
2110 decoder.debug_check_bounds::<Self>(offset);
2111 fidl::decode!(
2113 fidl::encoding::BoundedString<128>,
2114 D,
2115 &mut self.name,
2116 decoder,
2117 offset + 0,
2118 _depth
2119 )?;
2120 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2121 Ok(())
2122 }
2123 }
2124
2125 impl fidl::encoding::ValueTypeMarker for ParentSpec {
2126 type Borrowed<'a> = &'a Self;
2127 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2128 value
2129 }
2130 }
2131
2132 unsafe impl fidl::encoding::TypeMarker for ParentSpec {
2133 type Owned = Self;
2134
2135 #[inline(always)]
2136 fn inline_align(_context: fidl::encoding::Context) -> usize {
2137 8
2138 }
2139
2140 #[inline(always)]
2141 fn inline_size(_context: fidl::encoding::Context) -> usize {
2142 32
2143 }
2144 }
2145
2146 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec, D>
2147 for &ParentSpec
2148 {
2149 #[inline]
2150 unsafe fn encode(
2151 self,
2152 encoder: &mut fidl::encoding::Encoder<'_, D>,
2153 offset: usize,
2154 _depth: fidl::encoding::Depth,
2155 ) -> fidl::Result<()> {
2156 encoder.debug_check_bounds::<ParentSpec>(offset);
2157 fidl::encoding::Encode::<ParentSpec, D>::encode(
2159 (
2160 <fidl::encoding::Vector<BindRule, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2161 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2162 ),
2163 encoder, offset, _depth
2164 )
2165 }
2166 }
2167 unsafe impl<
2168 D: fidl::encoding::ResourceDialect,
2169 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule, 64>, D>,
2170 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
2171 > fidl::encoding::Encode<ParentSpec, D> for (T0, T1)
2172 {
2173 #[inline]
2174 unsafe fn encode(
2175 self,
2176 encoder: &mut fidl::encoding::Encoder<'_, D>,
2177 offset: usize,
2178 depth: fidl::encoding::Depth,
2179 ) -> fidl::Result<()> {
2180 encoder.debug_check_bounds::<ParentSpec>(offset);
2181 self.0.encode(encoder, offset + 0, depth)?;
2185 self.1.encode(encoder, offset + 16, depth)?;
2186 Ok(())
2187 }
2188 }
2189
2190 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec {
2191 #[inline(always)]
2192 fn new_empty() -> Self {
2193 Self {
2194 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule, 64>, D),
2195 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
2196 }
2197 }
2198
2199 #[inline]
2200 unsafe fn decode(
2201 &mut self,
2202 decoder: &mut fidl::encoding::Decoder<'_, D>,
2203 offset: usize,
2204 _depth: fidl::encoding::Depth,
2205 ) -> fidl::Result<()> {
2206 decoder.debug_check_bounds::<Self>(offset);
2207 fidl::decode!(fidl::encoding::Vector<BindRule, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2209 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2210 Ok(())
2211 }
2212 }
2213
2214 impl fidl::encoding::ValueTypeMarker for ParentSpec2 {
2215 type Borrowed<'a> = &'a Self;
2216 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2217 value
2218 }
2219 }
2220
2221 unsafe impl fidl::encoding::TypeMarker for ParentSpec2 {
2222 type Owned = Self;
2223
2224 #[inline(always)]
2225 fn inline_align(_context: fidl::encoding::Context) -> usize {
2226 8
2227 }
2228
2229 #[inline(always)]
2230 fn inline_size(_context: fidl::encoding::Context) -> usize {
2231 32
2232 }
2233 }
2234
2235 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec2, D>
2236 for &ParentSpec2
2237 {
2238 #[inline]
2239 unsafe fn encode(
2240 self,
2241 encoder: &mut fidl::encoding::Encoder<'_, D>,
2242 offset: usize,
2243 _depth: fidl::encoding::Depth,
2244 ) -> fidl::Result<()> {
2245 encoder.debug_check_bounds::<ParentSpec2>(offset);
2246 fidl::encoding::Encode::<ParentSpec2, D>::encode(
2248 (
2249 <fidl::encoding::Vector<BindRule2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2250 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2251 ),
2252 encoder, offset, _depth
2253 )
2254 }
2255 }
2256 unsafe impl<
2257 D: fidl::encoding::ResourceDialect,
2258 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule2, 64>, D>,
2259 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2260 > fidl::encoding::Encode<ParentSpec2, D> for (T0, T1)
2261 {
2262 #[inline]
2263 unsafe fn encode(
2264 self,
2265 encoder: &mut fidl::encoding::Encoder<'_, D>,
2266 offset: usize,
2267 depth: fidl::encoding::Depth,
2268 ) -> fidl::Result<()> {
2269 encoder.debug_check_bounds::<ParentSpec2>(offset);
2270 self.0.encode(encoder, offset + 0, depth)?;
2274 self.1.encode(encoder, offset + 16, depth)?;
2275 Ok(())
2276 }
2277 }
2278
2279 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec2 {
2280 #[inline(always)]
2281 fn new_empty() -> Self {
2282 Self {
2283 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule2, 64>, D),
2284 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2285 }
2286 }
2287
2288 #[inline]
2289 unsafe fn decode(
2290 &mut self,
2291 decoder: &mut fidl::encoding::Decoder<'_, D>,
2292 offset: usize,
2293 _depth: fidl::encoding::Depth,
2294 ) -> fidl::Result<()> {
2295 decoder.debug_check_bounds::<Self>(offset);
2296 fidl::decode!(fidl::encoding::Vector<BindRule2, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2298 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2299 Ok(())
2300 }
2301 }
2302
2303 impl fidl::encoding::ValueTypeMarker for ResourceProperty {
2304 type Borrowed<'a> = &'a Self;
2305 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2306 value
2307 }
2308 }
2309
2310 unsafe impl fidl::encoding::TypeMarker for ResourceProperty {
2311 type Owned = Self;
2312
2313 #[inline(always)]
2314 fn inline_align(_context: fidl::encoding::Context) -> usize {
2315 8
2316 }
2317
2318 #[inline(always)]
2319 fn inline_size(_context: fidl::encoding::Context) -> usize {
2320 32
2321 }
2322 }
2323
2324 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResourceProperty, D>
2325 for &ResourceProperty
2326 {
2327 #[inline]
2328 unsafe fn encode(
2329 self,
2330 encoder: &mut fidl::encoding::Encoder<'_, D>,
2331 offset: usize,
2332 _depth: fidl::encoding::Depth,
2333 ) -> fidl::Result<()> {
2334 encoder.debug_check_bounds::<ResourceProperty>(offset);
2335 fidl::encoding::Encode::<ResourceProperty, D>::encode(
2337 (
2338 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
2339 &self.key,
2340 ),
2341 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2342 ),
2343 encoder,
2344 offset,
2345 _depth,
2346 )
2347 }
2348 }
2349 unsafe impl<
2350 D: fidl::encoding::ResourceDialect,
2351 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
2352 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2353 > fidl::encoding::Encode<ResourceProperty, D> for (T0, T1)
2354 {
2355 #[inline]
2356 unsafe fn encode(
2357 self,
2358 encoder: &mut fidl::encoding::Encoder<'_, D>,
2359 offset: usize,
2360 depth: fidl::encoding::Depth,
2361 ) -> fidl::Result<()> {
2362 encoder.debug_check_bounds::<ResourceProperty>(offset);
2363 self.0.encode(encoder, offset + 0, depth)?;
2367 self.1.encode(encoder, offset + 16, depth)?;
2368 Ok(())
2369 }
2370 }
2371
2372 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResourceProperty {
2373 #[inline(always)]
2374 fn new_empty() -> Self {
2375 Self {
2376 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
2377 value: fidl::new_empty!(NodePropertyValue, D),
2378 }
2379 }
2380
2381 #[inline]
2382 unsafe fn decode(
2383 &mut self,
2384 decoder: &mut fidl::encoding::Decoder<'_, D>,
2385 offset: usize,
2386 _depth: fidl::encoding::Depth,
2387 ) -> fidl::Result<()> {
2388 decoder.debug_check_bounds::<Self>(offset);
2389 fidl::decode!(
2391 fidl::encoding::UnboundedString,
2392 D,
2393 &mut self.key,
2394 decoder,
2395 offset + 0,
2396 _depth
2397 )?;
2398 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2399 Ok(())
2400 }
2401 }
2402
2403 impl BusInfo {
2404 #[inline(always)]
2405 fn max_ordinal_present(&self) -> u64 {
2406 if let Some(_) = self.address_stability {
2407 return 3;
2408 }
2409 if let Some(_) = self.address {
2410 return 2;
2411 }
2412 if let Some(_) = self.bus {
2413 return 1;
2414 }
2415 0
2416 }
2417 }
2418
2419 impl fidl::encoding::ValueTypeMarker for BusInfo {
2420 type Borrowed<'a> = &'a Self;
2421 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2422 value
2423 }
2424 }
2425
2426 unsafe impl fidl::encoding::TypeMarker for BusInfo {
2427 type Owned = Self;
2428
2429 #[inline(always)]
2430 fn inline_align(_context: fidl::encoding::Context) -> usize {
2431 8
2432 }
2433
2434 #[inline(always)]
2435 fn inline_size(_context: fidl::encoding::Context) -> usize {
2436 16
2437 }
2438 }
2439
2440 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
2441 unsafe fn encode(
2442 self,
2443 encoder: &mut fidl::encoding::Encoder<'_, D>,
2444 offset: usize,
2445 mut depth: fidl::encoding::Depth,
2446 ) -> fidl::Result<()> {
2447 encoder.debug_check_bounds::<BusInfo>(offset);
2448 let max_ordinal: u64 = self.max_ordinal_present();
2450 encoder.write_num(max_ordinal, offset);
2451 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2452 if max_ordinal == 0 {
2454 return Ok(());
2455 }
2456 depth.increment()?;
2457 let envelope_size = 8;
2458 let bytes_len = max_ordinal as usize * envelope_size;
2459 #[allow(unused_variables)]
2460 let offset = encoder.out_of_line_offset(bytes_len);
2461 let mut _prev_end_offset: usize = 0;
2462 if 1 > max_ordinal {
2463 return Ok(());
2464 }
2465
2466 let cur_offset: usize = (1 - 1) * envelope_size;
2469
2470 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2472
2473 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
2478 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
2479 encoder,
2480 offset + cur_offset,
2481 depth,
2482 )?;
2483
2484 _prev_end_offset = cur_offset + envelope_size;
2485 if 2 > max_ordinal {
2486 return Ok(());
2487 }
2488
2489 let cur_offset: usize = (2 - 1) * envelope_size;
2492
2493 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2495
2496 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
2501 self.address
2502 .as_ref()
2503 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
2504 encoder,
2505 offset + cur_offset,
2506 depth,
2507 )?;
2508
2509 _prev_end_offset = cur_offset + envelope_size;
2510 if 3 > max_ordinal {
2511 return Ok(());
2512 }
2513
2514 let cur_offset: usize = (3 - 1) * envelope_size;
2517
2518 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2520
2521 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
2526 self.address_stability
2527 .as_ref()
2528 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
2529 encoder,
2530 offset + cur_offset,
2531 depth,
2532 )?;
2533
2534 _prev_end_offset = cur_offset + envelope_size;
2535
2536 Ok(())
2537 }
2538 }
2539
2540 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
2541 #[inline(always)]
2542 fn new_empty() -> Self {
2543 Self::default()
2544 }
2545
2546 unsafe fn decode(
2547 &mut self,
2548 decoder: &mut fidl::encoding::Decoder<'_, D>,
2549 offset: usize,
2550 mut depth: fidl::encoding::Depth,
2551 ) -> fidl::Result<()> {
2552 decoder.debug_check_bounds::<Self>(offset);
2553 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2554 None => return Err(fidl::Error::NotNullable),
2555 Some(len) => len,
2556 };
2557 if len == 0 {
2559 return Ok(());
2560 };
2561 depth.increment()?;
2562 let envelope_size = 8;
2563 let bytes_len = len * envelope_size;
2564 let offset = decoder.out_of_line_offset(bytes_len)?;
2565 let mut _next_ordinal_to_read = 0;
2567 let mut next_offset = offset;
2568 let end_offset = offset + bytes_len;
2569 _next_ordinal_to_read += 1;
2570 if next_offset >= end_offset {
2571 return Ok(());
2572 }
2573
2574 while _next_ordinal_to_read < 1 {
2576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2577 _next_ordinal_to_read += 1;
2578 next_offset += envelope_size;
2579 }
2580
2581 let next_out_of_line = decoder.next_out_of_line();
2582 let handles_before = decoder.remaining_handles();
2583 if let Some((inlined, num_bytes, num_handles)) =
2584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2585 {
2586 let member_inline_size =
2587 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2588 if inlined != (member_inline_size <= 4) {
2589 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2590 }
2591 let inner_offset;
2592 let mut inner_depth = depth.clone();
2593 if inlined {
2594 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2595 inner_offset = next_offset;
2596 } else {
2597 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2598 inner_depth.increment()?;
2599 }
2600 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
2601 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
2602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2603 {
2604 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2605 }
2606 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2607 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2608 }
2609 }
2610
2611 next_offset += envelope_size;
2612 _next_ordinal_to_read += 1;
2613 if next_offset >= end_offset {
2614 return Ok(());
2615 }
2616
2617 while _next_ordinal_to_read < 2 {
2619 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2620 _next_ordinal_to_read += 1;
2621 next_offset += envelope_size;
2622 }
2623
2624 let next_out_of_line = decoder.next_out_of_line();
2625 let handles_before = decoder.remaining_handles();
2626 if let Some((inlined, num_bytes, num_handles)) =
2627 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2628 {
2629 let member_inline_size =
2630 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2631 if inlined != (member_inline_size <= 4) {
2632 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2633 }
2634 let inner_offset;
2635 let mut inner_depth = depth.clone();
2636 if inlined {
2637 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2638 inner_offset = next_offset;
2639 } else {
2640 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2641 inner_depth.increment()?;
2642 }
2643 let val_ref =
2644 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
2645 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
2646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2647 {
2648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2649 }
2650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2652 }
2653 }
2654
2655 next_offset += envelope_size;
2656 _next_ordinal_to_read += 1;
2657 if next_offset >= end_offset {
2658 return Ok(());
2659 }
2660
2661 while _next_ordinal_to_read < 3 {
2663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2664 _next_ordinal_to_read += 1;
2665 next_offset += envelope_size;
2666 }
2667
2668 let next_out_of_line = decoder.next_out_of_line();
2669 let handles_before = decoder.remaining_handles();
2670 if let Some((inlined, num_bytes, num_handles)) =
2671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2672 {
2673 let member_inline_size =
2674 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
2675 decoder.context,
2676 );
2677 if inlined != (member_inline_size <= 4) {
2678 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2679 }
2680 let inner_offset;
2681 let mut inner_depth = depth.clone();
2682 if inlined {
2683 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2684 inner_offset = next_offset;
2685 } else {
2686 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2687 inner_depth.increment()?;
2688 }
2689 let val_ref = self
2690 .address_stability
2691 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
2692 fidl::decode!(
2693 DeviceAddressStability,
2694 D,
2695 val_ref,
2696 decoder,
2697 inner_offset,
2698 inner_depth
2699 )?;
2700 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2701 {
2702 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2703 }
2704 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2705 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2706 }
2707 }
2708
2709 next_offset += envelope_size;
2710
2711 while next_offset < end_offset {
2713 _next_ordinal_to_read += 1;
2714 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2715 next_offset += envelope_size;
2716 }
2717
2718 Ok(())
2719 }
2720 }
2721
2722 impl CompositeDriverInfo {
2723 #[inline(always)]
2724 fn max_ordinal_present(&self) -> u64 {
2725 if let Some(_) = self.driver_info {
2726 return 2;
2727 }
2728 if let Some(_) = self.composite_name {
2729 return 1;
2730 }
2731 0
2732 }
2733 }
2734
2735 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
2736 type Borrowed<'a> = &'a Self;
2737 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2738 value
2739 }
2740 }
2741
2742 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
2743 type Owned = Self;
2744
2745 #[inline(always)]
2746 fn inline_align(_context: fidl::encoding::Context) -> usize {
2747 8
2748 }
2749
2750 #[inline(always)]
2751 fn inline_size(_context: fidl::encoding::Context) -> usize {
2752 16
2753 }
2754 }
2755
2756 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
2757 for &CompositeDriverInfo
2758 {
2759 unsafe fn encode(
2760 self,
2761 encoder: &mut fidl::encoding::Encoder<'_, D>,
2762 offset: usize,
2763 mut depth: fidl::encoding::Depth,
2764 ) -> fidl::Result<()> {
2765 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
2766 let max_ordinal: u64 = self.max_ordinal_present();
2768 encoder.write_num(max_ordinal, offset);
2769 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2770 if max_ordinal == 0 {
2772 return Ok(());
2773 }
2774 depth.increment()?;
2775 let envelope_size = 8;
2776 let bytes_len = max_ordinal as usize * envelope_size;
2777 #[allow(unused_variables)]
2778 let offset = encoder.out_of_line_offset(bytes_len);
2779 let mut _prev_end_offset: usize = 0;
2780 if 1 > max_ordinal {
2781 return Ok(());
2782 }
2783
2784 let cur_offset: usize = (1 - 1) * envelope_size;
2787
2788 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2790
2791 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2796 self.composite_name.as_ref().map(
2797 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2798 ),
2799 encoder,
2800 offset + cur_offset,
2801 depth,
2802 )?;
2803
2804 _prev_end_offset = cur_offset + envelope_size;
2805 if 2 > max_ordinal {
2806 return Ok(());
2807 }
2808
2809 let cur_offset: usize = (2 - 1) * envelope_size;
2812
2813 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2815
2816 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
2821 self.driver_info
2822 .as_ref()
2823 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
2824 encoder,
2825 offset + cur_offset,
2826 depth,
2827 )?;
2828
2829 _prev_end_offset = cur_offset + envelope_size;
2830
2831 Ok(())
2832 }
2833 }
2834
2835 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
2836 #[inline(always)]
2837 fn new_empty() -> Self {
2838 Self::default()
2839 }
2840
2841 unsafe fn decode(
2842 &mut self,
2843 decoder: &mut fidl::encoding::Decoder<'_, D>,
2844 offset: usize,
2845 mut depth: fidl::encoding::Depth,
2846 ) -> fidl::Result<()> {
2847 decoder.debug_check_bounds::<Self>(offset);
2848 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2849 None => return Err(fidl::Error::NotNullable),
2850 Some(len) => len,
2851 };
2852 if len == 0 {
2854 return Ok(());
2855 };
2856 depth.increment()?;
2857 let envelope_size = 8;
2858 let bytes_len = len * envelope_size;
2859 let offset = decoder.out_of_line_offset(bytes_len)?;
2860 let mut _next_ordinal_to_read = 0;
2862 let mut next_offset = offset;
2863 let end_offset = offset + bytes_len;
2864 _next_ordinal_to_read += 1;
2865 if next_offset >= end_offset {
2866 return Ok(());
2867 }
2868
2869 while _next_ordinal_to_read < 1 {
2871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2872 _next_ordinal_to_read += 1;
2873 next_offset += envelope_size;
2874 }
2875
2876 let next_out_of_line = decoder.next_out_of_line();
2877 let handles_before = decoder.remaining_handles();
2878 if let Some((inlined, num_bytes, num_handles)) =
2879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2880 {
2881 let member_inline_size =
2882 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2883 decoder.context,
2884 );
2885 if inlined != (member_inline_size <= 4) {
2886 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2887 }
2888 let inner_offset;
2889 let mut inner_depth = depth.clone();
2890 if inlined {
2891 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2892 inner_offset = next_offset;
2893 } else {
2894 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2895 inner_depth.increment()?;
2896 }
2897 let val_ref = self
2898 .composite_name
2899 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2900 fidl::decode!(
2901 fidl::encoding::UnboundedString,
2902 D,
2903 val_ref,
2904 decoder,
2905 inner_offset,
2906 inner_depth
2907 )?;
2908 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2909 {
2910 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2911 }
2912 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2913 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2914 }
2915 }
2916
2917 next_offset += envelope_size;
2918 _next_ordinal_to_read += 1;
2919 if next_offset >= end_offset {
2920 return Ok(());
2921 }
2922
2923 while _next_ordinal_to_read < 2 {
2925 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2926 _next_ordinal_to_read += 1;
2927 next_offset += envelope_size;
2928 }
2929
2930 let next_out_of_line = decoder.next_out_of_line();
2931 let handles_before = decoder.remaining_handles();
2932 if let Some((inlined, num_bytes, num_handles)) =
2933 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2934 {
2935 let member_inline_size =
2936 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2937 if inlined != (member_inline_size <= 4) {
2938 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2939 }
2940 let inner_offset;
2941 let mut inner_depth = depth.clone();
2942 if inlined {
2943 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2944 inner_offset = next_offset;
2945 } else {
2946 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2947 inner_depth.increment()?;
2948 }
2949 let val_ref =
2950 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
2951 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2952 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2953 {
2954 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2955 }
2956 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2957 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2958 }
2959 }
2960
2961 next_offset += envelope_size;
2962
2963 while next_offset < end_offset {
2965 _next_ordinal_to_read += 1;
2966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2967 next_offset += envelope_size;
2968 }
2969
2970 Ok(())
2971 }
2972 }
2973
2974 impl CompositeDriverMatch {
2975 #[inline(always)]
2976 fn max_ordinal_present(&self) -> u64 {
2977 if let Some(_) = self.primary_parent_index {
2978 return 3;
2979 }
2980 if let Some(_) = self.parent_names {
2981 return 2;
2982 }
2983 if let Some(_) = self.composite_driver {
2984 return 1;
2985 }
2986 0
2987 }
2988 }
2989
2990 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
2991 type Borrowed<'a> = &'a Self;
2992 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2993 value
2994 }
2995 }
2996
2997 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
2998 type Owned = Self;
2999
3000 #[inline(always)]
3001 fn inline_align(_context: fidl::encoding::Context) -> usize {
3002 8
3003 }
3004
3005 #[inline(always)]
3006 fn inline_size(_context: fidl::encoding::Context) -> usize {
3007 16
3008 }
3009 }
3010
3011 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
3012 for &CompositeDriverMatch
3013 {
3014 unsafe fn encode(
3015 self,
3016 encoder: &mut fidl::encoding::Encoder<'_, D>,
3017 offset: usize,
3018 mut depth: fidl::encoding::Depth,
3019 ) -> fidl::Result<()> {
3020 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
3021 let max_ordinal: u64 = self.max_ordinal_present();
3023 encoder.write_num(max_ordinal, offset);
3024 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3025 if max_ordinal == 0 {
3027 return Ok(());
3028 }
3029 depth.increment()?;
3030 let envelope_size = 8;
3031 let bytes_len = max_ordinal as usize * envelope_size;
3032 #[allow(unused_variables)]
3033 let offset = encoder.out_of_line_offset(bytes_len);
3034 let mut _prev_end_offset: usize = 0;
3035 if 1 > max_ordinal {
3036 return Ok(());
3037 }
3038
3039 let cur_offset: usize = (1 - 1) * envelope_size;
3042
3043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3045
3046 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
3051 self.composite_driver
3052 .as_ref()
3053 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3054 encoder,
3055 offset + cur_offset,
3056 depth,
3057 )?;
3058
3059 _prev_end_offset = cur_offset + envelope_size;
3060 if 2 > max_ordinal {
3061 return Ok(());
3062 }
3063
3064 let cur_offset: usize = (2 - 1) * envelope_size;
3067
3068 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3070
3071 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
3076 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
3077 encoder, offset + cur_offset, depth
3078 )?;
3079
3080 _prev_end_offset = cur_offset + envelope_size;
3081 if 3 > max_ordinal {
3082 return Ok(());
3083 }
3084
3085 let cur_offset: usize = (3 - 1) * envelope_size;
3088
3089 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3091
3092 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3097 self.primary_parent_index
3098 .as_ref()
3099 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3100 encoder,
3101 offset + cur_offset,
3102 depth,
3103 )?;
3104
3105 _prev_end_offset = cur_offset + envelope_size;
3106
3107 Ok(())
3108 }
3109 }
3110
3111 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
3112 #[inline(always)]
3113 fn new_empty() -> Self {
3114 Self::default()
3115 }
3116
3117 unsafe fn decode(
3118 &mut self,
3119 decoder: &mut fidl::encoding::Decoder<'_, D>,
3120 offset: usize,
3121 mut depth: fidl::encoding::Depth,
3122 ) -> fidl::Result<()> {
3123 decoder.debug_check_bounds::<Self>(offset);
3124 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3125 None => return Err(fidl::Error::NotNullable),
3126 Some(len) => len,
3127 };
3128 if len == 0 {
3130 return Ok(());
3131 };
3132 depth.increment()?;
3133 let envelope_size = 8;
3134 let bytes_len = len * envelope_size;
3135 let offset = decoder.out_of_line_offset(bytes_len)?;
3136 let mut _next_ordinal_to_read = 0;
3138 let mut next_offset = offset;
3139 let end_offset = offset + bytes_len;
3140 _next_ordinal_to_read += 1;
3141 if next_offset >= end_offset {
3142 return Ok(());
3143 }
3144
3145 while _next_ordinal_to_read < 1 {
3147 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3148 _next_ordinal_to_read += 1;
3149 next_offset += envelope_size;
3150 }
3151
3152 let next_out_of_line = decoder.next_out_of_line();
3153 let handles_before = decoder.remaining_handles();
3154 if let Some((inlined, num_bytes, num_handles)) =
3155 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3156 {
3157 let member_inline_size =
3158 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
3159 decoder.context,
3160 );
3161 if inlined != (member_inline_size <= 4) {
3162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3163 }
3164 let inner_offset;
3165 let mut inner_depth = depth.clone();
3166 if inlined {
3167 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3168 inner_offset = next_offset;
3169 } else {
3170 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3171 inner_depth.increment()?;
3172 }
3173 let val_ref = self
3174 .composite_driver
3175 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
3176 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3178 {
3179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3180 }
3181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3183 }
3184 }
3185
3186 next_offset += envelope_size;
3187 _next_ordinal_to_read += 1;
3188 if next_offset >= end_offset {
3189 return Ok(());
3190 }
3191
3192 while _next_ordinal_to_read < 2 {
3194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3195 _next_ordinal_to_read += 1;
3196 next_offset += envelope_size;
3197 }
3198
3199 let next_out_of_line = decoder.next_out_of_line();
3200 let handles_before = decoder.remaining_handles();
3201 if let Some((inlined, num_bytes, num_handles)) =
3202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3203 {
3204 let member_inline_size = <fidl::encoding::UnboundedVector<
3205 fidl::encoding::UnboundedString,
3206 > as fidl::encoding::TypeMarker>::inline_size(
3207 decoder.context
3208 );
3209 if inlined != (member_inline_size <= 4) {
3210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3211 }
3212 let inner_offset;
3213 let mut inner_depth = depth.clone();
3214 if inlined {
3215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3216 inner_offset = next_offset;
3217 } else {
3218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3219 inner_depth.increment()?;
3220 }
3221 let val_ref = self.parent_names.get_or_insert_with(|| {
3222 fidl::new_empty!(
3223 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3224 D
3225 )
3226 });
3227 fidl::decode!(
3228 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3229 D,
3230 val_ref,
3231 decoder,
3232 inner_offset,
3233 inner_depth
3234 )?;
3235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3236 {
3237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3238 }
3239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3241 }
3242 }
3243
3244 next_offset += envelope_size;
3245 _next_ordinal_to_read += 1;
3246 if next_offset >= end_offset {
3247 return Ok(());
3248 }
3249
3250 while _next_ordinal_to_read < 3 {
3252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3253 _next_ordinal_to_read += 1;
3254 next_offset += envelope_size;
3255 }
3256
3257 let next_out_of_line = decoder.next_out_of_line();
3258 let handles_before = decoder.remaining_handles();
3259 if let Some((inlined, num_bytes, num_handles)) =
3260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3261 {
3262 let member_inline_size =
3263 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3264 if inlined != (member_inline_size <= 4) {
3265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3266 }
3267 let inner_offset;
3268 let mut inner_depth = depth.clone();
3269 if inlined {
3270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3271 inner_offset = next_offset;
3272 } else {
3273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3274 inner_depth.increment()?;
3275 }
3276 let val_ref =
3277 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3278 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3280 {
3281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3282 }
3283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3285 }
3286 }
3287
3288 next_offset += envelope_size;
3289
3290 while next_offset < end_offset {
3292 _next_ordinal_to_read += 1;
3293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3294 next_offset += envelope_size;
3295 }
3296
3297 Ok(())
3298 }
3299 }
3300
3301 impl CompositeInfo {
3302 #[inline(always)]
3303 fn max_ordinal_present(&self) -> u64 {
3304 if let Some(_) = self.matched_driver {
3305 return 2;
3306 }
3307 if let Some(_) = self.spec {
3308 return 1;
3309 }
3310 0
3311 }
3312 }
3313
3314 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
3315 type Borrowed<'a> = &'a Self;
3316 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3317 value
3318 }
3319 }
3320
3321 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
3322 type Owned = Self;
3323
3324 #[inline(always)]
3325 fn inline_align(_context: fidl::encoding::Context) -> usize {
3326 8
3327 }
3328
3329 #[inline(always)]
3330 fn inline_size(_context: fidl::encoding::Context) -> usize {
3331 16
3332 }
3333 }
3334
3335 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
3336 for &CompositeInfo
3337 {
3338 unsafe fn encode(
3339 self,
3340 encoder: &mut fidl::encoding::Encoder<'_, D>,
3341 offset: usize,
3342 mut depth: fidl::encoding::Depth,
3343 ) -> fidl::Result<()> {
3344 encoder.debug_check_bounds::<CompositeInfo>(offset);
3345 let max_ordinal: u64 = self.max_ordinal_present();
3347 encoder.write_num(max_ordinal, offset);
3348 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3349 if max_ordinal == 0 {
3351 return Ok(());
3352 }
3353 depth.increment()?;
3354 let envelope_size = 8;
3355 let bytes_len = max_ordinal as usize * envelope_size;
3356 #[allow(unused_variables)]
3357 let offset = encoder.out_of_line_offset(bytes_len);
3358 let mut _prev_end_offset: usize = 0;
3359 if 1 > max_ordinal {
3360 return Ok(());
3361 }
3362
3363 let cur_offset: usize = (1 - 1) * envelope_size;
3366
3367 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3369
3370 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
3375 self.spec
3376 .as_ref()
3377 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
3378 encoder,
3379 offset + cur_offset,
3380 depth,
3381 )?;
3382
3383 _prev_end_offset = cur_offset + envelope_size;
3384 if 2 > max_ordinal {
3385 return Ok(());
3386 }
3387
3388 let cur_offset: usize = (2 - 1) * envelope_size;
3391
3392 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3394
3395 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
3400 self.matched_driver
3401 .as_ref()
3402 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
3403 encoder,
3404 offset + cur_offset,
3405 depth,
3406 )?;
3407
3408 _prev_end_offset = cur_offset + envelope_size;
3409
3410 Ok(())
3411 }
3412 }
3413
3414 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
3415 #[inline(always)]
3416 fn new_empty() -> Self {
3417 Self::default()
3418 }
3419
3420 unsafe fn decode(
3421 &mut self,
3422 decoder: &mut fidl::encoding::Decoder<'_, D>,
3423 offset: usize,
3424 mut depth: fidl::encoding::Depth,
3425 ) -> fidl::Result<()> {
3426 decoder.debug_check_bounds::<Self>(offset);
3427 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3428 None => return Err(fidl::Error::NotNullable),
3429 Some(len) => len,
3430 };
3431 if len == 0 {
3433 return Ok(());
3434 };
3435 depth.increment()?;
3436 let envelope_size = 8;
3437 let bytes_len = len * envelope_size;
3438 let offset = decoder.out_of_line_offset(bytes_len)?;
3439 let mut _next_ordinal_to_read = 0;
3441 let mut next_offset = offset;
3442 let end_offset = offset + bytes_len;
3443 _next_ordinal_to_read += 1;
3444 if next_offset >= end_offset {
3445 return Ok(());
3446 }
3447
3448 while _next_ordinal_to_read < 1 {
3450 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3451 _next_ordinal_to_read += 1;
3452 next_offset += envelope_size;
3453 }
3454
3455 let next_out_of_line = decoder.next_out_of_line();
3456 let handles_before = decoder.remaining_handles();
3457 if let Some((inlined, num_bytes, num_handles)) =
3458 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3459 {
3460 let member_inline_size =
3461 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3462 if inlined != (member_inline_size <= 4) {
3463 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3464 }
3465 let inner_offset;
3466 let mut inner_depth = depth.clone();
3467 if inlined {
3468 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3469 inner_offset = next_offset;
3470 } else {
3471 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3472 inner_depth.increment()?;
3473 }
3474 let val_ref =
3475 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
3476 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
3477 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3478 {
3479 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3480 }
3481 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3482 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3483 }
3484 }
3485
3486 next_offset += envelope_size;
3487 _next_ordinal_to_read += 1;
3488 if next_offset >= end_offset {
3489 return Ok(());
3490 }
3491
3492 while _next_ordinal_to_read < 2 {
3494 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3495 _next_ordinal_to_read += 1;
3496 next_offset += envelope_size;
3497 }
3498
3499 let next_out_of_line = decoder.next_out_of_line();
3500 let handles_before = decoder.remaining_handles();
3501 if let Some((inlined, num_bytes, num_handles)) =
3502 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3503 {
3504 let member_inline_size =
3505 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
3506 decoder.context,
3507 );
3508 if inlined != (member_inline_size <= 4) {
3509 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3510 }
3511 let inner_offset;
3512 let mut inner_depth = depth.clone();
3513 if inlined {
3514 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3515 inner_offset = next_offset;
3516 } else {
3517 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3518 inner_depth.increment()?;
3519 }
3520 let val_ref = self
3521 .matched_driver
3522 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
3523 fidl::decode!(
3524 CompositeDriverMatch,
3525 D,
3526 val_ref,
3527 decoder,
3528 inner_offset,
3529 inner_depth
3530 )?;
3531 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3532 {
3533 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3534 }
3535 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3536 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3537 }
3538 }
3539
3540 next_offset += envelope_size;
3541
3542 while next_offset < end_offset {
3544 _next_ordinal_to_read += 1;
3545 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3546 next_offset += envelope_size;
3547 }
3548
3549 Ok(())
3550 }
3551 }
3552
3553 impl CompositeNodeSpec {
3554 #[inline(always)]
3555 fn max_ordinal_present(&self) -> u64 {
3556 if let Some(_) = self.driver_host {
3557 return 4;
3558 }
3559 if let Some(_) = self.parents2 {
3560 return 3;
3561 }
3562 if let Some(_) = self.parents {
3563 return 2;
3564 }
3565 if let Some(_) = self.name {
3566 return 1;
3567 }
3568 0
3569 }
3570 }
3571
3572 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
3573 type Borrowed<'a> = &'a Self;
3574 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3575 value
3576 }
3577 }
3578
3579 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
3580 type Owned = Self;
3581
3582 #[inline(always)]
3583 fn inline_align(_context: fidl::encoding::Context) -> usize {
3584 8
3585 }
3586
3587 #[inline(always)]
3588 fn inline_size(_context: fidl::encoding::Context) -> usize {
3589 16
3590 }
3591 }
3592
3593 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
3594 for &CompositeNodeSpec
3595 {
3596 unsafe fn encode(
3597 self,
3598 encoder: &mut fidl::encoding::Encoder<'_, D>,
3599 offset: usize,
3600 mut depth: fidl::encoding::Depth,
3601 ) -> fidl::Result<()> {
3602 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
3603 let max_ordinal: u64 = self.max_ordinal_present();
3605 encoder.write_num(max_ordinal, offset);
3606 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3607 if max_ordinal == 0 {
3609 return Ok(());
3610 }
3611 depth.increment()?;
3612 let envelope_size = 8;
3613 let bytes_len = max_ordinal as usize * envelope_size;
3614 #[allow(unused_variables)]
3615 let offset = encoder.out_of_line_offset(bytes_len);
3616 let mut _prev_end_offset: usize = 0;
3617 if 1 > max_ordinal {
3618 return Ok(());
3619 }
3620
3621 let cur_offset: usize = (1 - 1) * envelope_size;
3624
3625 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3627
3628 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3633 self.name.as_ref().map(
3634 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3635 ),
3636 encoder,
3637 offset + cur_offset,
3638 depth,
3639 )?;
3640
3641 _prev_end_offset = cur_offset + envelope_size;
3642 if 2 > max_ordinal {
3643 return Ok(());
3644 }
3645
3646 let cur_offset: usize = (2 - 1) * envelope_size;
3649
3650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3652
3653 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec>, D>(
3658 self.parents.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::ValueTypeMarker>::borrow),
3659 encoder, offset + cur_offset, depth
3660 )?;
3661
3662 _prev_end_offset = cur_offset + envelope_size;
3663 if 3 > max_ordinal {
3664 return Ok(());
3665 }
3666
3667 let cur_offset: usize = (3 - 1) * envelope_size;
3670
3671 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3673
3674 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec2>, D>(
3679 self.parents2.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::ValueTypeMarker>::borrow),
3680 encoder, offset + cur_offset, depth
3681 )?;
3682
3683 _prev_end_offset = cur_offset + envelope_size;
3684 if 4 > max_ordinal {
3685 return Ok(());
3686 }
3687
3688 let cur_offset: usize = (4 - 1) * envelope_size;
3691
3692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3694
3695 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
3700 self.driver_host.as_ref().map(
3701 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
3702 ),
3703 encoder,
3704 offset + cur_offset,
3705 depth,
3706 )?;
3707
3708 _prev_end_offset = cur_offset + envelope_size;
3709
3710 Ok(())
3711 }
3712 }
3713
3714 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
3715 #[inline(always)]
3716 fn new_empty() -> Self {
3717 Self::default()
3718 }
3719
3720 unsafe fn decode(
3721 &mut self,
3722 decoder: &mut fidl::encoding::Decoder<'_, D>,
3723 offset: usize,
3724 mut depth: fidl::encoding::Depth,
3725 ) -> fidl::Result<()> {
3726 decoder.debug_check_bounds::<Self>(offset);
3727 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3728 None => return Err(fidl::Error::NotNullable),
3729 Some(len) => len,
3730 };
3731 if len == 0 {
3733 return Ok(());
3734 };
3735 depth.increment()?;
3736 let envelope_size = 8;
3737 let bytes_len = len * envelope_size;
3738 let offset = decoder.out_of_line_offset(bytes_len)?;
3739 let mut _next_ordinal_to_read = 0;
3741 let mut next_offset = offset;
3742 let end_offset = offset + bytes_len;
3743 _next_ordinal_to_read += 1;
3744 if next_offset >= end_offset {
3745 return Ok(());
3746 }
3747
3748 while _next_ordinal_to_read < 1 {
3750 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3751 _next_ordinal_to_read += 1;
3752 next_offset += envelope_size;
3753 }
3754
3755 let next_out_of_line = decoder.next_out_of_line();
3756 let handles_before = decoder.remaining_handles();
3757 if let Some((inlined, num_bytes, num_handles)) =
3758 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3759 {
3760 let member_inline_size =
3761 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3762 decoder.context,
3763 );
3764 if inlined != (member_inline_size <= 4) {
3765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3766 }
3767 let inner_offset;
3768 let mut inner_depth = depth.clone();
3769 if inlined {
3770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3771 inner_offset = next_offset;
3772 } else {
3773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3774 inner_depth.increment()?;
3775 }
3776 let val_ref = self
3777 .name
3778 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3779 fidl::decode!(
3780 fidl::encoding::UnboundedString,
3781 D,
3782 val_ref,
3783 decoder,
3784 inner_offset,
3785 inner_depth
3786 )?;
3787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3788 {
3789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3790 }
3791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3793 }
3794 }
3795
3796 next_offset += envelope_size;
3797 _next_ordinal_to_read += 1;
3798 if next_offset >= end_offset {
3799 return Ok(());
3800 }
3801
3802 while _next_ordinal_to_read < 2 {
3804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3805 _next_ordinal_to_read += 1;
3806 next_offset += envelope_size;
3807 }
3808
3809 let next_out_of_line = decoder.next_out_of_line();
3810 let handles_before = decoder.remaining_handles();
3811 if let Some((inlined, num_bytes, num_handles)) =
3812 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3813 {
3814 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3815 if inlined != (member_inline_size <= 4) {
3816 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3817 }
3818 let inner_offset;
3819 let mut inner_depth = depth.clone();
3820 if inlined {
3821 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3822 inner_offset = next_offset;
3823 } else {
3824 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3825 inner_depth.increment()?;
3826 }
3827 let val_ref = self.parents.get_or_insert_with(|| {
3828 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec>, D)
3829 });
3830 fidl::decode!(
3831 fidl::encoding::UnboundedVector<ParentSpec>,
3832 D,
3833 val_ref,
3834 decoder,
3835 inner_offset,
3836 inner_depth
3837 )?;
3838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3839 {
3840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3841 }
3842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3844 }
3845 }
3846
3847 next_offset += envelope_size;
3848 _next_ordinal_to_read += 1;
3849 if next_offset >= end_offset {
3850 return Ok(());
3851 }
3852
3853 while _next_ordinal_to_read < 3 {
3855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3856 _next_ordinal_to_read += 1;
3857 next_offset += envelope_size;
3858 }
3859
3860 let next_out_of_line = decoder.next_out_of_line();
3861 let handles_before = decoder.remaining_handles();
3862 if let Some((inlined, num_bytes, num_handles)) =
3863 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3864 {
3865 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3866 if inlined != (member_inline_size <= 4) {
3867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3868 }
3869 let inner_offset;
3870 let mut inner_depth = depth.clone();
3871 if inlined {
3872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3873 inner_offset = next_offset;
3874 } else {
3875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3876 inner_depth.increment()?;
3877 }
3878 let val_ref = self.parents2.get_or_insert_with(|| {
3879 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec2>, D)
3880 });
3881 fidl::decode!(
3882 fidl::encoding::UnboundedVector<ParentSpec2>,
3883 D,
3884 val_ref,
3885 decoder,
3886 inner_offset,
3887 inner_depth
3888 )?;
3889 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3890 {
3891 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3892 }
3893 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3894 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3895 }
3896 }
3897
3898 next_offset += envelope_size;
3899 _next_ordinal_to_read += 1;
3900 if next_offset >= end_offset {
3901 return Ok(());
3902 }
3903
3904 while _next_ordinal_to_read < 4 {
3906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3907 _next_ordinal_to_read += 1;
3908 next_offset += envelope_size;
3909 }
3910
3911 let next_out_of_line = decoder.next_out_of_line();
3912 let handles_before = decoder.remaining_handles();
3913 if let Some((inlined, num_bytes, num_handles)) =
3914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3915 {
3916 let member_inline_size =
3917 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
3918 decoder.context,
3919 );
3920 if inlined != (member_inline_size <= 4) {
3921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3922 }
3923 let inner_offset;
3924 let mut inner_depth = depth.clone();
3925 if inlined {
3926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3927 inner_offset = next_offset;
3928 } else {
3929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3930 inner_depth.increment()?;
3931 }
3932 let val_ref = self
3933 .driver_host
3934 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
3935 fidl::decode!(
3936 fidl::encoding::BoundedString<128>,
3937 D,
3938 val_ref,
3939 decoder,
3940 inner_offset,
3941 inner_depth
3942 )?;
3943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3944 {
3945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3946 }
3947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3949 }
3950 }
3951
3952 next_offset += envelope_size;
3953
3954 while next_offset < end_offset {
3956 _next_ordinal_to_read += 1;
3957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3958 next_offset += envelope_size;
3959 }
3960
3961 Ok(())
3962 }
3963 }
3964
3965 impl CompositeParent {
3966 #[inline(always)]
3967 fn max_ordinal_present(&self) -> u64 {
3968 if let Some(_) = self.index {
3969 return 2;
3970 }
3971 if let Some(_) = self.composite {
3972 return 1;
3973 }
3974 0
3975 }
3976 }
3977
3978 impl fidl::encoding::ValueTypeMarker for CompositeParent {
3979 type Borrowed<'a> = &'a Self;
3980 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3981 value
3982 }
3983 }
3984
3985 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
3986 type Owned = Self;
3987
3988 #[inline(always)]
3989 fn inline_align(_context: fidl::encoding::Context) -> usize {
3990 8
3991 }
3992
3993 #[inline(always)]
3994 fn inline_size(_context: fidl::encoding::Context) -> usize {
3995 16
3996 }
3997 }
3998
3999 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
4000 for &CompositeParent
4001 {
4002 unsafe fn encode(
4003 self,
4004 encoder: &mut fidl::encoding::Encoder<'_, D>,
4005 offset: usize,
4006 mut depth: fidl::encoding::Depth,
4007 ) -> fidl::Result<()> {
4008 encoder.debug_check_bounds::<CompositeParent>(offset);
4009 let max_ordinal: u64 = self.max_ordinal_present();
4011 encoder.write_num(max_ordinal, offset);
4012 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4013 if max_ordinal == 0 {
4015 return Ok(());
4016 }
4017 depth.increment()?;
4018 let envelope_size = 8;
4019 let bytes_len = max_ordinal as usize * envelope_size;
4020 #[allow(unused_variables)]
4021 let offset = encoder.out_of_line_offset(bytes_len);
4022 let mut _prev_end_offset: usize = 0;
4023 if 1 > max_ordinal {
4024 return Ok(());
4025 }
4026
4027 let cur_offset: usize = (1 - 1) * envelope_size;
4030
4031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4033
4034 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
4039 self.composite
4040 .as_ref()
4041 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
4042 encoder,
4043 offset + cur_offset,
4044 depth,
4045 )?;
4046
4047 _prev_end_offset = cur_offset + envelope_size;
4048 if 2 > max_ordinal {
4049 return Ok(());
4050 }
4051
4052 let cur_offset: usize = (2 - 1) * envelope_size;
4055
4056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4058
4059 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4064 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4065 encoder,
4066 offset + cur_offset,
4067 depth,
4068 )?;
4069
4070 _prev_end_offset = cur_offset + envelope_size;
4071
4072 Ok(())
4073 }
4074 }
4075
4076 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
4077 #[inline(always)]
4078 fn new_empty() -> Self {
4079 Self::default()
4080 }
4081
4082 unsafe fn decode(
4083 &mut self,
4084 decoder: &mut fidl::encoding::Decoder<'_, D>,
4085 offset: usize,
4086 mut depth: fidl::encoding::Depth,
4087 ) -> fidl::Result<()> {
4088 decoder.debug_check_bounds::<Self>(offset);
4089 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4090 None => return Err(fidl::Error::NotNullable),
4091 Some(len) => len,
4092 };
4093 if len == 0 {
4095 return Ok(());
4096 };
4097 depth.increment()?;
4098 let envelope_size = 8;
4099 let bytes_len = len * envelope_size;
4100 let offset = decoder.out_of_line_offset(bytes_len)?;
4101 let mut _next_ordinal_to_read = 0;
4103 let mut next_offset = offset;
4104 let end_offset = offset + bytes_len;
4105 _next_ordinal_to_read += 1;
4106 if next_offset >= end_offset {
4107 return Ok(());
4108 }
4109
4110 while _next_ordinal_to_read < 1 {
4112 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4113 _next_ordinal_to_read += 1;
4114 next_offset += envelope_size;
4115 }
4116
4117 let next_out_of_line = decoder.next_out_of_line();
4118 let handles_before = decoder.remaining_handles();
4119 if let Some((inlined, num_bytes, num_handles)) =
4120 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4121 {
4122 let member_inline_size =
4123 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4124 if inlined != (member_inline_size <= 4) {
4125 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4126 }
4127 let inner_offset;
4128 let mut inner_depth = depth.clone();
4129 if inlined {
4130 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4131 inner_offset = next_offset;
4132 } else {
4133 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4134 inner_depth.increment()?;
4135 }
4136 let val_ref =
4137 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
4138 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4139 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4140 {
4141 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4142 }
4143 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4144 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4145 }
4146 }
4147
4148 next_offset += envelope_size;
4149 _next_ordinal_to_read += 1;
4150 if next_offset >= end_offset {
4151 return Ok(());
4152 }
4153
4154 while _next_ordinal_to_read < 2 {
4156 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4157 _next_ordinal_to_read += 1;
4158 next_offset += envelope_size;
4159 }
4160
4161 let next_out_of_line = decoder.next_out_of_line();
4162 let handles_before = decoder.remaining_handles();
4163 if let Some((inlined, num_bytes, num_handles)) =
4164 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4165 {
4166 let member_inline_size =
4167 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4168 if inlined != (member_inline_size <= 4) {
4169 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4170 }
4171 let inner_offset;
4172 let mut inner_depth = depth.clone();
4173 if inlined {
4174 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4175 inner_offset = next_offset;
4176 } else {
4177 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4178 inner_depth.increment()?;
4179 }
4180 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
4181 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4183 {
4184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4185 }
4186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4188 }
4189 }
4190
4191 next_offset += envelope_size;
4192
4193 while next_offset < end_offset {
4195 _next_ordinal_to_read += 1;
4196 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4197 next_offset += envelope_size;
4198 }
4199
4200 Ok(())
4201 }
4202 }
4203
4204 impl Dependency {
4205 #[inline(always)]
4206 fn max_ordinal_present(&self) -> u64 {
4207 if let Some(_) = self.tags {
4208 return 2;
4209 }
4210 if let Some(_) = self.selector {
4211 return 1;
4212 }
4213 0
4214 }
4215 }
4216
4217 impl fidl::encoding::ValueTypeMarker for Dependency {
4218 type Borrowed<'a> = &'a Self;
4219 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4220 value
4221 }
4222 }
4223
4224 unsafe impl fidl::encoding::TypeMarker for Dependency {
4225 type Owned = Self;
4226
4227 #[inline(always)]
4228 fn inline_align(_context: fidl::encoding::Context) -> usize {
4229 8
4230 }
4231
4232 #[inline(always)]
4233 fn inline_size(_context: fidl::encoding::Context) -> usize {
4234 16
4235 }
4236 }
4237
4238 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dependency, D>
4239 for &Dependency
4240 {
4241 unsafe fn encode(
4242 self,
4243 encoder: &mut fidl::encoding::Encoder<'_, D>,
4244 offset: usize,
4245 mut depth: fidl::encoding::Depth,
4246 ) -> fidl::Result<()> {
4247 encoder.debug_check_bounds::<Dependency>(offset);
4248 let max_ordinal: u64 = self.max_ordinal_present();
4250 encoder.write_num(max_ordinal, offset);
4251 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4252 if max_ordinal == 0 {
4254 return Ok(());
4255 }
4256 depth.increment()?;
4257 let envelope_size = 8;
4258 let bytes_len = max_ordinal as usize * envelope_size;
4259 #[allow(unused_variables)]
4260 let offset = encoder.out_of_line_offset(bytes_len);
4261 let mut _prev_end_offset: usize = 0;
4262 if 1 > max_ordinal {
4263 return Ok(());
4264 }
4265
4266 let cur_offset: usize = (1 - 1) * envelope_size;
4269
4270 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4272
4273 fidl::encoding::encode_in_envelope_optional::<Selector, D>(
4278 self.selector.as_ref().map(<Selector as fidl::encoding::ValueTypeMarker>::borrow),
4279 encoder,
4280 offset + cur_offset,
4281 depth,
4282 )?;
4283
4284 _prev_end_offset = cur_offset + envelope_size;
4285 if 2 > max_ordinal {
4286 return Ok(());
4287 }
4288
4289 let cur_offset: usize = (2 - 1) * envelope_size;
4292
4293 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4295
4296 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
4301 self.tags.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4302 encoder, offset + cur_offset, depth
4303 )?;
4304
4305 _prev_end_offset = cur_offset + envelope_size;
4306
4307 Ok(())
4308 }
4309 }
4310
4311 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dependency {
4312 #[inline(always)]
4313 fn new_empty() -> Self {
4314 Self::default()
4315 }
4316
4317 unsafe fn decode(
4318 &mut self,
4319 decoder: &mut fidl::encoding::Decoder<'_, D>,
4320 offset: usize,
4321 mut depth: fidl::encoding::Depth,
4322 ) -> fidl::Result<()> {
4323 decoder.debug_check_bounds::<Self>(offset);
4324 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4325 None => return Err(fidl::Error::NotNullable),
4326 Some(len) => len,
4327 };
4328 if len == 0 {
4330 return Ok(());
4331 };
4332 depth.increment()?;
4333 let envelope_size = 8;
4334 let bytes_len = len * envelope_size;
4335 let offset = decoder.out_of_line_offset(bytes_len)?;
4336 let mut _next_ordinal_to_read = 0;
4338 let mut next_offset = offset;
4339 let end_offset = offset + bytes_len;
4340 _next_ordinal_to_read += 1;
4341 if next_offset >= end_offset {
4342 return Ok(());
4343 }
4344
4345 while _next_ordinal_to_read < 1 {
4347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4348 _next_ordinal_to_read += 1;
4349 next_offset += envelope_size;
4350 }
4351
4352 let next_out_of_line = decoder.next_out_of_line();
4353 let handles_before = decoder.remaining_handles();
4354 if let Some((inlined, num_bytes, num_handles)) =
4355 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4356 {
4357 let member_inline_size =
4358 <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4359 if inlined != (member_inline_size <= 4) {
4360 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4361 }
4362 let inner_offset;
4363 let mut inner_depth = depth.clone();
4364 if inlined {
4365 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4366 inner_offset = next_offset;
4367 } else {
4368 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4369 inner_depth.increment()?;
4370 }
4371 let val_ref = self.selector.get_or_insert_with(|| fidl::new_empty!(Selector, D));
4372 fidl::decode!(Selector, D, val_ref, decoder, inner_offset, inner_depth)?;
4373 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4374 {
4375 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4376 }
4377 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4378 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4379 }
4380 }
4381
4382 next_offset += envelope_size;
4383 _next_ordinal_to_read += 1;
4384 if next_offset >= end_offset {
4385 return Ok(());
4386 }
4387
4388 while _next_ordinal_to_read < 2 {
4390 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4391 _next_ordinal_to_read += 1;
4392 next_offset += envelope_size;
4393 }
4394
4395 let next_out_of_line = decoder.next_out_of_line();
4396 let handles_before = decoder.remaining_handles();
4397 if let Some((inlined, num_bytes, num_handles)) =
4398 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4399 {
4400 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4401 if inlined != (member_inline_size <= 4) {
4402 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4403 }
4404 let inner_offset;
4405 let mut inner_depth = depth.clone();
4406 if inlined {
4407 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4408 inner_offset = next_offset;
4409 } else {
4410 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4411 inner_depth.increment()?;
4412 }
4413 let val_ref = self.tags.get_or_insert_with(
4414 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
4415 );
4416 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4417 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4418 {
4419 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4420 }
4421 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4422 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4423 }
4424 }
4425
4426 next_offset += envelope_size;
4427
4428 while next_offset < end_offset {
4430 _next_ordinal_to_read += 1;
4431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4432 next_offset += envelope_size;
4433 }
4434
4435 Ok(())
4436 }
4437 }
4438
4439 impl DeviceCategory {
4440 #[inline(always)]
4441 fn max_ordinal_present(&self) -> u64 {
4442 if let Some(_) = self.subcategory {
4443 return 2;
4444 }
4445 if let Some(_) = self.category {
4446 return 1;
4447 }
4448 0
4449 }
4450 }
4451
4452 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
4453 type Borrowed<'a> = &'a Self;
4454 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4455 value
4456 }
4457 }
4458
4459 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
4460 type Owned = Self;
4461
4462 #[inline(always)]
4463 fn inline_align(_context: fidl::encoding::Context) -> usize {
4464 8
4465 }
4466
4467 #[inline(always)]
4468 fn inline_size(_context: fidl::encoding::Context) -> usize {
4469 16
4470 }
4471 }
4472
4473 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
4474 for &DeviceCategory
4475 {
4476 unsafe fn encode(
4477 self,
4478 encoder: &mut fidl::encoding::Encoder<'_, D>,
4479 offset: usize,
4480 mut depth: fidl::encoding::Depth,
4481 ) -> fidl::Result<()> {
4482 encoder.debug_check_bounds::<DeviceCategory>(offset);
4483 let max_ordinal: u64 = self.max_ordinal_present();
4485 encoder.write_num(max_ordinal, offset);
4486 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4487 if max_ordinal == 0 {
4489 return Ok(());
4490 }
4491 depth.increment()?;
4492 let envelope_size = 8;
4493 let bytes_len = max_ordinal as usize * envelope_size;
4494 #[allow(unused_variables)]
4495 let offset = encoder.out_of_line_offset(bytes_len);
4496 let mut _prev_end_offset: usize = 0;
4497 if 1 > max_ordinal {
4498 return Ok(());
4499 }
4500
4501 let cur_offset: usize = (1 - 1) * envelope_size;
4504
4505 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4507
4508 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4513 self.category.as_ref().map(
4514 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4515 ),
4516 encoder,
4517 offset + cur_offset,
4518 depth,
4519 )?;
4520
4521 _prev_end_offset = cur_offset + envelope_size;
4522 if 2 > max_ordinal {
4523 return Ok(());
4524 }
4525
4526 let cur_offset: usize = (2 - 1) * envelope_size;
4529
4530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4532
4533 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4538 self.subcategory.as_ref().map(
4539 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4540 ),
4541 encoder,
4542 offset + cur_offset,
4543 depth,
4544 )?;
4545
4546 _prev_end_offset = cur_offset + envelope_size;
4547
4548 Ok(())
4549 }
4550 }
4551
4552 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
4553 #[inline(always)]
4554 fn new_empty() -> Self {
4555 Self::default()
4556 }
4557
4558 unsafe fn decode(
4559 &mut self,
4560 decoder: &mut fidl::encoding::Decoder<'_, D>,
4561 offset: usize,
4562 mut depth: fidl::encoding::Depth,
4563 ) -> fidl::Result<()> {
4564 decoder.debug_check_bounds::<Self>(offset);
4565 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4566 None => return Err(fidl::Error::NotNullable),
4567 Some(len) => len,
4568 };
4569 if len == 0 {
4571 return Ok(());
4572 };
4573 depth.increment()?;
4574 let envelope_size = 8;
4575 let bytes_len = len * envelope_size;
4576 let offset = decoder.out_of_line_offset(bytes_len)?;
4577 let mut _next_ordinal_to_read = 0;
4579 let mut next_offset = offset;
4580 let end_offset = offset + bytes_len;
4581 _next_ordinal_to_read += 1;
4582 if next_offset >= end_offset {
4583 return Ok(());
4584 }
4585
4586 while _next_ordinal_to_read < 1 {
4588 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4589 _next_ordinal_to_read += 1;
4590 next_offset += envelope_size;
4591 }
4592
4593 let next_out_of_line = decoder.next_out_of_line();
4594 let handles_before = decoder.remaining_handles();
4595 if let Some((inlined, num_bytes, num_handles)) =
4596 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4597 {
4598 let member_inline_size =
4599 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4600 decoder.context,
4601 );
4602 if inlined != (member_inline_size <= 4) {
4603 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4604 }
4605 let inner_offset;
4606 let mut inner_depth = depth.clone();
4607 if inlined {
4608 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4609 inner_offset = next_offset;
4610 } else {
4611 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4612 inner_depth.increment()?;
4613 }
4614 let val_ref = self
4615 .category
4616 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4617 fidl::decode!(
4618 fidl::encoding::UnboundedString,
4619 D,
4620 val_ref,
4621 decoder,
4622 inner_offset,
4623 inner_depth
4624 )?;
4625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4626 {
4627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4628 }
4629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4631 }
4632 }
4633
4634 next_offset += envelope_size;
4635 _next_ordinal_to_read += 1;
4636 if next_offset >= end_offset {
4637 return Ok(());
4638 }
4639
4640 while _next_ordinal_to_read < 2 {
4642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4643 _next_ordinal_to_read += 1;
4644 next_offset += envelope_size;
4645 }
4646
4647 let next_out_of_line = decoder.next_out_of_line();
4648 let handles_before = decoder.remaining_handles();
4649 if let Some((inlined, num_bytes, num_handles)) =
4650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4651 {
4652 let member_inline_size =
4653 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4654 decoder.context,
4655 );
4656 if inlined != (member_inline_size <= 4) {
4657 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4658 }
4659 let inner_offset;
4660 let mut inner_depth = depth.clone();
4661 if inlined {
4662 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4663 inner_offset = next_offset;
4664 } else {
4665 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4666 inner_depth.increment()?;
4667 }
4668 let val_ref = self
4669 .subcategory
4670 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4671 fidl::decode!(
4672 fidl::encoding::UnboundedString,
4673 D,
4674 val_ref,
4675 decoder,
4676 inner_offset,
4677 inner_depth
4678 )?;
4679 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4680 {
4681 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4682 }
4683 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4684 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4685 }
4686 }
4687
4688 next_offset += envelope_size;
4689
4690 while next_offset < end_offset {
4692 _next_ordinal_to_read += 1;
4693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4694 next_offset += envelope_size;
4695 }
4696
4697 Ok(())
4698 }
4699 }
4700
4701 impl DriverInfo {
4702 #[inline(always)]
4703 fn max_ordinal_present(&self) -> u64 {
4704 if let Some(_) = self.is_disabled {
4705 return 9;
4706 }
4707 if let Some(_) = self.driver_framework_version {
4708 return 8;
4709 }
4710 if let Some(_) = self.bind_rules_bytecode {
4711 return 7;
4712 }
4713 if let Some(_) = self.device_categories {
4714 return 6;
4715 }
4716 if let Some(_) = self.is_fallback {
4717 return 5;
4718 }
4719 if let Some(_) = self.package_type {
4720 return 4;
4721 }
4722 if let Some(_) = self.colocate {
4723 return 3;
4724 }
4725 if let Some(_) = self.name {
4726 return 2;
4727 }
4728 if let Some(_) = self.url {
4729 return 1;
4730 }
4731 0
4732 }
4733 }
4734
4735 impl fidl::encoding::ValueTypeMarker for DriverInfo {
4736 type Borrowed<'a> = &'a Self;
4737 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4738 value
4739 }
4740 }
4741
4742 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
4743 type Owned = Self;
4744
4745 #[inline(always)]
4746 fn inline_align(_context: fidl::encoding::Context) -> usize {
4747 8
4748 }
4749
4750 #[inline(always)]
4751 fn inline_size(_context: fidl::encoding::Context) -> usize {
4752 16
4753 }
4754 }
4755
4756 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
4757 for &DriverInfo
4758 {
4759 unsafe fn encode(
4760 self,
4761 encoder: &mut fidl::encoding::Encoder<'_, D>,
4762 offset: usize,
4763 mut depth: fidl::encoding::Depth,
4764 ) -> fidl::Result<()> {
4765 encoder.debug_check_bounds::<DriverInfo>(offset);
4766 let max_ordinal: u64 = self.max_ordinal_present();
4768 encoder.write_num(max_ordinal, offset);
4769 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4770 if max_ordinal == 0 {
4772 return Ok(());
4773 }
4774 depth.increment()?;
4775 let envelope_size = 8;
4776 let bytes_len = max_ordinal as usize * envelope_size;
4777 #[allow(unused_variables)]
4778 let offset = encoder.out_of_line_offset(bytes_len);
4779 let mut _prev_end_offset: usize = 0;
4780 if 1 > max_ordinal {
4781 return Ok(());
4782 }
4783
4784 let cur_offset: usize = (1 - 1) * envelope_size;
4787
4788 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4790
4791 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4796 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4797 encoder, offset + cur_offset, depth
4798 )?;
4799
4800 _prev_end_offset = cur_offset + envelope_size;
4801 if 2 > max_ordinal {
4802 return Ok(());
4803 }
4804
4805 let cur_offset: usize = (2 - 1) * envelope_size;
4808
4809 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4811
4812 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4817 self.name.as_ref().map(
4818 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4819 ),
4820 encoder,
4821 offset + cur_offset,
4822 depth,
4823 )?;
4824
4825 _prev_end_offset = cur_offset + envelope_size;
4826 if 3 > max_ordinal {
4827 return Ok(());
4828 }
4829
4830 let cur_offset: usize = (3 - 1) * envelope_size;
4833
4834 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4836
4837 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4842 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4843 encoder,
4844 offset + cur_offset,
4845 depth,
4846 )?;
4847
4848 _prev_end_offset = cur_offset + envelope_size;
4849 if 4 > max_ordinal {
4850 return Ok(());
4851 }
4852
4853 let cur_offset: usize = (4 - 1) * envelope_size;
4856
4857 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4859
4860 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
4865 self.package_type
4866 .as_ref()
4867 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
4868 encoder,
4869 offset + cur_offset,
4870 depth,
4871 )?;
4872
4873 _prev_end_offset = cur_offset + envelope_size;
4874 if 5 > max_ordinal {
4875 return Ok(());
4876 }
4877
4878 let cur_offset: usize = (5 - 1) * envelope_size;
4881
4882 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4884
4885 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4890 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4891 encoder,
4892 offset + cur_offset,
4893 depth,
4894 )?;
4895
4896 _prev_end_offset = cur_offset + envelope_size;
4897 if 6 > max_ordinal {
4898 return Ok(());
4899 }
4900
4901 let cur_offset: usize = (6 - 1) * envelope_size;
4904
4905 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4907
4908 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
4913 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
4914 encoder, offset + cur_offset, depth
4915 )?;
4916
4917 _prev_end_offset = cur_offset + envelope_size;
4918 if 7 > max_ordinal {
4919 return Ok(());
4920 }
4921
4922 let cur_offset: usize = (7 - 1) * envelope_size;
4925
4926 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4928
4929 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4934 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4935 encoder, offset + cur_offset, depth
4936 )?;
4937
4938 _prev_end_offset = cur_offset + envelope_size;
4939 if 8 > max_ordinal {
4940 return Ok(());
4941 }
4942
4943 let cur_offset: usize = (8 - 1) * envelope_size;
4946
4947 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4949
4950 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4955 self.driver_framework_version
4956 .as_ref()
4957 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4958 encoder,
4959 offset + cur_offset,
4960 depth,
4961 )?;
4962
4963 _prev_end_offset = cur_offset + envelope_size;
4964 if 9 > max_ordinal {
4965 return Ok(());
4966 }
4967
4968 let cur_offset: usize = (9 - 1) * envelope_size;
4971
4972 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4974
4975 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4980 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4981 encoder,
4982 offset + cur_offset,
4983 depth,
4984 )?;
4985
4986 _prev_end_offset = cur_offset + envelope_size;
4987
4988 Ok(())
4989 }
4990 }
4991
4992 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
4993 #[inline(always)]
4994 fn new_empty() -> Self {
4995 Self::default()
4996 }
4997
4998 unsafe fn decode(
4999 &mut self,
5000 decoder: &mut fidl::encoding::Decoder<'_, D>,
5001 offset: usize,
5002 mut depth: fidl::encoding::Depth,
5003 ) -> fidl::Result<()> {
5004 decoder.debug_check_bounds::<Self>(offset);
5005 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5006 None => return Err(fidl::Error::NotNullable),
5007 Some(len) => len,
5008 };
5009 if len == 0 {
5011 return Ok(());
5012 };
5013 depth.increment()?;
5014 let envelope_size = 8;
5015 let bytes_len = len * envelope_size;
5016 let offset = decoder.out_of_line_offset(bytes_len)?;
5017 let mut _next_ordinal_to_read = 0;
5019 let mut next_offset = offset;
5020 let end_offset = offset + bytes_len;
5021 _next_ordinal_to_read += 1;
5022 if next_offset >= end_offset {
5023 return Ok(());
5024 }
5025
5026 while _next_ordinal_to_read < 1 {
5028 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5029 _next_ordinal_to_read += 1;
5030 next_offset += envelope_size;
5031 }
5032
5033 let next_out_of_line = decoder.next_out_of_line();
5034 let handles_before = decoder.remaining_handles();
5035 if let Some((inlined, num_bytes, num_handles)) =
5036 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5037 {
5038 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5039 if inlined != (member_inline_size <= 4) {
5040 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5041 }
5042 let inner_offset;
5043 let mut inner_depth = depth.clone();
5044 if inlined {
5045 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5046 inner_offset = next_offset;
5047 } else {
5048 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5049 inner_depth.increment()?;
5050 }
5051 let val_ref = self.url.get_or_insert_with(|| {
5052 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5053 });
5054 fidl::decode!(
5055 fidl::encoding::BoundedString<4096>,
5056 D,
5057 val_ref,
5058 decoder,
5059 inner_offset,
5060 inner_depth
5061 )?;
5062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5063 {
5064 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5065 }
5066 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5067 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5068 }
5069 }
5070
5071 next_offset += envelope_size;
5072 _next_ordinal_to_read += 1;
5073 if next_offset >= end_offset {
5074 return Ok(());
5075 }
5076
5077 while _next_ordinal_to_read < 2 {
5079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5080 _next_ordinal_to_read += 1;
5081 next_offset += envelope_size;
5082 }
5083
5084 let next_out_of_line = decoder.next_out_of_line();
5085 let handles_before = decoder.remaining_handles();
5086 if let Some((inlined, num_bytes, num_handles)) =
5087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5088 {
5089 let member_inline_size =
5090 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5091 decoder.context,
5092 );
5093 if inlined != (member_inline_size <= 4) {
5094 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5095 }
5096 let inner_offset;
5097 let mut inner_depth = depth.clone();
5098 if inlined {
5099 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5100 inner_offset = next_offset;
5101 } else {
5102 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5103 inner_depth.increment()?;
5104 }
5105 let val_ref = self
5106 .name
5107 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5108 fidl::decode!(
5109 fidl::encoding::UnboundedString,
5110 D,
5111 val_ref,
5112 decoder,
5113 inner_offset,
5114 inner_depth
5115 )?;
5116 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5117 {
5118 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5119 }
5120 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5121 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5122 }
5123 }
5124
5125 next_offset += envelope_size;
5126 _next_ordinal_to_read += 1;
5127 if next_offset >= end_offset {
5128 return Ok(());
5129 }
5130
5131 while _next_ordinal_to_read < 3 {
5133 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5134 _next_ordinal_to_read += 1;
5135 next_offset += envelope_size;
5136 }
5137
5138 let next_out_of_line = decoder.next_out_of_line();
5139 let handles_before = decoder.remaining_handles();
5140 if let Some((inlined, num_bytes, num_handles)) =
5141 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5142 {
5143 let member_inline_size =
5144 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5145 if inlined != (member_inline_size <= 4) {
5146 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5147 }
5148 let inner_offset;
5149 let mut inner_depth = depth.clone();
5150 if inlined {
5151 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5152 inner_offset = next_offset;
5153 } else {
5154 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5155 inner_depth.increment()?;
5156 }
5157 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
5158 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5159 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5160 {
5161 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5162 }
5163 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5164 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5165 }
5166 }
5167
5168 next_offset += envelope_size;
5169 _next_ordinal_to_read += 1;
5170 if next_offset >= end_offset {
5171 return Ok(());
5172 }
5173
5174 while _next_ordinal_to_read < 4 {
5176 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5177 _next_ordinal_to_read += 1;
5178 next_offset += envelope_size;
5179 }
5180
5181 let next_out_of_line = decoder.next_out_of_line();
5182 let handles_before = decoder.remaining_handles();
5183 if let Some((inlined, num_bytes, num_handles)) =
5184 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5185 {
5186 let member_inline_size =
5187 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5188 if inlined != (member_inline_size <= 4) {
5189 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5190 }
5191 let inner_offset;
5192 let mut inner_depth = depth.clone();
5193 if inlined {
5194 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5195 inner_offset = next_offset;
5196 } else {
5197 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5198 inner_depth.increment()?;
5199 }
5200 let val_ref =
5201 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
5202 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
5203 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5204 {
5205 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5206 }
5207 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5208 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5209 }
5210 }
5211
5212 next_offset += envelope_size;
5213 _next_ordinal_to_read += 1;
5214 if next_offset >= end_offset {
5215 return Ok(());
5216 }
5217
5218 while _next_ordinal_to_read < 5 {
5220 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5221 _next_ordinal_to_read += 1;
5222 next_offset += envelope_size;
5223 }
5224
5225 let next_out_of_line = decoder.next_out_of_line();
5226 let handles_before = decoder.remaining_handles();
5227 if let Some((inlined, num_bytes, num_handles)) =
5228 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5229 {
5230 let member_inline_size =
5231 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5232 if inlined != (member_inline_size <= 4) {
5233 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5234 }
5235 let inner_offset;
5236 let mut inner_depth = depth.clone();
5237 if inlined {
5238 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5239 inner_offset = next_offset;
5240 } else {
5241 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5242 inner_depth.increment()?;
5243 }
5244 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
5245 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5246 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5247 {
5248 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5249 }
5250 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5251 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5252 }
5253 }
5254
5255 next_offset += envelope_size;
5256 _next_ordinal_to_read += 1;
5257 if next_offset >= end_offset {
5258 return Ok(());
5259 }
5260
5261 while _next_ordinal_to_read < 6 {
5263 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5264 _next_ordinal_to_read += 1;
5265 next_offset += envelope_size;
5266 }
5267
5268 let next_out_of_line = decoder.next_out_of_line();
5269 let handles_before = decoder.remaining_handles();
5270 if let Some((inlined, num_bytes, num_handles)) =
5271 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5272 {
5273 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5274 if inlined != (member_inline_size <= 4) {
5275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5276 }
5277 let inner_offset;
5278 let mut inner_depth = depth.clone();
5279 if inlined {
5280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5281 inner_offset = next_offset;
5282 } else {
5283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5284 inner_depth.increment()?;
5285 }
5286 let val_ref = self.device_categories.get_or_insert_with(|| {
5287 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
5288 });
5289 fidl::decode!(
5290 fidl::encoding::UnboundedVector<DeviceCategory>,
5291 D,
5292 val_ref,
5293 decoder,
5294 inner_offset,
5295 inner_depth
5296 )?;
5297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5298 {
5299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5300 }
5301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5303 }
5304 }
5305
5306 next_offset += envelope_size;
5307 _next_ordinal_to_read += 1;
5308 if next_offset >= end_offset {
5309 return Ok(());
5310 }
5311
5312 while _next_ordinal_to_read < 7 {
5314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5315 _next_ordinal_to_read += 1;
5316 next_offset += envelope_size;
5317 }
5318
5319 let next_out_of_line = decoder.next_out_of_line();
5320 let handles_before = decoder.remaining_handles();
5321 if let Some((inlined, num_bytes, num_handles)) =
5322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5323 {
5324 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5325 if inlined != (member_inline_size <= 4) {
5326 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5327 }
5328 let inner_offset;
5329 let mut inner_depth = depth.clone();
5330 if inlined {
5331 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5332 inner_offset = next_offset;
5333 } else {
5334 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5335 inner_depth.increment()?;
5336 }
5337 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
5338 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5339 });
5340 fidl::decode!(
5341 fidl::encoding::UnboundedVector<u8>,
5342 D,
5343 val_ref,
5344 decoder,
5345 inner_offset,
5346 inner_depth
5347 )?;
5348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5349 {
5350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5351 }
5352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5354 }
5355 }
5356
5357 next_offset += envelope_size;
5358 _next_ordinal_to_read += 1;
5359 if next_offset >= end_offset {
5360 return Ok(());
5361 }
5362
5363 while _next_ordinal_to_read < 8 {
5365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5366 _next_ordinal_to_read += 1;
5367 next_offset += envelope_size;
5368 }
5369
5370 let next_out_of_line = decoder.next_out_of_line();
5371 let handles_before = decoder.remaining_handles();
5372 if let Some((inlined, num_bytes, num_handles)) =
5373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5374 {
5375 let member_inline_size =
5376 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5377 if inlined != (member_inline_size <= 4) {
5378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5379 }
5380 let inner_offset;
5381 let mut inner_depth = depth.clone();
5382 if inlined {
5383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5384 inner_offset = next_offset;
5385 } else {
5386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5387 inner_depth.increment()?;
5388 }
5389 let val_ref =
5390 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
5391 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5392 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5393 {
5394 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5395 }
5396 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5397 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5398 }
5399 }
5400
5401 next_offset += envelope_size;
5402 _next_ordinal_to_read += 1;
5403 if next_offset >= end_offset {
5404 return Ok(());
5405 }
5406
5407 while _next_ordinal_to_read < 9 {
5409 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5410 _next_ordinal_to_read += 1;
5411 next_offset += envelope_size;
5412 }
5413
5414 let next_out_of_line = decoder.next_out_of_line();
5415 let handles_before = decoder.remaining_handles();
5416 if let Some((inlined, num_bytes, num_handles)) =
5417 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5418 {
5419 let member_inline_size =
5420 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5421 if inlined != (member_inline_size <= 4) {
5422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5423 }
5424 let inner_offset;
5425 let mut inner_depth = depth.clone();
5426 if inlined {
5427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5428 inner_offset = next_offset;
5429 } else {
5430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5431 inner_depth.increment()?;
5432 }
5433 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5434 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5435 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5436 {
5437 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5438 }
5439 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5440 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5441 }
5442 }
5443
5444 next_offset += envelope_size;
5445
5446 while next_offset < end_offset {
5448 _next_ordinal_to_read += 1;
5449 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5450 next_offset += envelope_size;
5451 }
5452
5453 Ok(())
5454 }
5455 }
5456
5457 impl Node2 {
5458 #[inline(always)]
5459 fn max_ordinal_present(&self) -> u64 {
5460 if let Some(_) = self.dependencies {
5461 return 2;
5462 }
5463 if let Some(_) = self.name {
5464 return 1;
5465 }
5466 0
5467 }
5468 }
5469
5470 impl fidl::encoding::ValueTypeMarker for Node2 {
5471 type Borrowed<'a> = &'a Self;
5472 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5473 value
5474 }
5475 }
5476
5477 unsafe impl fidl::encoding::TypeMarker for Node2 {
5478 type Owned = Self;
5479
5480 #[inline(always)]
5481 fn inline_align(_context: fidl::encoding::Context) -> usize {
5482 8
5483 }
5484
5485 #[inline(always)]
5486 fn inline_size(_context: fidl::encoding::Context) -> usize {
5487 16
5488 }
5489 }
5490
5491 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node2, D> for &Node2 {
5492 unsafe fn encode(
5493 self,
5494 encoder: &mut fidl::encoding::Encoder<'_, D>,
5495 offset: usize,
5496 mut depth: fidl::encoding::Depth,
5497 ) -> fidl::Result<()> {
5498 encoder.debug_check_bounds::<Node2>(offset);
5499 let max_ordinal: u64 = self.max_ordinal_present();
5501 encoder.write_num(max_ordinal, offset);
5502 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5503 if max_ordinal == 0 {
5505 return Ok(());
5506 }
5507 depth.increment()?;
5508 let envelope_size = 8;
5509 let bytes_len = max_ordinal as usize * envelope_size;
5510 #[allow(unused_variables)]
5511 let offset = encoder.out_of_line_offset(bytes_len);
5512 let mut _prev_end_offset: usize = 0;
5513 if 1 > max_ordinal {
5514 return Ok(());
5515 }
5516
5517 let cur_offset: usize = (1 - 1) * envelope_size;
5520
5521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5523
5524 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5529 self.name.as_ref().map(
5530 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5531 ),
5532 encoder,
5533 offset + cur_offset,
5534 depth,
5535 )?;
5536
5537 _prev_end_offset = cur_offset + envelope_size;
5538 if 2 > max_ordinal {
5539 return Ok(());
5540 }
5541
5542 let cur_offset: usize = (2 - 1) * envelope_size;
5545
5546 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5548
5549 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Dependency>, D>(
5554 self.dependencies.as_ref().map(<fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::ValueTypeMarker>::borrow),
5555 encoder, offset + cur_offset, depth
5556 )?;
5557
5558 _prev_end_offset = cur_offset + envelope_size;
5559
5560 Ok(())
5561 }
5562 }
5563
5564 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node2 {
5565 #[inline(always)]
5566 fn new_empty() -> Self {
5567 Self::default()
5568 }
5569
5570 unsafe fn decode(
5571 &mut self,
5572 decoder: &mut fidl::encoding::Decoder<'_, D>,
5573 offset: usize,
5574 mut depth: fidl::encoding::Depth,
5575 ) -> fidl::Result<()> {
5576 decoder.debug_check_bounds::<Self>(offset);
5577 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5578 None => return Err(fidl::Error::NotNullable),
5579 Some(len) => len,
5580 };
5581 if len == 0 {
5583 return Ok(());
5584 };
5585 depth.increment()?;
5586 let envelope_size = 8;
5587 let bytes_len = len * envelope_size;
5588 let offset = decoder.out_of_line_offset(bytes_len)?;
5589 let mut _next_ordinal_to_read = 0;
5591 let mut next_offset = offset;
5592 let end_offset = offset + bytes_len;
5593 _next_ordinal_to_read += 1;
5594 if next_offset >= end_offset {
5595 return Ok(());
5596 }
5597
5598 while _next_ordinal_to_read < 1 {
5600 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5601 _next_ordinal_to_read += 1;
5602 next_offset += envelope_size;
5603 }
5604
5605 let next_out_of_line = decoder.next_out_of_line();
5606 let handles_before = decoder.remaining_handles();
5607 if let Some((inlined, num_bytes, num_handles)) =
5608 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5609 {
5610 let member_inline_size =
5611 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5612 decoder.context,
5613 );
5614 if inlined != (member_inline_size <= 4) {
5615 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5616 }
5617 let inner_offset;
5618 let mut inner_depth = depth.clone();
5619 if inlined {
5620 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5621 inner_offset = next_offset;
5622 } else {
5623 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5624 inner_depth.increment()?;
5625 }
5626 let val_ref = self
5627 .name
5628 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5629 fidl::decode!(
5630 fidl::encoding::UnboundedString,
5631 D,
5632 val_ref,
5633 decoder,
5634 inner_offset,
5635 inner_depth
5636 )?;
5637 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5638 {
5639 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5640 }
5641 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5642 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5643 }
5644 }
5645
5646 next_offset += envelope_size;
5647 _next_ordinal_to_read += 1;
5648 if next_offset >= end_offset {
5649 return Ok(());
5650 }
5651
5652 while _next_ordinal_to_read < 2 {
5654 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5655 _next_ordinal_to_read += 1;
5656 next_offset += envelope_size;
5657 }
5658
5659 let next_out_of_line = decoder.next_out_of_line();
5660 let handles_before = decoder.remaining_handles();
5661 if let Some((inlined, num_bytes, num_handles)) =
5662 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5663 {
5664 let member_inline_size = <fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5665 if inlined != (member_inline_size <= 4) {
5666 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5667 }
5668 let inner_offset;
5669 let mut inner_depth = depth.clone();
5670 if inlined {
5671 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5672 inner_offset = next_offset;
5673 } else {
5674 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5675 inner_depth.increment()?;
5676 }
5677 let val_ref = self.dependencies.get_or_insert_with(|| {
5678 fidl::new_empty!(fidl::encoding::UnboundedVector<Dependency>, D)
5679 });
5680 fidl::decode!(
5681 fidl::encoding::UnboundedVector<Dependency>,
5682 D,
5683 val_ref,
5684 decoder,
5685 inner_offset,
5686 inner_depth
5687 )?;
5688 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5689 {
5690 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5691 }
5692 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5693 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5694 }
5695 }
5696
5697 next_offset += envelope_size;
5698
5699 while next_offset < end_offset {
5701 _next_ordinal_to_read += 1;
5702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5703 next_offset += envelope_size;
5704 }
5705
5706 Ok(())
5707 }
5708 }
5709
5710 impl NodeControllerRequestBindRequest {
5711 #[inline(always)]
5712 fn max_ordinal_present(&self) -> u64 {
5713 if let Some(_) = self.driver_url_suffix {
5714 return 2;
5715 }
5716 if let Some(_) = self.force_rebind {
5717 return 1;
5718 }
5719 0
5720 }
5721 }
5722
5723 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
5724 type Borrowed<'a> = &'a Self;
5725 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5726 value
5727 }
5728 }
5729
5730 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
5731 type Owned = Self;
5732
5733 #[inline(always)]
5734 fn inline_align(_context: fidl::encoding::Context) -> usize {
5735 8
5736 }
5737
5738 #[inline(always)]
5739 fn inline_size(_context: fidl::encoding::Context) -> usize {
5740 16
5741 }
5742 }
5743
5744 unsafe impl<D: fidl::encoding::ResourceDialect>
5745 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
5746 for &NodeControllerRequestBindRequest
5747 {
5748 unsafe fn encode(
5749 self,
5750 encoder: &mut fidl::encoding::Encoder<'_, D>,
5751 offset: usize,
5752 mut depth: fidl::encoding::Depth,
5753 ) -> fidl::Result<()> {
5754 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
5755 let max_ordinal: u64 = self.max_ordinal_present();
5757 encoder.write_num(max_ordinal, offset);
5758 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5759 if max_ordinal == 0 {
5761 return Ok(());
5762 }
5763 depth.increment()?;
5764 let envelope_size = 8;
5765 let bytes_len = max_ordinal as usize * envelope_size;
5766 #[allow(unused_variables)]
5767 let offset = encoder.out_of_line_offset(bytes_len);
5768 let mut _prev_end_offset: usize = 0;
5769 if 1 > max_ordinal {
5770 return Ok(());
5771 }
5772
5773 let cur_offset: usize = (1 - 1) * envelope_size;
5776
5777 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5779
5780 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5785 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5786 encoder,
5787 offset + cur_offset,
5788 depth,
5789 )?;
5790
5791 _prev_end_offset = cur_offset + envelope_size;
5792 if 2 > max_ordinal {
5793 return Ok(());
5794 }
5795
5796 let cur_offset: usize = (2 - 1) * envelope_size;
5799
5800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5802
5803 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5808 self.driver_url_suffix.as_ref().map(
5809 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5810 ),
5811 encoder,
5812 offset + cur_offset,
5813 depth,
5814 )?;
5815
5816 _prev_end_offset = cur_offset + envelope_size;
5817
5818 Ok(())
5819 }
5820 }
5821
5822 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5823 for NodeControllerRequestBindRequest
5824 {
5825 #[inline(always)]
5826 fn new_empty() -> Self {
5827 Self::default()
5828 }
5829
5830 unsafe fn decode(
5831 &mut self,
5832 decoder: &mut fidl::encoding::Decoder<'_, D>,
5833 offset: usize,
5834 mut depth: fidl::encoding::Depth,
5835 ) -> fidl::Result<()> {
5836 decoder.debug_check_bounds::<Self>(offset);
5837 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5838 None => return Err(fidl::Error::NotNullable),
5839 Some(len) => len,
5840 };
5841 if len == 0 {
5843 return Ok(());
5844 };
5845 depth.increment()?;
5846 let envelope_size = 8;
5847 let bytes_len = len * envelope_size;
5848 let offset = decoder.out_of_line_offset(bytes_len)?;
5849 let mut _next_ordinal_to_read = 0;
5851 let mut next_offset = offset;
5852 let end_offset = offset + bytes_len;
5853 _next_ordinal_to_read += 1;
5854 if next_offset >= end_offset {
5855 return Ok(());
5856 }
5857
5858 while _next_ordinal_to_read < 1 {
5860 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5861 _next_ordinal_to_read += 1;
5862 next_offset += envelope_size;
5863 }
5864
5865 let next_out_of_line = decoder.next_out_of_line();
5866 let handles_before = decoder.remaining_handles();
5867 if let Some((inlined, num_bytes, num_handles)) =
5868 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5869 {
5870 let member_inline_size =
5871 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5872 if inlined != (member_inline_size <= 4) {
5873 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5874 }
5875 let inner_offset;
5876 let mut inner_depth = depth.clone();
5877 if inlined {
5878 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5879 inner_offset = next_offset;
5880 } else {
5881 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5882 inner_depth.increment()?;
5883 }
5884 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
5885 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5886 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5887 {
5888 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5889 }
5890 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5891 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5892 }
5893 }
5894
5895 next_offset += envelope_size;
5896 _next_ordinal_to_read += 1;
5897 if next_offset >= end_offset {
5898 return Ok(());
5899 }
5900
5901 while _next_ordinal_to_read < 2 {
5903 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5904 _next_ordinal_to_read += 1;
5905 next_offset += envelope_size;
5906 }
5907
5908 let next_out_of_line = decoder.next_out_of_line();
5909 let handles_before = decoder.remaining_handles();
5910 if let Some((inlined, num_bytes, num_handles)) =
5911 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5912 {
5913 let member_inline_size =
5914 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5915 decoder.context,
5916 );
5917 if inlined != (member_inline_size <= 4) {
5918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5919 }
5920 let inner_offset;
5921 let mut inner_depth = depth.clone();
5922 if inlined {
5923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5924 inner_offset = next_offset;
5925 } else {
5926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5927 inner_depth.increment()?;
5928 }
5929 let val_ref = self
5930 .driver_url_suffix
5931 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5932 fidl::decode!(
5933 fidl::encoding::UnboundedString,
5934 D,
5935 val_ref,
5936 decoder,
5937 inner_offset,
5938 inner_depth
5939 )?;
5940 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5941 {
5942 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5943 }
5944 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5945 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5946 }
5947 }
5948
5949 next_offset += envelope_size;
5950
5951 while next_offset < end_offset {
5953 _next_ordinal_to_read += 1;
5954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5955 next_offset += envelope_size;
5956 }
5957
5958 Ok(())
5959 }
5960 }
5961
5962 impl NodeSymbol {
5963 #[inline(always)]
5964 fn max_ordinal_present(&self) -> u64 {
5965 if let Some(_) = self.module_name {
5966 return 3;
5967 }
5968 if let Some(_) = self.address {
5969 return 2;
5970 }
5971 if let Some(_) = self.name {
5972 return 1;
5973 }
5974 0
5975 }
5976 }
5977
5978 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
5979 type Borrowed<'a> = &'a Self;
5980 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5981 value
5982 }
5983 }
5984
5985 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
5986 type Owned = Self;
5987
5988 #[inline(always)]
5989 fn inline_align(_context: fidl::encoding::Context) -> usize {
5990 8
5991 }
5992
5993 #[inline(always)]
5994 fn inline_size(_context: fidl::encoding::Context) -> usize {
5995 16
5996 }
5997 }
5998
5999 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
6000 for &NodeSymbol
6001 {
6002 unsafe fn encode(
6003 self,
6004 encoder: &mut fidl::encoding::Encoder<'_, D>,
6005 offset: usize,
6006 mut depth: fidl::encoding::Depth,
6007 ) -> fidl::Result<()> {
6008 encoder.debug_check_bounds::<NodeSymbol>(offset);
6009 let max_ordinal: u64 = self.max_ordinal_present();
6011 encoder.write_num(max_ordinal, offset);
6012 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6013 if max_ordinal == 0 {
6015 return Ok(());
6016 }
6017 depth.increment()?;
6018 let envelope_size = 8;
6019 let bytes_len = max_ordinal as usize * envelope_size;
6020 #[allow(unused_variables)]
6021 let offset = encoder.out_of_line_offset(bytes_len);
6022 let mut _prev_end_offset: usize = 0;
6023 if 1 > max_ordinal {
6024 return Ok(());
6025 }
6026
6027 let cur_offset: usize = (1 - 1) * envelope_size;
6030
6031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6033
6034 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
6039 self.name.as_ref().map(
6040 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
6041 ),
6042 encoder,
6043 offset + cur_offset,
6044 depth,
6045 )?;
6046
6047 _prev_end_offset = cur_offset + envelope_size;
6048 if 2 > max_ordinal {
6049 return Ok(());
6050 }
6051
6052 let cur_offset: usize = (2 - 1) * envelope_size;
6055
6056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6058
6059 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6064 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6065 encoder,
6066 offset + cur_offset,
6067 depth,
6068 )?;
6069
6070 _prev_end_offset = cur_offset + envelope_size;
6071 if 3 > max_ordinal {
6072 return Ok(());
6073 }
6074
6075 let cur_offset: usize = (3 - 1) * envelope_size;
6078
6079 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6081
6082 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
6087 self.module_name.as_ref().map(
6088 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
6089 ),
6090 encoder,
6091 offset + cur_offset,
6092 depth,
6093 )?;
6094
6095 _prev_end_offset = cur_offset + envelope_size;
6096
6097 Ok(())
6098 }
6099 }
6100
6101 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
6102 #[inline(always)]
6103 fn new_empty() -> Self {
6104 Self::default()
6105 }
6106
6107 unsafe fn decode(
6108 &mut self,
6109 decoder: &mut fidl::encoding::Decoder<'_, D>,
6110 offset: usize,
6111 mut depth: fidl::encoding::Depth,
6112 ) -> fidl::Result<()> {
6113 decoder.debug_check_bounds::<Self>(offset);
6114 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6115 None => return Err(fidl::Error::NotNullable),
6116 Some(len) => len,
6117 };
6118 if len == 0 {
6120 return Ok(());
6121 };
6122 depth.increment()?;
6123 let envelope_size = 8;
6124 let bytes_len = len * envelope_size;
6125 let offset = decoder.out_of_line_offset(bytes_len)?;
6126 let mut _next_ordinal_to_read = 0;
6128 let mut next_offset = offset;
6129 let end_offset = offset + bytes_len;
6130 _next_ordinal_to_read += 1;
6131 if next_offset >= end_offset {
6132 return Ok(());
6133 }
6134
6135 while _next_ordinal_to_read < 1 {
6137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6138 _next_ordinal_to_read += 1;
6139 next_offset += envelope_size;
6140 }
6141
6142 let next_out_of_line = decoder.next_out_of_line();
6143 let handles_before = decoder.remaining_handles();
6144 if let Some((inlined, num_bytes, num_handles)) =
6145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6146 {
6147 let member_inline_size =
6148 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6149 decoder.context,
6150 );
6151 if inlined != (member_inline_size <= 4) {
6152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6153 }
6154 let inner_offset;
6155 let mut inner_depth = depth.clone();
6156 if inlined {
6157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6158 inner_offset = next_offset;
6159 } else {
6160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6161 inner_depth.increment()?;
6162 }
6163 let val_ref = self
6164 .name
6165 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6166 fidl::decode!(
6167 fidl::encoding::BoundedString<128>,
6168 D,
6169 val_ref,
6170 decoder,
6171 inner_offset,
6172 inner_depth
6173 )?;
6174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6175 {
6176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6177 }
6178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6180 }
6181 }
6182
6183 next_offset += envelope_size;
6184 _next_ordinal_to_read += 1;
6185 if next_offset >= end_offset {
6186 return Ok(());
6187 }
6188
6189 while _next_ordinal_to_read < 2 {
6191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6192 _next_ordinal_to_read += 1;
6193 next_offset += envelope_size;
6194 }
6195
6196 let next_out_of_line = decoder.next_out_of_line();
6197 let handles_before = decoder.remaining_handles();
6198 if let Some((inlined, num_bytes, num_handles)) =
6199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6200 {
6201 let member_inline_size =
6202 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6203 if inlined != (member_inline_size <= 4) {
6204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6205 }
6206 let inner_offset;
6207 let mut inner_depth = depth.clone();
6208 if inlined {
6209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6210 inner_offset = next_offset;
6211 } else {
6212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6213 inner_depth.increment()?;
6214 }
6215 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
6216 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6218 {
6219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6220 }
6221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6223 }
6224 }
6225
6226 next_offset += envelope_size;
6227 _next_ordinal_to_read += 1;
6228 if next_offset >= end_offset {
6229 return Ok(());
6230 }
6231
6232 while _next_ordinal_to_read < 3 {
6234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6235 _next_ordinal_to_read += 1;
6236 next_offset += envelope_size;
6237 }
6238
6239 let next_out_of_line = decoder.next_out_of_line();
6240 let handles_before = decoder.remaining_handles();
6241 if let Some((inlined, num_bytes, num_handles)) =
6242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6243 {
6244 let member_inline_size =
6245 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6246 decoder.context,
6247 );
6248 if inlined != (member_inline_size <= 4) {
6249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6250 }
6251 let inner_offset;
6252 let mut inner_depth = depth.clone();
6253 if inlined {
6254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6255 inner_offset = next_offset;
6256 } else {
6257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6258 inner_depth.increment()?;
6259 }
6260 let val_ref = self
6261 .module_name
6262 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6263 fidl::decode!(
6264 fidl::encoding::BoundedString<128>,
6265 D,
6266 val_ref,
6267 decoder,
6268 inner_offset,
6269 inner_depth
6270 )?;
6271 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6272 {
6273 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6274 }
6275 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6276 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6277 }
6278 }
6279
6280 next_offset += envelope_size;
6281
6282 while next_offset < end_offset {
6284 _next_ordinal_to_read += 1;
6285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6286 next_offset += envelope_size;
6287 }
6288
6289 Ok(())
6290 }
6291 }
6292
6293 impl Selector {
6294 #[inline(always)]
6295 fn max_ordinal_present(&self) -> u64 {
6296 if let Some(_) = self.exclude_properties {
6297 return 3;
6298 }
6299 if let Some(_) = self.include_properties {
6300 return 2;
6301 }
6302 if let Some(_) = self.offers {
6303 return 1;
6304 }
6305 0
6306 }
6307 }
6308
6309 impl fidl::encoding::ValueTypeMarker for Selector {
6310 type Borrowed<'a> = &'a Self;
6311 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6312 value
6313 }
6314 }
6315
6316 unsafe impl fidl::encoding::TypeMarker for Selector {
6317 type Owned = Self;
6318
6319 #[inline(always)]
6320 fn inline_align(_context: fidl::encoding::Context) -> usize {
6321 8
6322 }
6323
6324 #[inline(always)]
6325 fn inline_size(_context: fidl::encoding::Context) -> usize {
6326 16
6327 }
6328 }
6329
6330 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
6331 unsafe fn encode(
6332 self,
6333 encoder: &mut fidl::encoding::Encoder<'_, D>,
6334 offset: usize,
6335 mut depth: fidl::encoding::Depth,
6336 ) -> fidl::Result<()> {
6337 encoder.debug_check_bounds::<Selector>(offset);
6338 let max_ordinal: u64 = self.max_ordinal_present();
6340 encoder.write_num(max_ordinal, offset);
6341 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6342 if max_ordinal == 0 {
6344 return Ok(());
6345 }
6346 depth.increment()?;
6347 let envelope_size = 8;
6348 let bytes_len = max_ordinal as usize * envelope_size;
6349 #[allow(unused_variables)]
6350 let offset = encoder.out_of_line_offset(bytes_len);
6351 let mut _prev_end_offset: usize = 0;
6352 if 1 > max_ordinal {
6353 return Ok(());
6354 }
6355
6356 let cur_offset: usize = (1 - 1) * envelope_size;
6359
6360 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6362
6363 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Offer, 128>, D>(
6368 self.offers.as_ref().map(
6369 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
6370 ),
6371 encoder,
6372 offset + cur_offset,
6373 depth,
6374 )?;
6375
6376 _prev_end_offset = cur_offset + envelope_size;
6377 if 2 > max_ordinal {
6378 return Ok(());
6379 }
6380
6381 let cur_offset: usize = (2 - 1) * envelope_size;
6384
6385 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6387
6388 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
6393 self.include_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6394 encoder, offset + cur_offset, depth
6395 )?;
6396
6397 _prev_end_offset = cur_offset + envelope_size;
6398 if 3 > max_ordinal {
6399 return Ok(());
6400 }
6401
6402 let cur_offset: usize = (3 - 1) * envelope_size;
6405
6406 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6408
6409 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
6414 self.exclude_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6415 encoder, offset + cur_offset, depth
6416 )?;
6417
6418 _prev_end_offset = cur_offset + envelope_size;
6419
6420 Ok(())
6421 }
6422 }
6423
6424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
6425 #[inline(always)]
6426 fn new_empty() -> Self {
6427 Self::default()
6428 }
6429
6430 unsafe fn decode(
6431 &mut self,
6432 decoder: &mut fidl::encoding::Decoder<'_, D>,
6433 offset: usize,
6434 mut depth: fidl::encoding::Depth,
6435 ) -> fidl::Result<()> {
6436 decoder.debug_check_bounds::<Self>(offset);
6437 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6438 None => return Err(fidl::Error::NotNullable),
6439 Some(len) => len,
6440 };
6441 if len == 0 {
6443 return Ok(());
6444 };
6445 depth.increment()?;
6446 let envelope_size = 8;
6447 let bytes_len = len * envelope_size;
6448 let offset = decoder.out_of_line_offset(bytes_len)?;
6449 let mut _next_ordinal_to_read = 0;
6451 let mut next_offset = offset;
6452 let end_offset = offset + bytes_len;
6453 _next_ordinal_to_read += 1;
6454 if next_offset >= end_offset {
6455 return Ok(());
6456 }
6457
6458 while _next_ordinal_to_read < 1 {
6460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6461 _next_ordinal_to_read += 1;
6462 next_offset += envelope_size;
6463 }
6464
6465 let next_out_of_line = decoder.next_out_of_line();
6466 let handles_before = decoder.remaining_handles();
6467 if let Some((inlined, num_bytes, num_handles)) =
6468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6469 {
6470 let member_inline_size =
6471 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
6472 decoder.context,
6473 );
6474 if inlined != (member_inline_size <= 4) {
6475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6476 }
6477 let inner_offset;
6478 let mut inner_depth = depth.clone();
6479 if inlined {
6480 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6481 inner_offset = next_offset;
6482 } else {
6483 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6484 inner_depth.increment()?;
6485 }
6486 let val_ref = self
6487 .offers
6488 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, D));
6489 fidl::decode!(fidl::encoding::Vector<Offer, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
6490 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6491 {
6492 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6493 }
6494 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6495 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6496 }
6497 }
6498
6499 next_offset += envelope_size;
6500 _next_ordinal_to_read += 1;
6501 if next_offset >= end_offset {
6502 return Ok(());
6503 }
6504
6505 while _next_ordinal_to_read < 2 {
6507 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6508 _next_ordinal_to_read += 1;
6509 next_offset += envelope_size;
6510 }
6511
6512 let next_out_of_line = decoder.next_out_of_line();
6513 let handles_before = decoder.remaining_handles();
6514 if let Some((inlined, num_bytes, num_handles)) =
6515 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6516 {
6517 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6518 if inlined != (member_inline_size <= 4) {
6519 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6520 }
6521 let inner_offset;
6522 let mut inner_depth = depth.clone();
6523 if inlined {
6524 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6525 inner_offset = next_offset;
6526 } else {
6527 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6528 inner_depth.increment()?;
6529 }
6530 let val_ref = self.include_properties.get_or_insert_with(
6531 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
6532 );
6533 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6534 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6535 {
6536 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6537 }
6538 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6539 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6540 }
6541 }
6542
6543 next_offset += envelope_size;
6544 _next_ordinal_to_read += 1;
6545 if next_offset >= end_offset {
6546 return Ok(());
6547 }
6548
6549 while _next_ordinal_to_read < 3 {
6551 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6552 _next_ordinal_to_read += 1;
6553 next_offset += envelope_size;
6554 }
6555
6556 let next_out_of_line = decoder.next_out_of_line();
6557 let handles_before = decoder.remaining_handles();
6558 if let Some((inlined, num_bytes, num_handles)) =
6559 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6560 {
6561 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6562 if inlined != (member_inline_size <= 4) {
6563 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6564 }
6565 let inner_offset;
6566 let mut inner_depth = depth.clone();
6567 if inlined {
6568 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6569 inner_offset = next_offset;
6570 } else {
6571 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6572 inner_depth.increment()?;
6573 }
6574 let val_ref = self.exclude_properties.get_or_insert_with(
6575 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
6576 );
6577 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6578 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6579 {
6580 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6581 }
6582 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6583 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6584 }
6585 }
6586
6587 next_offset += envelope_size;
6588
6589 while next_offset < end_offset {
6591 _next_ordinal_to_read += 1;
6592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6593 next_offset += envelope_size;
6594 }
6595
6596 Ok(())
6597 }
6598 }
6599
6600 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
6601 type Borrowed<'a> = &'a Self;
6602 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6603 value
6604 }
6605 }
6606
6607 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
6608 type Owned = Self;
6609
6610 #[inline(always)]
6611 fn inline_align(_context: fidl::encoding::Context) -> usize {
6612 8
6613 }
6614
6615 #[inline(always)]
6616 fn inline_size(_context: fidl::encoding::Context) -> usize {
6617 16
6618 }
6619 }
6620
6621 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
6622 for &DeviceAddress
6623 {
6624 #[inline]
6625 unsafe fn encode(
6626 self,
6627 encoder: &mut fidl::encoding::Encoder<'_, D>,
6628 offset: usize,
6629 _depth: fidl::encoding::Depth,
6630 ) -> fidl::Result<()> {
6631 encoder.debug_check_bounds::<DeviceAddress>(offset);
6632 encoder.write_num::<u64>(self.ordinal(), offset);
6633 match self {
6634 DeviceAddress::IntValue(ref val) => {
6635 fidl::encoding::encode_in_envelope::<u8, D>(
6636 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
6637 encoder, offset + 8, _depth
6638 )
6639 }
6640 DeviceAddress::ArrayIntValue(ref val) => {
6641 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
6642 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
6643 encoder, offset + 8, _depth
6644 )
6645 }
6646 DeviceAddress::CharIntValue(ref val) => {
6647 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
6648 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
6649 encoder, offset + 8, _depth
6650 )
6651 }
6652 DeviceAddress::ArrayCharIntValue(ref val) => {
6653 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
6654 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
6655 encoder, offset + 8, _depth
6656 )
6657 }
6658 DeviceAddress::StringValue(ref val) => {
6659 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
6660 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
6661 encoder, offset + 8, _depth
6662 )
6663 }
6664 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6665 }
6666 }
6667 }
6668
6669 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
6670 #[inline(always)]
6671 fn new_empty() -> Self {
6672 Self::__SourceBreaking { unknown_ordinal: 0 }
6673 }
6674
6675 #[inline]
6676 unsafe fn decode(
6677 &mut self,
6678 decoder: &mut fidl::encoding::Decoder<'_, D>,
6679 offset: usize,
6680 mut depth: fidl::encoding::Depth,
6681 ) -> fidl::Result<()> {
6682 decoder.debug_check_bounds::<Self>(offset);
6683 #[allow(unused_variables)]
6684 let next_out_of_line = decoder.next_out_of_line();
6685 let handles_before = decoder.remaining_handles();
6686 let (ordinal, inlined, num_bytes, num_handles) =
6687 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6688
6689 let member_inline_size = match ordinal {
6690 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6691 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6692 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6693 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6694 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6695 0 => return Err(fidl::Error::UnknownUnionTag),
6696 _ => num_bytes as usize,
6697 };
6698
6699 if inlined != (member_inline_size <= 4) {
6700 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6701 }
6702 let _inner_offset;
6703 if inlined {
6704 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6705 _inner_offset = offset + 8;
6706 } else {
6707 depth.increment()?;
6708 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6709 }
6710 match ordinal {
6711 1 => {
6712 #[allow(irrefutable_let_patterns)]
6713 if let DeviceAddress::IntValue(_) = self {
6714 } else {
6716 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
6718 }
6719 #[allow(irrefutable_let_patterns)]
6720 if let DeviceAddress::IntValue(ref mut val) = self {
6721 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
6722 } else {
6723 unreachable!()
6724 }
6725 }
6726 2 => {
6727 #[allow(irrefutable_let_patterns)]
6728 if let DeviceAddress::ArrayIntValue(_) = self {
6729 } else {
6731 *self = DeviceAddress::ArrayIntValue(
6733 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
6734 );
6735 }
6736 #[allow(irrefutable_let_patterns)]
6737 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
6738 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
6739 } else {
6740 unreachable!()
6741 }
6742 }
6743 3 => {
6744 #[allow(irrefutable_let_patterns)]
6745 if let DeviceAddress::CharIntValue(_) = self {
6746 } else {
6748 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
6750 fidl::encoding::BoundedString<4>,
6751 D
6752 ));
6753 }
6754 #[allow(irrefutable_let_patterns)]
6755 if let DeviceAddress::CharIntValue(ref mut val) = self {
6756 fidl::decode!(
6757 fidl::encoding::BoundedString<4>,
6758 D,
6759 val,
6760 decoder,
6761 _inner_offset,
6762 depth
6763 )?;
6764 } else {
6765 unreachable!()
6766 }
6767 }
6768 4 => {
6769 #[allow(irrefutable_let_patterns)]
6770 if let DeviceAddress::ArrayCharIntValue(_) = self {
6771 } else {
6773 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
6775 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
6776 D
6777 ));
6778 }
6779 #[allow(irrefutable_let_patterns)]
6780 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
6781 fidl::decode!(
6782 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
6783 D,
6784 val,
6785 decoder,
6786 _inner_offset,
6787 depth
6788 )?;
6789 } else {
6790 unreachable!()
6791 }
6792 }
6793 5 => {
6794 #[allow(irrefutable_let_patterns)]
6795 if let DeviceAddress::StringValue(_) = self {
6796 } else {
6798 *self = DeviceAddress::StringValue(fidl::new_empty!(
6800 fidl::encoding::BoundedString<32>,
6801 D
6802 ));
6803 }
6804 #[allow(irrefutable_let_patterns)]
6805 if let DeviceAddress::StringValue(ref mut val) = self {
6806 fidl::decode!(
6807 fidl::encoding::BoundedString<32>,
6808 D,
6809 val,
6810 decoder,
6811 _inner_offset,
6812 depth
6813 )?;
6814 } else {
6815 unreachable!()
6816 }
6817 }
6818 #[allow(deprecated)]
6819 ordinal => {
6820 for _ in 0..num_handles {
6821 decoder.drop_next_handle()?;
6822 }
6823 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
6824 }
6825 }
6826 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6828 }
6829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6831 }
6832 Ok(())
6833 }
6834 }
6835
6836 impl fidl::encoding::ValueTypeMarker for NodePropertyKey {
6837 type Borrowed<'a> = &'a Self;
6838 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6839 value
6840 }
6841 }
6842
6843 unsafe impl fidl::encoding::TypeMarker for NodePropertyKey {
6844 type Owned = Self;
6845
6846 #[inline(always)]
6847 fn inline_align(_context: fidl::encoding::Context) -> usize {
6848 8
6849 }
6850
6851 #[inline(always)]
6852 fn inline_size(_context: fidl::encoding::Context) -> usize {
6853 16
6854 }
6855 }
6856
6857 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyKey, D>
6858 for &NodePropertyKey
6859 {
6860 #[inline]
6861 unsafe fn encode(
6862 self,
6863 encoder: &mut fidl::encoding::Encoder<'_, D>,
6864 offset: usize,
6865 _depth: fidl::encoding::Depth,
6866 ) -> fidl::Result<()> {
6867 encoder.debug_check_bounds::<NodePropertyKey>(offset);
6868 encoder.write_num::<u64>(self.ordinal(), offset);
6869 match self {
6870 NodePropertyKey::IntValue(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
6871 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6872 encoder,
6873 offset + 8,
6874 _depth,
6875 ),
6876 NodePropertyKey::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
6877 fidl::encoding::BoundedString<256>,
6878 D,
6879 >(
6880 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
6881 val,
6882 ),
6883 encoder,
6884 offset + 8,
6885 _depth,
6886 ),
6887 }
6888 }
6889 }
6890
6891 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyKey {
6892 #[inline(always)]
6893 fn new_empty() -> Self {
6894 Self::IntValue(fidl::new_empty!(u32, D))
6895 }
6896
6897 #[inline]
6898 unsafe fn decode(
6899 &mut self,
6900 decoder: &mut fidl::encoding::Decoder<'_, D>,
6901 offset: usize,
6902 mut depth: fidl::encoding::Depth,
6903 ) -> fidl::Result<()> {
6904 decoder.debug_check_bounds::<Self>(offset);
6905 #[allow(unused_variables)]
6906 let next_out_of_line = decoder.next_out_of_line();
6907 let handles_before = decoder.remaining_handles();
6908 let (ordinal, inlined, num_bytes, num_handles) =
6909 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6910
6911 let member_inline_size = match ordinal {
6912 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6913 2 => {
6914 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
6915 decoder.context,
6916 )
6917 }
6918 _ => return Err(fidl::Error::UnknownUnionTag),
6919 };
6920
6921 if inlined != (member_inline_size <= 4) {
6922 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6923 }
6924 let _inner_offset;
6925 if inlined {
6926 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6927 _inner_offset = offset + 8;
6928 } else {
6929 depth.increment()?;
6930 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6931 }
6932 match ordinal {
6933 1 => {
6934 #[allow(irrefutable_let_patterns)]
6935 if let NodePropertyKey::IntValue(_) = self {
6936 } else {
6938 *self = NodePropertyKey::IntValue(fidl::new_empty!(u32, D));
6940 }
6941 #[allow(irrefutable_let_patterns)]
6942 if let NodePropertyKey::IntValue(ref mut val) = self {
6943 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
6944 } else {
6945 unreachable!()
6946 }
6947 }
6948 2 => {
6949 #[allow(irrefutable_let_patterns)]
6950 if let NodePropertyKey::StringValue(_) = self {
6951 } else {
6953 *self = NodePropertyKey::StringValue(fidl::new_empty!(
6955 fidl::encoding::BoundedString<256>,
6956 D
6957 ));
6958 }
6959 #[allow(irrefutable_let_patterns)]
6960 if let NodePropertyKey::StringValue(ref mut val) = self {
6961 fidl::decode!(
6962 fidl::encoding::BoundedString<256>,
6963 D,
6964 val,
6965 decoder,
6966 _inner_offset,
6967 depth
6968 )?;
6969 } else {
6970 unreachable!()
6971 }
6972 }
6973 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6974 }
6975 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6977 }
6978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6980 }
6981 Ok(())
6982 }
6983 }
6984
6985 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
6986 type Borrowed<'a> = &'a Self;
6987 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6988 value
6989 }
6990 }
6991
6992 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
6993 type Owned = Self;
6994
6995 #[inline(always)]
6996 fn inline_align(_context: fidl::encoding::Context) -> usize {
6997 8
6998 }
6999
7000 #[inline(always)]
7001 fn inline_size(_context: fidl::encoding::Context) -> usize {
7002 16
7003 }
7004 }
7005
7006 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
7007 for &NodePropertyValue
7008 {
7009 #[inline]
7010 unsafe fn encode(
7011 self,
7012 encoder: &mut fidl::encoding::Encoder<'_, D>,
7013 offset: usize,
7014 _depth: fidl::encoding::Depth,
7015 ) -> fidl::Result<()> {
7016 encoder.debug_check_bounds::<NodePropertyValue>(offset);
7017 encoder.write_num::<u64>(self.ordinal(), offset);
7018 match self {
7019 NodePropertyValue::IntValue(ref val) => {
7020 fidl::encoding::encode_in_envelope::<u32, D>(
7021 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7022 encoder,
7023 offset + 8,
7024 _depth,
7025 )
7026 }
7027 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
7028 fidl::encoding::BoundedString<256>,
7029 D,
7030 >(
7031 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
7032 val,
7033 ),
7034 encoder,
7035 offset + 8,
7036 _depth,
7037 ),
7038 NodePropertyValue::BoolValue(ref val) => {
7039 fidl::encoding::encode_in_envelope::<bool, D>(
7040 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
7041 encoder,
7042 offset + 8,
7043 _depth,
7044 )
7045 }
7046 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
7047 fidl::encoding::BoundedString<256>,
7048 D,
7049 >(
7050 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
7051 val,
7052 ),
7053 encoder,
7054 offset + 8,
7055 _depth,
7056 ),
7057 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7058 }
7059 }
7060 }
7061
7062 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
7063 #[inline(always)]
7064 fn new_empty() -> Self {
7065 Self::__SourceBreaking { unknown_ordinal: 0 }
7066 }
7067
7068 #[inline]
7069 unsafe fn decode(
7070 &mut self,
7071 decoder: &mut fidl::encoding::Decoder<'_, D>,
7072 offset: usize,
7073 mut depth: fidl::encoding::Depth,
7074 ) -> fidl::Result<()> {
7075 decoder.debug_check_bounds::<Self>(offset);
7076 #[allow(unused_variables)]
7077 let next_out_of_line = decoder.next_out_of_line();
7078 let handles_before = decoder.remaining_handles();
7079 let (ordinal, inlined, num_bytes, num_handles) =
7080 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7081
7082 let member_inline_size = match ordinal {
7083 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7084 2 => {
7085 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
7086 decoder.context,
7087 )
7088 }
7089 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7090 4 => {
7091 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
7092 decoder.context,
7093 )
7094 }
7095 0 => return Err(fidl::Error::UnknownUnionTag),
7096 _ => num_bytes as usize,
7097 };
7098
7099 if inlined != (member_inline_size <= 4) {
7100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7101 }
7102 let _inner_offset;
7103 if inlined {
7104 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7105 _inner_offset = offset + 8;
7106 } else {
7107 depth.increment()?;
7108 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7109 }
7110 match ordinal {
7111 1 => {
7112 #[allow(irrefutable_let_patterns)]
7113 if let NodePropertyValue::IntValue(_) = self {
7114 } else {
7116 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
7118 }
7119 #[allow(irrefutable_let_patterns)]
7120 if let NodePropertyValue::IntValue(ref mut val) = self {
7121 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
7122 } else {
7123 unreachable!()
7124 }
7125 }
7126 2 => {
7127 #[allow(irrefutable_let_patterns)]
7128 if let NodePropertyValue::StringValue(_) = self {
7129 } else {
7131 *self = NodePropertyValue::StringValue(fidl::new_empty!(
7133 fidl::encoding::BoundedString<256>,
7134 D
7135 ));
7136 }
7137 #[allow(irrefutable_let_patterns)]
7138 if let NodePropertyValue::StringValue(ref mut val) = self {
7139 fidl::decode!(
7140 fidl::encoding::BoundedString<256>,
7141 D,
7142 val,
7143 decoder,
7144 _inner_offset,
7145 depth
7146 )?;
7147 } else {
7148 unreachable!()
7149 }
7150 }
7151 3 => {
7152 #[allow(irrefutable_let_patterns)]
7153 if let NodePropertyValue::BoolValue(_) = self {
7154 } else {
7156 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
7158 }
7159 #[allow(irrefutable_let_patterns)]
7160 if let NodePropertyValue::BoolValue(ref mut val) = self {
7161 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
7162 } else {
7163 unreachable!()
7164 }
7165 }
7166 4 => {
7167 #[allow(irrefutable_let_patterns)]
7168 if let NodePropertyValue::EnumValue(_) = self {
7169 } else {
7171 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
7173 fidl::encoding::BoundedString<256>,
7174 D
7175 ));
7176 }
7177 #[allow(irrefutable_let_patterns)]
7178 if let NodePropertyValue::EnumValue(ref mut val) = self {
7179 fidl::decode!(
7180 fidl::encoding::BoundedString<256>,
7181 D,
7182 val,
7183 decoder,
7184 _inner_offset,
7185 depth
7186 )?;
7187 } else {
7188 unreachable!()
7189 }
7190 }
7191 #[allow(deprecated)]
7192 ordinal => {
7193 for _ in 0..num_handles {
7194 decoder.drop_next_handle()?;
7195 }
7196 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
7197 }
7198 }
7199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7200 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7201 }
7202 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7203 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7204 }
7205 Ok(())
7206 }
7207 }
7208
7209 impl fidl::encoding::ValueTypeMarker for Offer {
7210 type Borrowed<'a> = &'a Self;
7211 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7212 value
7213 }
7214 }
7215
7216 unsafe impl fidl::encoding::TypeMarker for Offer {
7217 type Owned = Self;
7218
7219 #[inline(always)]
7220 fn inline_align(_context: fidl::encoding::Context) -> usize {
7221 8
7222 }
7223
7224 #[inline(always)]
7225 fn inline_size(_context: fidl::encoding::Context) -> usize {
7226 16
7227 }
7228 }
7229
7230 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
7231 #[inline]
7232 unsafe fn encode(
7233 self,
7234 encoder: &mut fidl::encoding::Encoder<'_, D>,
7235 offset: usize,
7236 _depth: fidl::encoding::Depth,
7237 ) -> fidl::Result<()> {
7238 encoder.debug_check_bounds::<Offer>(offset);
7239 encoder.write_num::<u64>(self.ordinal(), offset);
7240 match self {
7241 Offer::ZirconTransport(ref val) => {
7242 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7243 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7244 encoder, offset + 8, _depth
7245 )
7246 }
7247 Offer::DriverTransport(ref val) => {
7248 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7249 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7250 encoder, offset + 8, _depth
7251 )
7252 }
7253 Offer::DictionaryOffer(ref val) => {
7254 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
7255 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
7256 encoder, offset + 8, _depth
7257 )
7258 }
7259 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7260 }
7261 }
7262 }
7263
7264 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
7265 #[inline(always)]
7266 fn new_empty() -> Self {
7267 Self::__SourceBreaking { unknown_ordinal: 0 }
7268 }
7269
7270 #[inline]
7271 unsafe fn decode(
7272 &mut self,
7273 decoder: &mut fidl::encoding::Decoder<'_, D>,
7274 offset: usize,
7275 mut depth: fidl::encoding::Depth,
7276 ) -> fidl::Result<()> {
7277 decoder.debug_check_bounds::<Self>(offset);
7278 #[allow(unused_variables)]
7279 let next_out_of_line = decoder.next_out_of_line();
7280 let handles_before = decoder.remaining_handles();
7281 let (ordinal, inlined, num_bytes, num_handles) =
7282 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7283
7284 let member_inline_size = match ordinal {
7285 1 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7286 2 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7287 3 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7288 0 => return Err(fidl::Error::UnknownUnionTag),
7289 _ => num_bytes as usize,
7290 };
7291
7292 if inlined != (member_inline_size <= 4) {
7293 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7294 }
7295 let _inner_offset;
7296 if inlined {
7297 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7298 _inner_offset = offset + 8;
7299 } else {
7300 depth.increment()?;
7301 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7302 }
7303 match ordinal {
7304 1 => {
7305 #[allow(irrefutable_let_patterns)]
7306 if let Offer::ZirconTransport(_) = self {
7307 } else {
7309 *self = Offer::ZirconTransport(fidl::new_empty!(
7311 fidl_fuchsia_component_decl_common::Offer,
7312 D
7313 ));
7314 }
7315 #[allow(irrefutable_let_patterns)]
7316 if let Offer::ZirconTransport(ref mut val) = self {
7317 fidl::decode!(
7318 fidl_fuchsia_component_decl_common::Offer,
7319 D,
7320 val,
7321 decoder,
7322 _inner_offset,
7323 depth
7324 )?;
7325 } else {
7326 unreachable!()
7327 }
7328 }
7329 2 => {
7330 #[allow(irrefutable_let_patterns)]
7331 if let Offer::DriverTransport(_) = self {
7332 } else {
7334 *self = Offer::DriverTransport(fidl::new_empty!(
7336 fidl_fuchsia_component_decl_common::Offer,
7337 D
7338 ));
7339 }
7340 #[allow(irrefutable_let_patterns)]
7341 if let Offer::DriverTransport(ref mut val) = self {
7342 fidl::decode!(
7343 fidl_fuchsia_component_decl_common::Offer,
7344 D,
7345 val,
7346 decoder,
7347 _inner_offset,
7348 depth
7349 )?;
7350 } else {
7351 unreachable!()
7352 }
7353 }
7354 3 => {
7355 #[allow(irrefutable_let_patterns)]
7356 if let Offer::DictionaryOffer(_) = self {
7357 } else {
7359 *self = Offer::DictionaryOffer(fidl::new_empty!(
7361 fidl_fuchsia_component_decl_common::Offer,
7362 D
7363 ));
7364 }
7365 #[allow(irrefutable_let_patterns)]
7366 if let Offer::DictionaryOffer(ref mut val) = self {
7367 fidl::decode!(
7368 fidl_fuchsia_component_decl_common::Offer,
7369 D,
7370 val,
7371 decoder,
7372 _inner_offset,
7373 depth
7374 )?;
7375 } else {
7376 unreachable!()
7377 }
7378 }
7379 #[allow(deprecated)]
7380 ordinal => {
7381 for _ in 0..num_handles {
7382 decoder.drop_next_handle()?;
7383 }
7384 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
7385 }
7386 }
7387 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7388 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7389 }
7390 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7391 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7392 }
7393 Ok(())
7394 }
7395 }
7396}