1use crate::common::iff::model::{
2 ChangeOptionsRecord, DamageStatus, DapSource, DapValue, EnabledStatus, EnhancedMode1Code,
3 FundamentalOperationalData, Iff, IffDataRecord, IffDataSpecification,
4 IffFundamentalParameterData, IffLayer2, IffLayer3, IffLayer4, IffLayer5, IffPresence,
5 InformationLayers, LatLonAltSource, LayerHeader, LayersPresenceApplicability,
6 MalfunctionStatus, Mode5BasicData, Mode5InterrogatorBasicData, Mode5InterrogatorStatus,
7 Mode5MessageFormats, Mode5TransponderBasicData, Mode5TransponderStatus,
8 Mode5TransponderSupplementalData, ModeSAltitude, ModeSBasicData, ModeSInterrogatorBasicData,
9 ModeSInterrogatorStatus, ModeSLevelsPresent, ModeSTransponderBasicData, ModeSTransponderStatus,
10 OnOffStatus, OperationalStatus, ParameterCapable, SquitterStatus, SystemId, SystemSpecificData,
11 SystemStatus,
12};
13use crate::common::model::{BeamData, EntityId, EventId, SimulationAddress, VectorF32};
14use crate::enumerations::{
15 AircraftIdentificationType, AircraftPresentDomain, AntennaSelection, CapabilityReport,
16 DataCategory, IffApplicableModes, IffSystemMode, IffSystemName, IffSystemType,
17 Level2SquitterStatus, Mode5IffMission, Mode5LevelSelection, Mode5LocationErrors,
18 Mode5MessageFormatsStatus, Mode5PlatformType, Mode5Reply, Mode5SAltitudeResolution,
19 ModeSSquitterRecordSource, ModeSSquitterType, ModeSTransmitState, NavigationSource,
20 VariableRecordType,
21};
22
23pub struct IffBuilder(Iff);
24
25impl Default for IffBuilder {
26 fn default() -> Self {
27 Self::new()
28 }
29}
30
31impl IffBuilder {
32 #[must_use]
33 pub fn new() -> Self {
34 IffBuilder(Iff::default())
35 }
36
37 #[must_use]
38 pub fn new_from_body(body: Iff) -> Self {
39 IffBuilder(body)
40 }
41
42 #[must_use]
43 pub fn build(self) -> Iff {
44 self.0
45 }
46
47 #[must_use]
48 pub fn with_emitting_entity_id(mut self, v: EntityId) -> Self {
49 self.0.emitting_entity_id = v;
50 self
51 }
52
53 #[must_use]
54 pub fn with_event_id(mut self, v: EventId) -> Self {
55 self.0.event_id = v;
56 self
57 }
58
59 #[must_use]
60 pub fn with_relative_antenna_location(mut self, v: VectorF32) -> Self {
61 self.0.relative_antenna_location = v;
62 self
63 }
64
65 #[must_use]
66 pub fn with_system_id(mut self, v: SystemId) -> Self {
67 self.0.system_id = v;
68 self
69 }
70
71 #[must_use]
72 pub fn with_system_designator(mut self, v: u8) -> Self {
73 self.0.system_designator = v;
74 self
75 }
76
77 #[must_use]
78 pub fn with_system_specific_data(mut self, v: u8) -> Self {
79 self.0.system_specific_data = v;
80 self
81 }
82
83 #[must_use]
84 pub fn with_fundamental_operational_data(mut self, v: FundamentalOperationalData) -> Self {
85 self.0.fundamental_operational_data = v;
86 self
87 }
88
89 #[must_use]
90 pub fn with_layer_2(mut self, v: IffLayer2) -> Self {
91 self.0.layer_2 = Some(v);
92 self
93 }
94
95 #[must_use]
96 pub fn with_layer_3(mut self, v: IffLayer3) -> Self {
97 self.0.layer_3 = Some(v);
98 self
99 }
100
101 #[must_use]
102 pub fn with_layer_4(mut self, v: IffLayer4) -> Self {
103 self.0.layer_4 = Some(v);
104 self
105 }
106
107 #[must_use]
108 pub fn with_layer_5(mut self, v: IffLayer5) -> Self {
109 self.0.layer_5 = Some(v);
110 self
111 }
112}
113
114pub struct IffLayer2Builder(IffLayer2);
115
116impl Default for IffLayer2Builder {
117 fn default() -> Self {
118 Self::new()
119 }
120}
121
122impl IffLayer2Builder {
123 #[must_use]
124 pub fn new() -> Self {
125 IffLayer2Builder(IffLayer2::default())
126 }
127
128 #[must_use]
129 pub fn with_header(mut self, v: LayerHeader) -> Self {
130 self.0.layer_header = v;
131 self
132 }
133
134 #[must_use]
135 pub fn with_beam_data(mut self, v: BeamData) -> Self {
136 self.0.beam_data = v;
137 self
138 }
139
140 #[must_use]
141 pub fn with_operational_parameter_1(mut self, v: u8) -> Self {
142 self.0.operational_parameter_1 = v;
143 self
144 }
145
146 #[must_use]
147 pub fn with_operational_parameter_2(mut self, v: u8) -> Self {
148 self.0.operational_parameter_2 = v;
149 self
150 }
151
152 #[must_use]
153 pub fn with_iff_fundamental_parameter(mut self, v: IffFundamentalParameterData) -> Self {
154 self.0.iff_fundamental_parameters.push(v);
155 self
156 }
157
158 #[must_use]
159 pub fn with_iff_fundamental_parameters(mut self, v: Vec<IffFundamentalParameterData>) -> Self {
160 self.0.iff_fundamental_parameters = v;
161 self
162 }
163
164 #[must_use]
165 pub fn build(self) -> IffLayer2 {
166 self.0
167 }
168}
169
170pub struct IffLayer3Builder(IffLayer3);
171
172impl Default for IffLayer3Builder {
173 fn default() -> Self {
174 Self::new()
175 }
176}
177
178impl IffLayer3Builder {
179 #[must_use]
180 pub fn new() -> Self {
181 IffLayer3Builder(IffLayer3::default())
182 }
183
184 #[must_use]
185 pub fn with_header(mut self, v: LayerHeader) -> Self {
186 self.0.layer_header = v;
187 self
188 }
189
190 #[must_use]
191 pub fn with_reporting_simulation(mut self, v: SimulationAddress) -> Self {
192 self.0.reporting_simulation = v;
193 self
194 }
195
196 #[must_use]
197 pub fn with_mode_5_basic_data(mut self, v: Mode5BasicData) -> Self {
198 self.0.mode_5_basic_data = v;
199 self
200 }
201
202 #[must_use]
203 pub fn with_iff_data_specification(mut self, v: IffDataSpecification) -> Self {
204 self.0.data_records = v;
205 self
206 }
207
208 #[must_use]
209 pub fn build(self) -> IffLayer3 {
210 self.0
211 }
212}
213
214pub struct IffLayer4Builder(IffLayer4);
215
216impl Default for IffLayer4Builder {
217 fn default() -> Self {
218 Self::new()
219 }
220}
221
222impl IffLayer4Builder {
223 #[must_use]
224 pub fn new() -> Self {
225 IffLayer4Builder(IffLayer4::default())
226 }
227
228 #[must_use]
229 pub fn with_header(mut self, v: LayerHeader) -> Self {
230 self.0.layer_header = v;
231 self
232 }
233
234 #[must_use]
235 pub fn with_reporting_simulation(mut self, v: SimulationAddress) -> Self {
236 self.0.reporting_simulation = v;
237 self
238 }
239
240 #[must_use]
241 pub fn with_mode_s_basic_data(mut self, v: ModeSBasicData) -> Self {
242 self.0.mode_s_basic_data = v;
243 self
244 }
245
246 #[must_use]
247 pub fn with_iff_data_specification(mut self, v: IffDataSpecification) -> Self {
248 self.0.data_records = v;
249 self
250 }
251
252 #[must_use]
253 pub fn build(self) -> IffLayer4 {
254 self.0
255 }
256}
257
258pub struct IffLayer5Builder(IffLayer5);
259
260impl Default for IffLayer5Builder {
261 fn default() -> Self {
262 Self::new()
263 }
264}
265
266impl IffLayer5Builder {
267 #[must_use]
268 pub fn new() -> Self {
269 IffLayer5Builder(IffLayer5::default())
270 }
271
272 #[must_use]
273 pub fn with_header(mut self, v: LayerHeader) -> Self {
274 self.0.layer_header = v;
275 self
276 }
277
278 #[must_use]
279 pub fn with_reporting_simulation(mut self, v: SimulationAddress) -> Self {
280 self.0.reporting_simulation = v;
281 self
282 }
283
284 #[must_use]
285 pub fn with_applicable_layers(mut self, v: InformationLayers) -> Self {
286 self.0.applicable_layers = v;
287 self
288 }
289
290 #[must_use]
291 pub fn with_data_category(mut self, v: DataCategory) -> Self {
292 self.0.data_category = v;
293 self
294 }
295
296 #[must_use]
297 pub fn with_iff_data_specification(mut self, v: IffDataSpecification) -> Self {
298 self.0.data_records = v;
299 self
300 }
301
302 #[must_use]
303 pub fn build(self) -> IffLayer5 {
304 self.0
305 }
306}
307
308pub struct ChangeOptionsRecordBuilder(ChangeOptionsRecord);
309
310impl Default for ChangeOptionsRecordBuilder {
311 fn default() -> Self {
312 Self::new()
313 }
314}
315
316impl ChangeOptionsRecordBuilder {
317 #[must_use]
318 pub fn new() -> Self {
319 Self(ChangeOptionsRecord::default())
320 }
321
322 #[must_use]
323 pub fn set_change_indicator(mut self) -> Self {
324 self.0.change_indicator = true;
325 self
326 }
327
328 #[must_use]
329 pub fn set_system_specific_field_1(mut self) -> Self {
330 self.0.system_specific_field_1 = true;
331 self
332 }
333
334 #[must_use]
335 pub fn set_system_specific_field_2(mut self) -> Self {
336 self.0.system_specific_field_2 = true;
337 self
338 }
339
340 #[must_use]
341 pub fn set_heartbeat_indicator(mut self) -> Self {
342 self.0.heartbeat_indicator = true;
343 self
344 }
345
346 #[must_use]
347 pub fn set_transponder_interrogator_indicator(mut self) -> Self {
348 self.0.transponder_interrogator_indicator = true;
349 self
350 }
351
352 #[must_use]
353 pub fn set_simulation_mode(mut self) -> Self {
354 self.0.simulation_mode = true;
355 self
356 }
357
358 #[must_use]
359 pub fn set_interactive_capable(mut self) -> Self {
360 self.0.interactive_capable = true;
361 self
362 }
363
364 #[must_use]
365 pub fn set_test_mode(mut self) -> Self {
366 self.0.test_mode = true;
367 self
368 }
369
370 #[must_use]
371 pub fn build(self) -> ChangeOptionsRecord {
372 self.0
373 }
374}
375
376pub struct FundamentalOperationalDataBuilder(FundamentalOperationalData);
377
378impl Default for FundamentalOperationalDataBuilder {
379 fn default() -> Self {
380 Self::new()
381 }
382}
383
384impl FundamentalOperationalDataBuilder {
385 #[must_use]
386 pub fn new() -> Self {
387 Self(FundamentalOperationalData::default())
388 }
389
390 #[must_use]
391 pub fn with_system_status(mut self, v: SystemStatus) -> Self {
392 self.0.system_status = v;
393 self
394 }
395
396 #[must_use]
397 pub fn with_data_field_1(mut self, v: u8) -> Self {
398 self.0.data_field_1 = v;
399 self
400 }
401
402 #[must_use]
403 pub fn with_information_layers(mut self, v: InformationLayers) -> Self {
404 self.0.information_layers = v;
405 self
406 }
407
408 #[must_use]
409 pub fn with_data_field_2(mut self, v: u8) -> Self {
410 self.0.data_field_2 = v;
411 self
412 }
413
414 #[must_use]
415 pub fn with_parameter_1(mut self, v: u16) -> Self {
416 self.0.parameter_1 = v;
417 self
418 }
419
420 #[must_use]
421 pub fn with_parameter_2(mut self, v: u16) -> Self {
422 self.0.parameter_2 = v;
423 self
424 }
425
426 #[must_use]
427 pub fn with_parameter_3(mut self, v: u16) -> Self {
428 self.0.parameter_3 = v;
429 self
430 }
431
432 #[must_use]
433 pub fn with_parameter_4(mut self, v: u16) -> Self {
434 self.0.parameter_4 = v;
435 self
436 }
437
438 #[must_use]
439 pub fn with_parameter_5(mut self, v: u16) -> Self {
440 self.0.parameter_5 = v;
441 self
442 }
443
444 #[must_use]
445 pub fn with_parameter_6(mut self, v: u16) -> Self {
446 self.0.parameter_6 = v;
447 self
448 }
449
450 #[must_use]
451 pub fn build(self) -> FundamentalOperationalData {
452 self.0
453 }
454}
455
456pub struct IffDataRecordBuilder(IffDataRecord);
457
458impl Default for IffDataRecordBuilder {
459 fn default() -> Self {
460 Self::new()
461 }
462}
463
464impl IffDataRecordBuilder {
465 #[must_use]
466 pub fn new() -> Self {
467 Self(IffDataRecord::default())
468 }
469
470 #[must_use]
471 pub fn with_record_type(mut self, v: VariableRecordType) -> Self {
472 self.0.record_type = v;
473 self
474 }
475
476 #[must_use]
477 pub fn with_record_specific_field(mut self, v: Vec<u8>) -> Self {
478 self.0.record_specific_fields = v;
479 self
480 }
481
482 #[must_use]
483 pub fn build(self) -> IffDataRecord {
484 self.0
485 }
486}
487
488pub struct IffDataSpecificationBuilder(IffDataSpecification);
489
490impl Default for IffDataSpecificationBuilder {
491 fn default() -> Self {
492 Self::new()
493 }
494}
495
496impl IffDataSpecificationBuilder {
497 #[must_use]
498 pub fn new() -> Self {
499 Self(IffDataSpecification::default())
500 }
501
502 #[must_use]
503 pub fn with_iff_data_record(mut self, v: IffDataRecord) -> Self {
504 self.0.iff_data_records.push(v);
505 self
506 }
507
508 #[must_use]
509 pub fn with_iff_data_records(mut self, v: Vec<IffDataRecord>) -> Self {
510 self.0.iff_data_records = v;
511 self
512 }
513
514 #[must_use]
515 pub fn build(self) -> IffDataSpecification {
516 self.0
517 }
518}
519
520pub struct InformationLayersBuilder(InformationLayers);
521
522impl Default for InformationLayersBuilder {
523 fn default() -> Self {
524 Self::new()
525 }
526}
527
528impl InformationLayersBuilder {
529 #[must_use]
530 pub fn new() -> Self {
531 Self(InformationLayers::default())
532 }
533
534 #[must_use]
535 pub fn with_layer_1(mut self, v: LayersPresenceApplicability) -> Self {
536 self.0.layer_1 = v;
537 self
538 }
539
540 #[must_use]
541 pub fn with_layer_2(mut self, v: LayersPresenceApplicability) -> Self {
542 self.0.layer_2 = v;
543 self
544 }
545
546 #[must_use]
547 pub fn with_layer_3(mut self, v: LayersPresenceApplicability) -> Self {
548 self.0.layer_3 = v;
549 self
550 }
551
552 #[must_use]
553 pub fn with_layer_4(mut self, v: LayersPresenceApplicability) -> Self {
554 self.0.layer_4 = v;
555 self
556 }
557
558 #[must_use]
559 pub fn with_layer_5(mut self, v: LayersPresenceApplicability) -> Self {
560 self.0.layer_5 = v;
561 self
562 }
563
564 #[must_use]
565 pub fn with_layer_6(mut self, v: LayersPresenceApplicability) -> Self {
566 self.0.layer_6 = v;
567 self
568 }
569
570 #[must_use]
571 pub fn with_layer_7(mut self, v: LayersPresenceApplicability) -> Self {
572 self.0.layer_7 = v;
573 self
574 }
575
576 #[must_use]
577 pub fn build(self) -> InformationLayers {
578 self.0
579 }
580}
581
582pub struct IffFundamentalParameterDataBuilder(IffFundamentalParameterData);
583
584impl Default for IffFundamentalParameterDataBuilder {
585 fn default() -> Self {
586 Self::new()
587 }
588}
589
590impl IffFundamentalParameterDataBuilder {
591 #[must_use]
592 pub fn new() -> Self {
593 Self(IffFundamentalParameterData::default())
594 }
595
596 #[must_use]
597 pub fn with_erp(mut self, v: f32) -> Self {
598 self.0.erp = v;
599 self
600 }
601
602 #[must_use]
603 pub fn with_frequency(mut self, v: f32) -> Self {
604 self.0.frequency = v;
605 self
606 }
607
608 #[must_use]
609 pub fn with_pgrf(mut self, v: f32) -> Self {
610 self.0.pgrf = v;
611 self
612 }
613
614 #[must_use]
615 pub fn with_pulse_width(mut self, v: f32) -> Self {
616 self.0.pulse_width = v;
617 self
618 }
619
620 #[must_use]
621 pub fn with_burst_length(mut self, v: f32) -> Self {
622 self.0.burst_length = v;
623 self
624 }
625
626 #[must_use]
627 pub fn with_applicable_modes(mut self, v: IffApplicableModes) -> Self {
628 self.0.applicable_modes = v;
629 self
630 }
631
632 #[must_use]
633 pub fn with_system_specific_data(mut self, v: SystemSpecificData) -> Self {
634 self.0.system_specific_data = v;
635 self
636 }
637
638 #[must_use]
639 pub fn build(self) -> IffFundamentalParameterData {
640 self.0
641 }
642}
643
644pub struct LayerHeaderBuilder(LayerHeader);
645
646impl Default for LayerHeaderBuilder {
647 fn default() -> Self {
648 Self::new()
649 }
650}
651
652impl LayerHeaderBuilder {
653 #[must_use]
654 pub fn new() -> Self {
655 Self(LayerHeader::default())
656 }
657
658 #[must_use]
659 pub fn with_layer_number(mut self, v: u8) -> Self {
660 self.0.layer_number = v;
661 self
662 }
663
664 #[must_use]
665 pub fn with_layer_specific_information(mut self, v: u8) -> Self {
666 self.0.layer_specific_information = v;
667 self
668 }
669
670 #[must_use]
671 pub fn with_length(mut self, v: u16) -> Self {
672 self.0.length = v;
673 self
674 }
675
676 #[must_use]
677 pub fn build(self) -> LayerHeader {
678 self.0
679 }
680}
681
682pub struct SystemSpecificDataBuilder(SystemSpecificData);
683
684impl Default for SystemSpecificDataBuilder {
685 fn default() -> Self {
686 Self::new()
687 }
688}
689
690impl SystemSpecificDataBuilder {
691 #[must_use]
692 pub fn new() -> Self {
693 Self(SystemSpecificData::default())
694 }
695
696 #[must_use]
697 pub fn with_part_1(mut self, v: u8) -> Self {
698 self.0.part_1 = v;
699 self
700 }
701
702 #[must_use]
703 pub fn with_part_2(mut self, v: u8) -> Self {
704 self.0.part_2 = v;
705 self
706 }
707
708 #[must_use]
709 pub fn with_part_3(mut self, v: u8) -> Self {
710 self.0.part_3 = v;
711 self
712 }
713
714 #[must_use]
715 pub fn build(self) -> SystemSpecificData {
716 self.0
717 }
718}
719
720pub struct SystemIdBuilder(SystemId);
721
722impl Default for SystemIdBuilder {
723 fn default() -> Self {
724 Self::new()
725 }
726}
727
728impl SystemIdBuilder {
729 #[must_use]
730 pub fn new() -> Self {
731 Self(SystemId::default())
732 }
733
734 #[must_use]
735 pub fn with_system_type(mut self, v: IffSystemType) -> Self {
736 self.0.system_type = v;
737 self
738 }
739
740 #[must_use]
741 pub fn with_system_name(mut self, v: IffSystemName) -> Self {
742 self.0.system_name = v;
743 self
744 }
745
746 #[must_use]
747 pub fn with_system_mode(mut self, v: IffSystemMode) -> Self {
748 self.0.system_mode = v;
749 self
750 }
751
752 #[must_use]
753 pub fn with_change_options(mut self, v: ChangeOptionsRecord) -> Self {
754 self.0.change_options = v;
755 self
756 }
757
758 #[must_use]
759 pub fn build(self) -> SystemId {
760 self.0
761 }
762}
763
764pub struct DapSourceBuilder(DapSource);
765
766impl Default for DapSourceBuilder {
767 fn default() -> Self {
768 Self::new()
769 }
770}
771
772impl DapSourceBuilder {
773 #[must_use]
774 pub fn new() -> Self {
775 Self(DapSource::default())
776 }
777
778 #[must_use]
779 pub fn with_indicated_air_speed(mut self, v: DapValue) -> Self {
780 self.0.indicated_air_speed = v;
781 self
782 }
783
784 #[must_use]
785 pub fn with_mach_number(mut self, v: DapValue) -> Self {
786 self.0.mach_number = v;
787 self
788 }
789
790 #[must_use]
791 pub fn with_ground_speed(mut self, v: DapValue) -> Self {
792 self.0.ground_speed = v;
793 self
794 }
795
796 #[must_use]
797 pub fn with_magnetic_heading(mut self, v: DapValue) -> Self {
798 self.0.magnetic_heading = v;
799 self
800 }
801
802 #[must_use]
803 pub fn with_track_angle_rate(mut self, v: DapValue) -> Self {
804 self.0.track_angle_rate = v;
805 self
806 }
807
808 #[must_use]
809 pub fn with_true_track_angle(mut self, v: DapValue) -> Self {
810 self.0.true_track_angle = v;
811 self
812 }
813
814 #[must_use]
815 pub fn with_true_airspeed(mut self, v: DapValue) -> Self {
816 self.0.true_airspeed = v;
817 self
818 }
819
820 #[must_use]
821 pub fn with_vertical_rate(mut self, v: DapValue) -> Self {
822 self.0.vertical_rate = v;
823 self
824 }
825
826 #[must_use]
827 pub fn build(self) -> DapSource {
828 self.0
829 }
830}
831
832pub struct EnhancedMode1CodeBuilder(EnhancedMode1Code);
833
834impl Default for EnhancedMode1CodeBuilder {
835 fn default() -> Self {
836 Self::new()
837 }
838}
839
840impl EnhancedMode1CodeBuilder {
841 #[must_use]
842 pub fn new() -> Self {
843 Self(EnhancedMode1Code::default())
844 }
845
846 #[must_use]
847 pub fn with_code_element_1_d(mut self, v: u16) -> Self {
848 self.0.code_element_1_d = v;
849 self
850 }
851
852 #[must_use]
853 pub fn with_code_element_2_c(mut self, v: u16) -> Self {
854 self.0.code_element_2_c = v;
855 self
856 }
857
858 #[must_use]
859 pub fn with_code_element_3_b(mut self, v: u16) -> Self {
860 self.0.code_element_3_b = v;
861 self
862 }
863
864 #[must_use]
865 pub fn with_code_element_4_a(mut self, v: u16) -> Self {
866 self.0.code_element_4_a = v;
867 self
868 }
869
870 #[must_use]
871 pub fn with_on_off_status(mut self, v: OnOffStatus) -> Self {
872 self.0.on_off_status = v;
873 self
874 }
875
876 #[must_use]
877 pub fn with_damage_status(mut self, v: DamageStatus) -> Self {
878 self.0.damage_status = v;
879 self
880 }
881
882 #[must_use]
883 pub fn with_malfunction_status(mut self, v: MalfunctionStatus) -> Self {
884 self.0.malfunction_status = v;
885 self
886 }
887
888 #[must_use]
889 pub fn build(self) -> EnhancedMode1Code {
890 self.0
891 }
892}
893
894pub struct Mode5InterrogatorBasicDataBuilder(Mode5InterrogatorBasicData);
895
896impl Default for Mode5InterrogatorBasicDataBuilder {
897 fn default() -> Self {
898 Self::new()
899 }
900}
901
902impl Mode5InterrogatorBasicDataBuilder {
903 #[must_use]
904 pub fn new() -> Self {
905 Self(Mode5InterrogatorBasicData::default())
906 }
907
908 #[must_use]
909 pub fn with_status(mut self, v: Mode5InterrogatorStatus) -> Self {
910 self.0.status = v;
911 self
912 }
913
914 #[must_use]
915 pub fn with_mode_5_message_formats_present(mut self, v: Mode5MessageFormats) -> Self {
916 self.0.mode_5_message_formats_present = v;
917 self
918 }
919
920 #[must_use]
921 pub fn with_interrogated_entity_id(mut self, v: EntityId) -> Self {
922 self.0.interrogated_entity_id = v;
923 self
924 }
925
926 #[must_use]
927 pub fn build(self) -> Mode5InterrogatorBasicData {
928 self.0
929 }
930}
931
932pub struct Mode5InterrogatorStatusBuilder(Mode5InterrogatorStatus);
933
934impl Default for Mode5InterrogatorStatusBuilder {
935 fn default() -> Self {
936 Self::new()
937 }
938}
939
940impl Mode5InterrogatorStatusBuilder {
941 #[must_use]
942 pub fn new() -> Self {
943 Self(Mode5InterrogatorStatus::default())
944 }
945
946 #[must_use]
947 pub fn with_iff_mission(mut self, v: Mode5IffMission) -> Self {
948 self.0.iff_mission = v;
949 self
950 }
951
952 #[must_use]
953 pub fn with_mode_5_message_formats_status(mut self, v: Mode5MessageFormatsStatus) -> Self {
954 self.0.mode_5_message_formats_status = v;
955 self
956 }
957
958 #[must_use]
959 pub fn with_on_off_status(mut self, v: OnOffStatus) -> Self {
960 self.0.on_off_status = v;
961 self
962 }
963
964 #[must_use]
965 pub fn with_damage_status(mut self, v: DamageStatus) -> Self {
966 self.0.damage_status = v;
967 self
968 }
969
970 #[must_use]
971 pub fn with_malfunction_status(mut self, v: MalfunctionStatus) -> Self {
972 self.0.malfunction_status = v;
973 self
974 }
975
976 #[must_use]
977 pub fn build(self) -> Mode5InterrogatorStatus {
978 self.0
979 }
980}
981
982pub struct Mode5MessageFormatsBuilder(Mode5MessageFormats);
983
984impl Default for Mode5MessageFormatsBuilder {
985 fn default() -> Self {
986 Self::new()
987 }
988}
989
990impl Mode5MessageFormatsBuilder {
991 #[must_use]
992 pub fn new() -> Self {
993 Self(Mode5MessageFormats::default())
994 }
995
996 #[must_use]
997 pub fn with_message_format_0(mut self, v: IffPresence) -> Self {
998 self.0.message_format_0 = v;
999 self
1000 }
1001
1002 #[must_use]
1003 pub fn with_message_format_1(mut self, v: IffPresence) -> Self {
1004 self.0.message_format_1 = v;
1005 self
1006 }
1007
1008 #[must_use]
1009 pub fn with_message_format_2(mut self, v: IffPresence) -> Self {
1010 self.0.message_format_2 = v;
1011 self
1012 }
1013
1014 #[must_use]
1015 pub fn with_message_format_3(mut self, v: IffPresence) -> Self {
1016 self.0.message_format_3 = v;
1017 self
1018 }
1019
1020 #[must_use]
1021 pub fn with_message_format_4(mut self, v: IffPresence) -> Self {
1022 self.0.message_format_4 = v;
1023 self
1024 }
1025
1026 #[must_use]
1027 pub fn with_message_format_5(mut self, v: IffPresence) -> Self {
1028 self.0.message_format_5 = v;
1029 self
1030 }
1031
1032 #[must_use]
1033 pub fn with_message_format_6(mut self, v: IffPresence) -> Self {
1034 self.0.message_format_6 = v;
1035 self
1036 }
1037
1038 #[must_use]
1039 pub fn with_message_format_7(mut self, v: IffPresence) -> Self {
1040 self.0.message_format_7 = v;
1041 self
1042 }
1043
1044 #[must_use]
1045 pub fn with_message_format_8(mut self, v: IffPresence) -> Self {
1046 self.0.message_format_8 = v;
1047 self
1048 }
1049
1050 #[must_use]
1051 pub fn with_message_format_9(mut self, v: IffPresence) -> Self {
1052 self.0.message_format_9 = v;
1053 self
1054 }
1055
1056 #[must_use]
1057 pub fn with_message_format_10(mut self, v: IffPresence) -> Self {
1058 self.0.message_format_10 = v;
1059 self
1060 }
1061
1062 #[must_use]
1063 pub fn with_message_format_11(mut self, v: IffPresence) -> Self {
1064 self.0.message_format_11 = v;
1065 self
1066 }
1067
1068 #[must_use]
1069 pub fn with_message_format_12(mut self, v: IffPresence) -> Self {
1070 self.0.message_format_12 = v;
1071 self
1072 }
1073
1074 #[must_use]
1075 pub fn with_message_format_13(mut self, v: IffPresence) -> Self {
1076 self.0.message_format_13 = v;
1077 self
1078 }
1079
1080 #[must_use]
1081 pub fn with_message_format_14(mut self, v: IffPresence) -> Self {
1082 self.0.message_format_14 = v;
1083 self
1084 }
1085
1086 #[must_use]
1087 pub fn with_message_format_15(mut self, v: IffPresence) -> Self {
1088 self.0.message_format_15 = v;
1089 self
1090 }
1091
1092 #[must_use]
1093 pub fn with_message_format_16(mut self, v: IffPresence) -> Self {
1094 self.0.message_format_16 = v;
1095 self
1096 }
1097
1098 #[must_use]
1099 pub fn with_message_format_17(mut self, v: IffPresence) -> Self {
1100 self.0.message_format_17 = v;
1101 self
1102 }
1103
1104 #[must_use]
1105 pub fn with_message_format_18(mut self, v: IffPresence) -> Self {
1106 self.0.message_format_18 = v;
1107 self
1108 }
1109
1110 #[must_use]
1111 pub fn with_message_format_19(mut self, v: IffPresence) -> Self {
1112 self.0.message_format_19 = v;
1113 self
1114 }
1115
1116 #[must_use]
1117 pub fn with_message_format_20(mut self, v: IffPresence) -> Self {
1118 self.0.message_format_20 = v;
1119 self
1120 }
1121
1122 #[must_use]
1123 pub fn with_message_format_21(mut self, v: IffPresence) -> Self {
1124 self.0.message_format_21 = v;
1125 self
1126 }
1127
1128 #[must_use]
1129 pub fn with_message_format_22(mut self, v: IffPresence) -> Self {
1130 self.0.message_format_22 = v;
1131 self
1132 }
1133
1134 #[must_use]
1135 pub fn with_message_format_23(mut self, v: IffPresence) -> Self {
1136 self.0.message_format_23 = v;
1137 self
1138 }
1139
1140 #[must_use]
1141 pub fn with_message_format_24(mut self, v: IffPresence) -> Self {
1142 self.0.message_format_24 = v;
1143 self
1144 }
1145
1146 #[must_use]
1147 pub fn with_message_format_25(mut self, v: IffPresence) -> Self {
1148 self.0.message_format_25 = v;
1149 self
1150 }
1151
1152 #[must_use]
1153 pub fn with_message_format_26(mut self, v: IffPresence) -> Self {
1154 self.0.message_format_26 = v;
1155 self
1156 }
1157
1158 #[must_use]
1159 pub fn with_message_format_27(mut self, v: IffPresence) -> Self {
1160 self.0.message_format_27 = v;
1161 self
1162 }
1163
1164 #[must_use]
1165 pub fn with_message_format_28(mut self, v: IffPresence) -> Self {
1166 self.0.message_format_28 = v;
1167 self
1168 }
1169
1170 #[must_use]
1171 pub fn with_message_format_29(mut self, v: IffPresence) -> Self {
1172 self.0.message_format_29 = v;
1173 self
1174 }
1175
1176 #[must_use]
1177 pub fn with_message_format_30(mut self, v: IffPresence) -> Self {
1178 self.0.message_format_30 = v;
1179 self
1180 }
1181
1182 #[must_use]
1183 pub fn with_message_format_31(mut self, v: IffPresence) -> Self {
1184 self.0.message_format_31 = v;
1185 self
1186 }
1187
1188 #[must_use]
1189 pub fn build(self) -> Mode5MessageFormats {
1190 self.0
1191 }
1192}
1193
1194pub struct Mode5TransponderBasicDataBuilder(Mode5TransponderBasicData);
1195
1196impl Default for Mode5TransponderBasicDataBuilder {
1197 fn default() -> Self {
1198 Self::new()
1199 }
1200}
1201
1202impl Mode5TransponderBasicDataBuilder {
1203 #[must_use]
1204 pub fn new() -> Self {
1205 Self(Mode5TransponderBasicData::default())
1206 }
1207
1208 #[must_use]
1209 pub fn with_status(mut self, v: Mode5TransponderStatus) -> Self {
1210 self.0.status = v;
1211 self
1212 }
1213
1214 #[must_use]
1215 pub fn with_pin(mut self, v: u16) -> Self {
1216 self.0.pin = v;
1217 self
1218 }
1219
1220 #[must_use]
1221 pub fn with_mode_5_message_formats_present(mut self, v: Mode5MessageFormats) -> Self {
1222 self.0.mode_5_message_formats_present = v;
1223 self
1224 }
1225
1226 #[must_use]
1227 pub fn with_enhanced_mode_1(mut self, v: EnhancedMode1Code) -> Self {
1228 self.0.enhanced_mode_1 = v;
1229 self
1230 }
1231
1232 #[must_use]
1233 pub fn with_national_origin(mut self, v: u16) -> Self {
1234 self.0.national_origin = v;
1235 self
1236 }
1237
1238 #[must_use]
1239 pub fn with_supplemental_data(mut self, v: Mode5TransponderSupplementalData) -> Self {
1240 self.0.supplemental_data = v;
1241 self
1242 }
1243
1244 #[must_use]
1245 pub fn with_navigation_source(mut self, v: NavigationSource) -> Self {
1246 self.0.navigation_source = v;
1247 self
1248 }
1249
1250 #[must_use]
1251 pub fn with_figure_of_merit(mut self, v: u8) -> Self {
1252 self.0.figure_of_merit = v;
1253 self
1254 }
1255
1256 #[must_use]
1257 pub fn build(self) -> Mode5TransponderBasicData {
1258 self.0
1259 }
1260}
1261
1262pub struct Mode5TransponderSupplementalDataBuilder(Mode5TransponderSupplementalData);
1263
1264impl Default for Mode5TransponderSupplementalDataBuilder {
1265 fn default() -> Self {
1266 Self::new()
1267 }
1268}
1269
1270impl Mode5TransponderSupplementalDataBuilder {
1271 #[must_use]
1272 pub fn new() -> Self {
1273 Self(Mode5TransponderSupplementalData::default())
1274 }
1275
1276 #[must_use]
1277 pub fn with_squitter_on_off_status(mut self, v: SquitterStatus) -> Self {
1278 self.0.squitter_on_off_status = v;
1279 self
1280 }
1281
1282 #[must_use]
1283 pub fn with_level_2_squitter_status(mut self, v: Level2SquitterStatus) -> Self {
1284 self.0.level_2_squitter_status = v;
1285 self
1286 }
1287
1288 #[must_use]
1289 pub fn with_iff_mission(mut self, v: Mode5IffMission) -> Self {
1290 self.0.iff_mission = v;
1291 self
1292 }
1293
1294 #[must_use]
1295 pub fn build(self) -> Mode5TransponderSupplementalData {
1296 self.0
1297 }
1298}
1299
1300pub struct Mode5TransponderStatusBuilder(Mode5TransponderStatus);
1301
1302impl Default for Mode5TransponderStatusBuilder {
1303 fn default() -> Self {
1304 Self::new()
1305 }
1306}
1307
1308impl Mode5TransponderStatusBuilder {
1309 #[must_use]
1310 pub fn new() -> Self {
1311 Self(Mode5TransponderStatus::default())
1312 }
1313
1314 #[must_use]
1315 pub fn with_mode_5_reply(mut self, v: Mode5Reply) -> Self {
1316 self.0.mode_5_reply = v;
1317 self
1318 }
1319
1320 #[must_use]
1321 pub fn with_line_test(mut self, v: EnabledStatus) -> Self {
1322 self.0.line_test = v;
1323 self
1324 }
1325
1326 #[must_use]
1327 pub fn with_antenna_selection(mut self, v: AntennaSelection) -> Self {
1328 self.0.antenna_selection = v;
1329 self
1330 }
1331
1332 #[must_use]
1333 pub fn with_crypto_control(mut self, v: IffPresence) -> Self {
1334 self.0.crypto_control = v;
1335 self
1336 }
1337
1338 #[must_use]
1339 pub fn with_lat_lon_alt_source(mut self, v: LatLonAltSource) -> Self {
1340 self.0.lat_lon_alt_source = v;
1341 self
1342 }
1343
1344 #[must_use]
1345 pub fn with_location_errors(mut self, v: Mode5LocationErrors) -> Self {
1346 self.0.location_errors = v;
1347 self
1348 }
1349
1350 #[must_use]
1351 pub fn with_platform_type(mut self, v: Mode5PlatformType) -> Self {
1352 self.0.platform_type = v;
1353 self
1354 }
1355
1356 #[must_use]
1357 pub fn with_mode_5_level_selection(mut self, v: Mode5LevelSelection) -> Self {
1358 self.0.mode_5_level_selection = v;
1359 self
1360 }
1361
1362 #[must_use]
1363 pub fn with_on_off_status(mut self, v: OnOffStatus) -> Self {
1364 self.0.on_off_status = v;
1365 self
1366 }
1367
1368 #[must_use]
1369 pub fn with_damage_status(mut self, v: DamageStatus) -> Self {
1370 self.0.damage_status = v;
1371 self
1372 }
1373
1374 #[must_use]
1375 pub fn with_malfunction_status(mut self, v: MalfunctionStatus) -> Self {
1376 self.0.malfunction_status = v;
1377 self
1378 }
1379
1380 #[must_use]
1381 pub fn build(self) -> Mode5TransponderStatus {
1382 self.0
1383 }
1384}
1385
1386pub struct ModeSAltitudeBuilder(ModeSAltitude);
1387
1388impl Default for ModeSAltitudeBuilder {
1389 fn default() -> Self {
1390 Self::new()
1391 }
1392}
1393
1394impl ModeSAltitudeBuilder {
1395 #[must_use]
1396 pub fn new() -> Self {
1397 Self(ModeSAltitude::default())
1398 }
1399
1400 #[must_use]
1401 pub fn with_altitude(mut self, v: u16) -> Self {
1402 self.0.altitude = v;
1403 self
1404 }
1405
1406 #[must_use]
1407 pub fn with_resolution(mut self, v: Mode5SAltitudeResolution) -> Self {
1408 self.0.resolution = v;
1409 self
1410 }
1411
1412 #[must_use]
1413 pub fn build(self) -> ModeSAltitude {
1414 self.0
1415 }
1416}
1417
1418pub struct ModeSInterrogatorBasicDataBuilder(ModeSInterrogatorBasicData);
1419
1420impl Default for ModeSInterrogatorBasicDataBuilder {
1421 fn default() -> Self {
1422 Self::new()
1423 }
1424}
1425
1426impl ModeSInterrogatorBasicDataBuilder {
1427 #[must_use]
1428 pub fn new() -> Self {
1429 Self(ModeSInterrogatorBasicData::default())
1430 }
1431
1432 #[must_use]
1433 pub fn with_mode_s_interrogator_status(mut self, v: ModeSInterrogatorStatus) -> Self {
1434 self.0.mode_s_interrogator_status = v;
1435 self
1436 }
1437
1438 #[must_use]
1439 pub fn with_mode_s_levels_present(mut self, v: ModeSLevelsPresent) -> Self {
1440 self.0.mode_s_levels_present = v;
1441 self
1442 }
1443
1444 #[must_use]
1445 pub fn build(self) -> ModeSInterrogatorBasicData {
1446 self.0
1447 }
1448}
1449
1450pub struct ModeSInterrogatorStatusBuilder(ModeSInterrogatorStatus);
1451
1452impl Default for ModeSInterrogatorStatusBuilder {
1453 fn default() -> Self {
1454 Self::new()
1455 }
1456}
1457
1458impl ModeSInterrogatorStatusBuilder {
1459 #[must_use]
1460 pub fn new() -> Self {
1461 Self(ModeSInterrogatorStatus::default())
1462 }
1463
1464 #[must_use]
1465 pub fn with_on_off_status(mut self, v: OnOffStatus) -> Self {
1466 self.0.on_off_status = v;
1467 self
1468 }
1469
1470 #[must_use]
1471 pub fn with_transmit_state(mut self, v: ModeSTransmitState) -> Self {
1472 self.0.transmit_state = v;
1473 self
1474 }
1475
1476 #[must_use]
1477 pub fn with_damage_status(mut self, v: DamageStatus) -> Self {
1478 self.0.damage_status = v;
1479 self
1480 }
1481
1482 #[must_use]
1483 pub fn with_malfunction_status(mut self, v: MalfunctionStatus) -> Self {
1484 self.0.malfunction_status = v;
1485 self
1486 }
1487
1488 #[must_use]
1489 pub fn build(self) -> ModeSInterrogatorStatus {
1490 self.0
1491 }
1492}
1493
1494pub struct ModeSLevelsPresentBuilder(ModeSLevelsPresent);
1495
1496impl Default for ModeSLevelsPresentBuilder {
1497 fn default() -> Self {
1498 Self::new()
1499 }
1500}
1501
1502impl ModeSLevelsPresentBuilder {
1503 #[must_use]
1504 pub fn new() -> Self {
1505 Self(ModeSLevelsPresent::default())
1506 }
1507
1508 #[must_use]
1509 pub fn with_level_1(mut self, v: IffPresence) -> Self {
1510 self.0.level_1 = v;
1511 self
1512 }
1513
1514 #[must_use]
1515 pub fn with_level_2_els(mut self, v: IffPresence) -> Self {
1516 self.0.level_2_els = v;
1517 self
1518 }
1519
1520 #[must_use]
1521 pub fn with_level_2_ehs(mut self, v: IffPresence) -> Self {
1522 self.0.level_2_ehs = v;
1523 self
1524 }
1525
1526 #[must_use]
1527 pub fn with_level_3(mut self, v: IffPresence) -> Self {
1528 self.0.level_3 = v;
1529 self
1530 }
1531
1532 #[must_use]
1533 pub fn with_level_4(mut self, v: IffPresence) -> Self {
1534 self.0.level_4 = v;
1535 self
1536 }
1537
1538 #[must_use]
1539 pub fn build(self) -> ModeSLevelsPresent {
1540 self.0
1541 }
1542}
1543
1544pub struct ModeSTransponderBasicDataBuilder(ModeSTransponderBasicData);
1545
1546impl Default for ModeSTransponderBasicDataBuilder {
1547 fn default() -> Self {
1548 Self::new()
1549 }
1550}
1551
1552impl ModeSTransponderBasicDataBuilder {
1553 #[must_use]
1554 pub fn new() -> Self {
1555 Self(ModeSTransponderBasicData::default())
1556 }
1557
1558 #[must_use]
1559 pub fn with_status(mut self, v: ModeSTransponderStatus) -> Self {
1560 self.0.status = v;
1561 self
1562 }
1563
1564 #[must_use]
1565 pub fn with_levels_present(mut self, v: ModeSLevelsPresent) -> Self {
1566 self.0.levels_present = v;
1567 self
1568 }
1569
1570 #[must_use]
1571 pub fn with_aircraft_present_domain(mut self, v: AircraftPresentDomain) -> Self {
1572 self.0.aircraft_present_domain = v;
1573 self
1574 }
1575
1576 #[must_use]
1577 pub fn with_aircraft_identification(mut self, v: String) -> Self {
1578 self.0.aircraft_identification = v;
1579 self
1580 }
1581
1582 #[must_use]
1583 pub fn with_aircraft_address(mut self, v: u32) -> Self {
1584 self.0.aircraft_address = v;
1585 self
1586 }
1587
1588 #[must_use]
1589 pub fn with_aircraft_identification_type(mut self, v: AircraftIdentificationType) -> Self {
1590 self.0.aircraft_identification_type = v;
1591 self
1592 }
1593
1594 #[must_use]
1595 pub fn with_dap_source(mut self, v: DapSource) -> Self {
1596 self.0.dap_source = v;
1597 self
1598 }
1599
1600 #[must_use]
1601 pub fn with_altitude(mut self, v: ModeSAltitude) -> Self {
1602 self.0.altitude = v;
1603 self
1604 }
1605
1606 #[must_use]
1607 pub fn with_capability_report(mut self, v: CapabilityReport) -> Self {
1608 self.0.capability_report = v;
1609 self
1610 }
1611
1612 #[must_use]
1613 pub fn build(self) -> ModeSTransponderBasicData {
1614 self.0
1615 }
1616}
1617
1618pub struct ModeSTransponderStatusBuilder(ModeSTransponderStatus);
1619
1620impl Default for ModeSTransponderStatusBuilder {
1621 fn default() -> Self {
1622 Self::new()
1623 }
1624}
1625
1626impl ModeSTransponderStatusBuilder {
1627 #[must_use]
1628 pub fn new() -> Self {
1629 Self(ModeSTransponderStatus::default())
1630 }
1631
1632 #[must_use]
1633 pub fn with_squitter_status(mut self, v: SquitterStatus) -> Self {
1634 self.0.squitter_status = v;
1635 self
1636 }
1637
1638 #[must_use]
1639 pub fn with_squitter_type(mut self, v: ModeSSquitterType) -> Self {
1640 self.0.squitter_type = v;
1641 self
1642 }
1643
1644 #[must_use]
1645 pub fn with_squitter_record_source(mut self, v: ModeSSquitterRecordSource) -> Self {
1646 self.0.squitter_record_source = v;
1647 self
1648 }
1649
1650 #[must_use]
1651 pub fn with_airborne_position_report_indicator(mut self, v: IffPresence) -> Self {
1652 self.0.airborne_position_report_indicator = v;
1653 self
1654 }
1655
1656 #[must_use]
1657 pub fn with_airborne_velocity_report_indicator(mut self, v: IffPresence) -> Self {
1658 self.0.airborne_velocity_report_indicator = v;
1659 self
1660 }
1661
1662 #[must_use]
1663 pub fn with_surface_position_report_indicator(mut self, v: IffPresence) -> Self {
1664 self.0.surface_position_report_indicator = v;
1665 self
1666 }
1667
1668 #[must_use]
1669 pub fn with_identification_report_indicator(mut self, v: IffPresence) -> Self {
1670 self.0.identification_report_indicator = v;
1671 self
1672 }
1673
1674 #[must_use]
1675 pub fn with_event_driven_report_indicator(mut self, v: IffPresence) -> Self {
1676 self.0.event_driven_report_indicator = v;
1677 self
1678 }
1679
1680 #[must_use]
1681 pub fn with_on_off_status(mut self, v: OnOffStatus) -> Self {
1682 self.0.on_off_status = v;
1683 self
1684 }
1685
1686 #[must_use]
1687 pub fn with_damage_status(mut self, v: DamageStatus) -> Self {
1688 self.0.damage_status = v;
1689 self
1690 }
1691
1692 #[must_use]
1693 pub fn with_malfunction_status(mut self, v: MalfunctionStatus) -> Self {
1694 self.0.malfunction_status = v;
1695 self
1696 }
1697
1698 #[must_use]
1699 pub fn build(self) -> ModeSTransponderStatus {
1700 self.0
1701 }
1702}
1703
1704pub struct SystemStatusBuilder(SystemStatus);
1705
1706impl Default for SystemStatusBuilder {
1707 fn default() -> Self {
1708 Self::new()
1709 }
1710}
1711
1712impl SystemStatusBuilder {
1713 #[must_use]
1714 pub fn new() -> Self {
1715 Self(SystemStatus::default())
1716 }
1717
1718 #[must_use]
1719 pub fn with_system_on_off_status(mut self, v: OnOffStatus) -> Self {
1720 self.0.system_on_off_status = v;
1721 self
1722 }
1723
1724 #[must_use]
1725 pub fn with_parameter_1_capable(mut self, v: ParameterCapable) -> Self {
1726 self.0.parameter_1_capable = v;
1727 self
1728 }
1729
1730 #[must_use]
1731 pub fn with_parameter_2_capable(mut self, v: ParameterCapable) -> Self {
1732 self.0.parameter_2_capable = v;
1733 self
1734 }
1735
1736 #[must_use]
1737 pub fn with_parameter_3_capable(mut self, v: ParameterCapable) -> Self {
1738 self.0.parameter_3_capable = v;
1739 self
1740 }
1741
1742 #[must_use]
1743 pub fn with_parameter_4_capable(mut self, v: ParameterCapable) -> Self {
1744 self.0.parameter_4_capable = v;
1745 self
1746 }
1747
1748 #[must_use]
1749 pub fn with_parameter_5_capable(mut self, v: ParameterCapable) -> Self {
1750 self.0.parameter_5_capable = v;
1751 self
1752 }
1753
1754 #[must_use]
1755 pub fn with_parameter_6_capable(mut self, v: ParameterCapable) -> Self {
1756 self.0.parameter_6_capable = v;
1757 self
1758 }
1759
1760 #[must_use]
1761 pub fn with_operational_status(mut self, v: OperationalStatus) -> Self {
1762 self.0.operational_status = v;
1763 self
1764 }
1765
1766 #[must_use]
1767 pub fn build(self) -> SystemStatus {
1768 self.0
1769 }
1770}