dfhack_proto/generated/messages/
ItemdefInstrument.rs

1// This file is generated by rust-protobuf 3.7.2. Do not edit
2// .proto file is parsed by pure
3// @generated
4
5// https://github.com/rust-lang/rust-clippy/issues/702
6#![allow(unknown_lints)]
7#![allow(clippy::all)]
8
9#![allow(unused_attributes)]
10#![cfg_attr(rustfmt, rustfmt::skip)]
11
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_results)]
19#![allow(unused_mut)]
20
21//! Generated file from `ItemdefInstrument.proto`
22
23/// Generated files are compatible only with the same version
24/// of protobuf runtime.
25const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_7_2;
26
27// @@protoc_insertion_point(message:ItemdefInstrument.InstrumentFlags)
28#[derive(PartialEq,Clone,Default,Debug)]
29pub struct InstrumentFlags {
30    // message fields
31    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.indefinite_pitch)
32    pub indefinite_pitch: ::std::option::Option<bool>,
33    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.placed_as_building)
34    pub placed_as_building: ::std::option::Option<bool>,
35    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.metal_mat)
36    pub metal_mat: ::std::option::Option<bool>,
37    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.stone_mat)
38    pub stone_mat: ::std::option::Option<bool>,
39    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.wood_mat)
40    pub wood_mat: ::std::option::Option<bool>,
41    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.glass_mat)
42    pub glass_mat: ::std::option::Option<bool>,
43    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.ceramic_mat)
44    pub ceramic_mat: ::std::option::Option<bool>,
45    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.shell_mat)
46    pub shell_mat: ::std::option::Option<bool>,
47    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentFlags.bone_mat)
48    pub bone_mat: ::std::option::Option<bool>,
49    // special fields
50    // @@protoc_insertion_point(special_field:ItemdefInstrument.InstrumentFlags.special_fields)
51    pub special_fields: ::protobuf::SpecialFields,
52}
53
54impl<'a> ::std::default::Default for &'a InstrumentFlags {
55    fn default() -> &'a InstrumentFlags {
56        <InstrumentFlags as ::protobuf::Message>::default_instance()
57    }
58}
59
60impl InstrumentFlags {
61    pub fn new() -> InstrumentFlags {
62        ::std::default::Default::default()
63    }
64
65    // optional bool indefinite_pitch = 1;
66
67    pub fn indefinite_pitch(&self) -> bool {
68        self.indefinite_pitch.unwrap_or(false)
69    }
70
71    pub fn clear_indefinite_pitch(&mut self) {
72        self.indefinite_pitch = ::std::option::Option::None;
73    }
74
75    pub fn has_indefinite_pitch(&self) -> bool {
76        self.indefinite_pitch.is_some()
77    }
78
79    // Param is passed by value, moved
80    pub fn set_indefinite_pitch(&mut self, v: bool) {
81        self.indefinite_pitch = ::std::option::Option::Some(v);
82    }
83
84    // optional bool placed_as_building = 2;
85
86    pub fn placed_as_building(&self) -> bool {
87        self.placed_as_building.unwrap_or(false)
88    }
89
90    pub fn clear_placed_as_building(&mut self) {
91        self.placed_as_building = ::std::option::Option::None;
92    }
93
94    pub fn has_placed_as_building(&self) -> bool {
95        self.placed_as_building.is_some()
96    }
97
98    // Param is passed by value, moved
99    pub fn set_placed_as_building(&mut self, v: bool) {
100        self.placed_as_building = ::std::option::Option::Some(v);
101    }
102
103    // optional bool metal_mat = 3;
104
105    pub fn metal_mat(&self) -> bool {
106        self.metal_mat.unwrap_or(false)
107    }
108
109    pub fn clear_metal_mat(&mut self) {
110        self.metal_mat = ::std::option::Option::None;
111    }
112
113    pub fn has_metal_mat(&self) -> bool {
114        self.metal_mat.is_some()
115    }
116
117    // Param is passed by value, moved
118    pub fn set_metal_mat(&mut self, v: bool) {
119        self.metal_mat = ::std::option::Option::Some(v);
120    }
121
122    // optional bool stone_mat = 4;
123
124    pub fn stone_mat(&self) -> bool {
125        self.stone_mat.unwrap_or(false)
126    }
127
128    pub fn clear_stone_mat(&mut self) {
129        self.stone_mat = ::std::option::Option::None;
130    }
131
132    pub fn has_stone_mat(&self) -> bool {
133        self.stone_mat.is_some()
134    }
135
136    // Param is passed by value, moved
137    pub fn set_stone_mat(&mut self, v: bool) {
138        self.stone_mat = ::std::option::Option::Some(v);
139    }
140
141    // optional bool wood_mat = 5;
142
143    pub fn wood_mat(&self) -> bool {
144        self.wood_mat.unwrap_or(false)
145    }
146
147    pub fn clear_wood_mat(&mut self) {
148        self.wood_mat = ::std::option::Option::None;
149    }
150
151    pub fn has_wood_mat(&self) -> bool {
152        self.wood_mat.is_some()
153    }
154
155    // Param is passed by value, moved
156    pub fn set_wood_mat(&mut self, v: bool) {
157        self.wood_mat = ::std::option::Option::Some(v);
158    }
159
160    // optional bool glass_mat = 6;
161
162    pub fn glass_mat(&self) -> bool {
163        self.glass_mat.unwrap_or(false)
164    }
165
166    pub fn clear_glass_mat(&mut self) {
167        self.glass_mat = ::std::option::Option::None;
168    }
169
170    pub fn has_glass_mat(&self) -> bool {
171        self.glass_mat.is_some()
172    }
173
174    // Param is passed by value, moved
175    pub fn set_glass_mat(&mut self, v: bool) {
176        self.glass_mat = ::std::option::Option::Some(v);
177    }
178
179    // optional bool ceramic_mat = 7;
180
181    pub fn ceramic_mat(&self) -> bool {
182        self.ceramic_mat.unwrap_or(false)
183    }
184
185    pub fn clear_ceramic_mat(&mut self) {
186        self.ceramic_mat = ::std::option::Option::None;
187    }
188
189    pub fn has_ceramic_mat(&self) -> bool {
190        self.ceramic_mat.is_some()
191    }
192
193    // Param is passed by value, moved
194    pub fn set_ceramic_mat(&mut self, v: bool) {
195        self.ceramic_mat = ::std::option::Option::Some(v);
196    }
197
198    // optional bool shell_mat = 8;
199
200    pub fn shell_mat(&self) -> bool {
201        self.shell_mat.unwrap_or(false)
202    }
203
204    pub fn clear_shell_mat(&mut self) {
205        self.shell_mat = ::std::option::Option::None;
206    }
207
208    pub fn has_shell_mat(&self) -> bool {
209        self.shell_mat.is_some()
210    }
211
212    // Param is passed by value, moved
213    pub fn set_shell_mat(&mut self, v: bool) {
214        self.shell_mat = ::std::option::Option::Some(v);
215    }
216
217    // optional bool bone_mat = 9;
218
219    pub fn bone_mat(&self) -> bool {
220        self.bone_mat.unwrap_or(false)
221    }
222
223    pub fn clear_bone_mat(&mut self) {
224        self.bone_mat = ::std::option::Option::None;
225    }
226
227    pub fn has_bone_mat(&self) -> bool {
228        self.bone_mat.is_some()
229    }
230
231    // Param is passed by value, moved
232    pub fn set_bone_mat(&mut self, v: bool) {
233        self.bone_mat = ::std::option::Option::Some(v);
234    }
235
236    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
237        let mut fields = ::std::vec::Vec::with_capacity(9);
238        let mut oneofs = ::std::vec::Vec::with_capacity(0);
239        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
240            "indefinite_pitch",
241            |m: &InstrumentFlags| { &m.indefinite_pitch },
242            |m: &mut InstrumentFlags| { &mut m.indefinite_pitch },
243        ));
244        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
245            "placed_as_building",
246            |m: &InstrumentFlags| { &m.placed_as_building },
247            |m: &mut InstrumentFlags| { &mut m.placed_as_building },
248        ));
249        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
250            "metal_mat",
251            |m: &InstrumentFlags| { &m.metal_mat },
252            |m: &mut InstrumentFlags| { &mut m.metal_mat },
253        ));
254        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
255            "stone_mat",
256            |m: &InstrumentFlags| { &m.stone_mat },
257            |m: &mut InstrumentFlags| { &mut m.stone_mat },
258        ));
259        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
260            "wood_mat",
261            |m: &InstrumentFlags| { &m.wood_mat },
262            |m: &mut InstrumentFlags| { &mut m.wood_mat },
263        ));
264        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
265            "glass_mat",
266            |m: &InstrumentFlags| { &m.glass_mat },
267            |m: &mut InstrumentFlags| { &mut m.glass_mat },
268        ));
269        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
270            "ceramic_mat",
271            |m: &InstrumentFlags| { &m.ceramic_mat },
272            |m: &mut InstrumentFlags| { &mut m.ceramic_mat },
273        ));
274        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
275            "shell_mat",
276            |m: &InstrumentFlags| { &m.shell_mat },
277            |m: &mut InstrumentFlags| { &mut m.shell_mat },
278        ));
279        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
280            "bone_mat",
281            |m: &InstrumentFlags| { &m.bone_mat },
282            |m: &mut InstrumentFlags| { &mut m.bone_mat },
283        ));
284        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InstrumentFlags>(
285            "InstrumentFlags",
286            fields,
287            oneofs,
288        )
289    }
290}
291
292impl ::protobuf::Message for InstrumentFlags {
293    const NAME: &'static str = "InstrumentFlags";
294
295    fn is_initialized(&self) -> bool {
296        true
297    }
298
299    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
300        while let Some(tag) = is.read_raw_tag_or_eof()? {
301            match tag {
302                8 => {
303                    self.indefinite_pitch = ::std::option::Option::Some(is.read_bool()?);
304                },
305                16 => {
306                    self.placed_as_building = ::std::option::Option::Some(is.read_bool()?);
307                },
308                24 => {
309                    self.metal_mat = ::std::option::Option::Some(is.read_bool()?);
310                },
311                32 => {
312                    self.stone_mat = ::std::option::Option::Some(is.read_bool()?);
313                },
314                40 => {
315                    self.wood_mat = ::std::option::Option::Some(is.read_bool()?);
316                },
317                48 => {
318                    self.glass_mat = ::std::option::Option::Some(is.read_bool()?);
319                },
320                56 => {
321                    self.ceramic_mat = ::std::option::Option::Some(is.read_bool()?);
322                },
323                64 => {
324                    self.shell_mat = ::std::option::Option::Some(is.read_bool()?);
325                },
326                72 => {
327                    self.bone_mat = ::std::option::Option::Some(is.read_bool()?);
328                },
329                tag => {
330                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
331                },
332            };
333        }
334        ::std::result::Result::Ok(())
335    }
336
337    // Compute sizes of nested messages
338    #[allow(unused_variables)]
339    fn compute_size(&self) -> u64 {
340        let mut my_size = 0;
341        if let Some(v) = self.indefinite_pitch {
342            my_size += 1 + 1;
343        }
344        if let Some(v) = self.placed_as_building {
345            my_size += 1 + 1;
346        }
347        if let Some(v) = self.metal_mat {
348            my_size += 1 + 1;
349        }
350        if let Some(v) = self.stone_mat {
351            my_size += 1 + 1;
352        }
353        if let Some(v) = self.wood_mat {
354            my_size += 1 + 1;
355        }
356        if let Some(v) = self.glass_mat {
357            my_size += 1 + 1;
358        }
359        if let Some(v) = self.ceramic_mat {
360            my_size += 1 + 1;
361        }
362        if let Some(v) = self.shell_mat {
363            my_size += 1 + 1;
364        }
365        if let Some(v) = self.bone_mat {
366            my_size += 1 + 1;
367        }
368        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
369        self.special_fields.cached_size().set(my_size as u32);
370        my_size
371    }
372
373    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
374        if let Some(v) = self.indefinite_pitch {
375            os.write_bool(1, v)?;
376        }
377        if let Some(v) = self.placed_as_building {
378            os.write_bool(2, v)?;
379        }
380        if let Some(v) = self.metal_mat {
381            os.write_bool(3, v)?;
382        }
383        if let Some(v) = self.stone_mat {
384            os.write_bool(4, v)?;
385        }
386        if let Some(v) = self.wood_mat {
387            os.write_bool(5, v)?;
388        }
389        if let Some(v) = self.glass_mat {
390            os.write_bool(6, v)?;
391        }
392        if let Some(v) = self.ceramic_mat {
393            os.write_bool(7, v)?;
394        }
395        if let Some(v) = self.shell_mat {
396            os.write_bool(8, v)?;
397        }
398        if let Some(v) = self.bone_mat {
399            os.write_bool(9, v)?;
400        }
401        os.write_unknown_fields(self.special_fields.unknown_fields())?;
402        ::std::result::Result::Ok(())
403    }
404
405    fn special_fields(&self) -> &::protobuf::SpecialFields {
406        &self.special_fields
407    }
408
409    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
410        &mut self.special_fields
411    }
412
413    fn new() -> InstrumentFlags {
414        InstrumentFlags::new()
415    }
416
417    fn clear(&mut self) {
418        self.indefinite_pitch = ::std::option::Option::None;
419        self.placed_as_building = ::std::option::Option::None;
420        self.metal_mat = ::std::option::Option::None;
421        self.stone_mat = ::std::option::Option::None;
422        self.wood_mat = ::std::option::Option::None;
423        self.glass_mat = ::std::option::Option::None;
424        self.ceramic_mat = ::std::option::Option::None;
425        self.shell_mat = ::std::option::Option::None;
426        self.bone_mat = ::std::option::Option::None;
427        self.special_fields.clear();
428    }
429
430    fn default_instance() -> &'static InstrumentFlags {
431        static instance: InstrumentFlags = InstrumentFlags {
432            indefinite_pitch: ::std::option::Option::None,
433            placed_as_building: ::std::option::Option::None,
434            metal_mat: ::std::option::Option::None,
435            stone_mat: ::std::option::Option::None,
436            wood_mat: ::std::option::Option::None,
437            glass_mat: ::std::option::Option::None,
438            ceramic_mat: ::std::option::Option::None,
439            shell_mat: ::std::option::Option::None,
440            bone_mat: ::std::option::Option::None,
441            special_fields: ::protobuf::SpecialFields::new(),
442        };
443        &instance
444    }
445}
446
447impl ::protobuf::MessageFull for InstrumentFlags {
448    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
449        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
450        descriptor.get(|| file_descriptor().message_by_package_relative_name("InstrumentFlags").unwrap()).clone()
451    }
452}
453
454impl ::std::fmt::Display for InstrumentFlags {
455    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
456        ::protobuf::text_format::fmt(self, f)
457    }
458}
459
460impl ::protobuf::reflect::ProtobufValue for InstrumentFlags {
461    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
462}
463
464// @@protoc_insertion_point(message:ItemdefInstrument.InstrumentPiece)
465#[derive(PartialEq,Clone,Default,Debug)]
466pub struct InstrumentPiece {
467    // message fields
468    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentPiece.type)
469    pub type_: ::std::option::Option<::std::string::String>,
470    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentPiece.id)
471    pub id: ::std::option::Option<::std::string::String>,
472    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentPiece.name)
473    pub name: ::std::option::Option<::std::string::String>,
474    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentPiece.name_plural)
475    pub name_plural: ::std::option::Option<::std::string::String>,
476    // special fields
477    // @@protoc_insertion_point(special_field:ItemdefInstrument.InstrumentPiece.special_fields)
478    pub special_fields: ::protobuf::SpecialFields,
479}
480
481impl<'a> ::std::default::Default for &'a InstrumentPiece {
482    fn default() -> &'a InstrumentPiece {
483        <InstrumentPiece as ::protobuf::Message>::default_instance()
484    }
485}
486
487impl InstrumentPiece {
488    pub fn new() -> InstrumentPiece {
489        ::std::default::Default::default()
490    }
491
492    // optional string type = 1;
493
494    pub fn type_(&self) -> &str {
495        match self.type_.as_ref() {
496            Some(v) => v,
497            None => "",
498        }
499    }
500
501    pub fn clear_type_(&mut self) {
502        self.type_ = ::std::option::Option::None;
503    }
504
505    pub fn has_type(&self) -> bool {
506        self.type_.is_some()
507    }
508
509    // Param is passed by value, moved
510    pub fn set_type(&mut self, v: ::std::string::String) {
511        self.type_ = ::std::option::Option::Some(v);
512    }
513
514    // Mutable pointer to the field.
515    // If field is not initialized, it is initialized with default value first.
516    pub fn mut_type(&mut self) -> &mut ::std::string::String {
517        if self.type_.is_none() {
518            self.type_ = ::std::option::Option::Some(::std::string::String::new());
519        }
520        self.type_.as_mut().unwrap()
521    }
522
523    // Take field
524    pub fn take_type_(&mut self) -> ::std::string::String {
525        self.type_.take().unwrap_or_else(|| ::std::string::String::new())
526    }
527
528    // optional string id = 2;
529
530    pub fn id(&self) -> &str {
531        match self.id.as_ref() {
532            Some(v) => v,
533            None => "",
534        }
535    }
536
537    pub fn clear_id(&mut self) {
538        self.id = ::std::option::Option::None;
539    }
540
541    pub fn has_id(&self) -> bool {
542        self.id.is_some()
543    }
544
545    // Param is passed by value, moved
546    pub fn set_id(&mut self, v: ::std::string::String) {
547        self.id = ::std::option::Option::Some(v);
548    }
549
550    // Mutable pointer to the field.
551    // If field is not initialized, it is initialized with default value first.
552    pub fn mut_id(&mut self) -> &mut ::std::string::String {
553        if self.id.is_none() {
554            self.id = ::std::option::Option::Some(::std::string::String::new());
555        }
556        self.id.as_mut().unwrap()
557    }
558
559    // Take field
560    pub fn take_id(&mut self) -> ::std::string::String {
561        self.id.take().unwrap_or_else(|| ::std::string::String::new())
562    }
563
564    // optional string name = 3;
565
566    pub fn name(&self) -> &str {
567        match self.name.as_ref() {
568            Some(v) => v,
569            None => "",
570        }
571    }
572
573    pub fn clear_name(&mut self) {
574        self.name = ::std::option::Option::None;
575    }
576
577    pub fn has_name(&self) -> bool {
578        self.name.is_some()
579    }
580
581    // Param is passed by value, moved
582    pub fn set_name(&mut self, v: ::std::string::String) {
583        self.name = ::std::option::Option::Some(v);
584    }
585
586    // Mutable pointer to the field.
587    // If field is not initialized, it is initialized with default value first.
588    pub fn mut_name(&mut self) -> &mut ::std::string::String {
589        if self.name.is_none() {
590            self.name = ::std::option::Option::Some(::std::string::String::new());
591        }
592        self.name.as_mut().unwrap()
593    }
594
595    // Take field
596    pub fn take_name(&mut self) -> ::std::string::String {
597        self.name.take().unwrap_or_else(|| ::std::string::String::new())
598    }
599
600    // optional string name_plural = 4;
601
602    pub fn name_plural(&self) -> &str {
603        match self.name_plural.as_ref() {
604            Some(v) => v,
605            None => "",
606        }
607    }
608
609    pub fn clear_name_plural(&mut self) {
610        self.name_plural = ::std::option::Option::None;
611    }
612
613    pub fn has_name_plural(&self) -> bool {
614        self.name_plural.is_some()
615    }
616
617    // Param is passed by value, moved
618    pub fn set_name_plural(&mut self, v: ::std::string::String) {
619        self.name_plural = ::std::option::Option::Some(v);
620    }
621
622    // Mutable pointer to the field.
623    // If field is not initialized, it is initialized with default value first.
624    pub fn mut_name_plural(&mut self) -> &mut ::std::string::String {
625        if self.name_plural.is_none() {
626            self.name_plural = ::std::option::Option::Some(::std::string::String::new());
627        }
628        self.name_plural.as_mut().unwrap()
629    }
630
631    // Take field
632    pub fn take_name_plural(&mut self) -> ::std::string::String {
633        self.name_plural.take().unwrap_or_else(|| ::std::string::String::new())
634    }
635
636    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
637        let mut fields = ::std::vec::Vec::with_capacity(4);
638        let mut oneofs = ::std::vec::Vec::with_capacity(0);
639        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
640            "type",
641            |m: &InstrumentPiece| { &m.type_ },
642            |m: &mut InstrumentPiece| { &mut m.type_ },
643        ));
644        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
645            "id",
646            |m: &InstrumentPiece| { &m.id },
647            |m: &mut InstrumentPiece| { &mut m.id },
648        ));
649        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
650            "name",
651            |m: &InstrumentPiece| { &m.name },
652            |m: &mut InstrumentPiece| { &mut m.name },
653        ));
654        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
655            "name_plural",
656            |m: &InstrumentPiece| { &m.name_plural },
657            |m: &mut InstrumentPiece| { &mut m.name_plural },
658        ));
659        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InstrumentPiece>(
660            "InstrumentPiece",
661            fields,
662            oneofs,
663        )
664    }
665}
666
667impl ::protobuf::Message for InstrumentPiece {
668    const NAME: &'static str = "InstrumentPiece";
669
670    fn is_initialized(&self) -> bool {
671        true
672    }
673
674    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
675        while let Some(tag) = is.read_raw_tag_or_eof()? {
676            match tag {
677                10 => {
678                    self.type_ = ::std::option::Option::Some(is.read_string()?);
679                },
680                18 => {
681                    self.id = ::std::option::Option::Some(is.read_string()?);
682                },
683                26 => {
684                    self.name = ::std::option::Option::Some(is.read_string()?);
685                },
686                34 => {
687                    self.name_plural = ::std::option::Option::Some(is.read_string()?);
688                },
689                tag => {
690                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
691                },
692            };
693        }
694        ::std::result::Result::Ok(())
695    }
696
697    // Compute sizes of nested messages
698    #[allow(unused_variables)]
699    fn compute_size(&self) -> u64 {
700        let mut my_size = 0;
701        if let Some(v) = self.type_.as_ref() {
702            my_size += ::protobuf::rt::string_size(1, &v);
703        }
704        if let Some(v) = self.id.as_ref() {
705            my_size += ::protobuf::rt::string_size(2, &v);
706        }
707        if let Some(v) = self.name.as_ref() {
708            my_size += ::protobuf::rt::string_size(3, &v);
709        }
710        if let Some(v) = self.name_plural.as_ref() {
711            my_size += ::protobuf::rt::string_size(4, &v);
712        }
713        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
714        self.special_fields.cached_size().set(my_size as u32);
715        my_size
716    }
717
718    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
719        if let Some(v) = self.type_.as_ref() {
720            os.write_string(1, v)?;
721        }
722        if let Some(v) = self.id.as_ref() {
723            os.write_string(2, v)?;
724        }
725        if let Some(v) = self.name.as_ref() {
726            os.write_string(3, v)?;
727        }
728        if let Some(v) = self.name_plural.as_ref() {
729            os.write_string(4, v)?;
730        }
731        os.write_unknown_fields(self.special_fields.unknown_fields())?;
732        ::std::result::Result::Ok(())
733    }
734
735    fn special_fields(&self) -> &::protobuf::SpecialFields {
736        &self.special_fields
737    }
738
739    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
740        &mut self.special_fields
741    }
742
743    fn new() -> InstrumentPiece {
744        InstrumentPiece::new()
745    }
746
747    fn clear(&mut self) {
748        self.type_ = ::std::option::Option::None;
749        self.id = ::std::option::Option::None;
750        self.name = ::std::option::Option::None;
751        self.name_plural = ::std::option::Option::None;
752        self.special_fields.clear();
753    }
754
755    fn default_instance() -> &'static InstrumentPiece {
756        static instance: InstrumentPiece = InstrumentPiece {
757            type_: ::std::option::Option::None,
758            id: ::std::option::Option::None,
759            name: ::std::option::Option::None,
760            name_plural: ::std::option::Option::None,
761            special_fields: ::protobuf::SpecialFields::new(),
762        };
763        &instance
764    }
765}
766
767impl ::protobuf::MessageFull for InstrumentPiece {
768    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
769        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
770        descriptor.get(|| file_descriptor().message_by_package_relative_name("InstrumentPiece").unwrap()).clone()
771    }
772}
773
774impl ::std::fmt::Display for InstrumentPiece {
775    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
776        ::protobuf::text_format::fmt(self, f)
777    }
778}
779
780impl ::protobuf::reflect::ProtobufValue for InstrumentPiece {
781    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
782}
783
784// @@protoc_insertion_point(message:ItemdefInstrument.InstrumentRegister)
785#[derive(PartialEq,Clone,Default,Debug)]
786pub struct InstrumentRegister {
787    // message fields
788    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentRegister.pitch_range_min)
789    pub pitch_range_min: ::std::option::Option<i32>,
790    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentRegister.pitch_range_max)
791    pub pitch_range_max: ::std::option::Option<i32>,
792    // special fields
793    // @@protoc_insertion_point(special_field:ItemdefInstrument.InstrumentRegister.special_fields)
794    pub special_fields: ::protobuf::SpecialFields,
795}
796
797impl<'a> ::std::default::Default for &'a InstrumentRegister {
798    fn default() -> &'a InstrumentRegister {
799        <InstrumentRegister as ::protobuf::Message>::default_instance()
800    }
801}
802
803impl InstrumentRegister {
804    pub fn new() -> InstrumentRegister {
805        ::std::default::Default::default()
806    }
807
808    // optional int32 pitch_range_min = 1;
809
810    pub fn pitch_range_min(&self) -> i32 {
811        self.pitch_range_min.unwrap_or(0)
812    }
813
814    pub fn clear_pitch_range_min(&mut self) {
815        self.pitch_range_min = ::std::option::Option::None;
816    }
817
818    pub fn has_pitch_range_min(&self) -> bool {
819        self.pitch_range_min.is_some()
820    }
821
822    // Param is passed by value, moved
823    pub fn set_pitch_range_min(&mut self, v: i32) {
824        self.pitch_range_min = ::std::option::Option::Some(v);
825    }
826
827    // optional int32 pitch_range_max = 2;
828
829    pub fn pitch_range_max(&self) -> i32 {
830        self.pitch_range_max.unwrap_or(0)
831    }
832
833    pub fn clear_pitch_range_max(&mut self) {
834        self.pitch_range_max = ::std::option::Option::None;
835    }
836
837    pub fn has_pitch_range_max(&self) -> bool {
838        self.pitch_range_max.is_some()
839    }
840
841    // Param is passed by value, moved
842    pub fn set_pitch_range_max(&mut self, v: i32) {
843        self.pitch_range_max = ::std::option::Option::Some(v);
844    }
845
846    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
847        let mut fields = ::std::vec::Vec::with_capacity(2);
848        let mut oneofs = ::std::vec::Vec::with_capacity(0);
849        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
850            "pitch_range_min",
851            |m: &InstrumentRegister| { &m.pitch_range_min },
852            |m: &mut InstrumentRegister| { &mut m.pitch_range_min },
853        ));
854        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
855            "pitch_range_max",
856            |m: &InstrumentRegister| { &m.pitch_range_max },
857            |m: &mut InstrumentRegister| { &mut m.pitch_range_max },
858        ));
859        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InstrumentRegister>(
860            "InstrumentRegister",
861            fields,
862            oneofs,
863        )
864    }
865}
866
867impl ::protobuf::Message for InstrumentRegister {
868    const NAME: &'static str = "InstrumentRegister";
869
870    fn is_initialized(&self) -> bool {
871        true
872    }
873
874    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
875        while let Some(tag) = is.read_raw_tag_or_eof()? {
876            match tag {
877                8 => {
878                    self.pitch_range_min = ::std::option::Option::Some(is.read_int32()?);
879                },
880                16 => {
881                    self.pitch_range_max = ::std::option::Option::Some(is.read_int32()?);
882                },
883                tag => {
884                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
885                },
886            };
887        }
888        ::std::result::Result::Ok(())
889    }
890
891    // Compute sizes of nested messages
892    #[allow(unused_variables)]
893    fn compute_size(&self) -> u64 {
894        let mut my_size = 0;
895        if let Some(v) = self.pitch_range_min {
896            my_size += ::protobuf::rt::int32_size(1, v);
897        }
898        if let Some(v) = self.pitch_range_max {
899            my_size += ::protobuf::rt::int32_size(2, v);
900        }
901        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
902        self.special_fields.cached_size().set(my_size as u32);
903        my_size
904    }
905
906    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
907        if let Some(v) = self.pitch_range_min {
908            os.write_int32(1, v)?;
909        }
910        if let Some(v) = self.pitch_range_max {
911            os.write_int32(2, v)?;
912        }
913        os.write_unknown_fields(self.special_fields.unknown_fields())?;
914        ::std::result::Result::Ok(())
915    }
916
917    fn special_fields(&self) -> &::protobuf::SpecialFields {
918        &self.special_fields
919    }
920
921    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
922        &mut self.special_fields
923    }
924
925    fn new() -> InstrumentRegister {
926        InstrumentRegister::new()
927    }
928
929    fn clear(&mut self) {
930        self.pitch_range_min = ::std::option::Option::None;
931        self.pitch_range_max = ::std::option::Option::None;
932        self.special_fields.clear();
933    }
934
935    fn default_instance() -> &'static InstrumentRegister {
936        static instance: InstrumentRegister = InstrumentRegister {
937            pitch_range_min: ::std::option::Option::None,
938            pitch_range_max: ::std::option::Option::None,
939            special_fields: ::protobuf::SpecialFields::new(),
940        };
941        &instance
942    }
943}
944
945impl ::protobuf::MessageFull for InstrumentRegister {
946    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
947        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
948        descriptor.get(|| file_descriptor().message_by_package_relative_name("InstrumentRegister").unwrap()).clone()
949    }
950}
951
952impl ::std::fmt::Display for InstrumentRegister {
953    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
954        ::protobuf::text_format::fmt(self, f)
955    }
956}
957
958impl ::protobuf::reflect::ProtobufValue for InstrumentRegister {
959    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
960}
961
962// @@protoc_insertion_point(message:ItemdefInstrument.InstrumentDef)
963#[derive(PartialEq,Clone,Default,Debug)]
964pub struct InstrumentDef {
965    // message fields
966    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.flags)
967    pub flags: ::protobuf::MessageField<InstrumentFlags>,
968    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.size)
969    pub size: ::std::option::Option<i32>,
970    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.value)
971    pub value: ::std::option::Option<i32>,
972    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.material_size)
973    pub material_size: ::std::option::Option<i32>,
974    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pieces)
975    pub pieces: ::std::vec::Vec<InstrumentPiece>,
976    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pitch_range_min)
977    pub pitch_range_min: ::std::option::Option<i32>,
978    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pitch_range_max)
979    pub pitch_range_max: ::std::option::Option<i32>,
980    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.volume_mb_min)
981    pub volume_mb_min: ::std::option::Option<i32>,
982    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.volume_mb_max)
983    pub volume_mb_max: ::std::option::Option<i32>,
984    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.sound_production)
985    pub sound_production: ::std::vec::Vec<::protobuf::EnumOrUnknown<SoundProductionType>>,
986    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.sound_production_parm1)
987    pub sound_production_parm1: ::std::vec::Vec<::std::string::String>,
988    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.sound_production_parm2)
989    pub sound_production_parm2: ::std::vec::Vec<::std::string::String>,
990    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pitch_choice)
991    pub pitch_choice: ::std::vec::Vec<::protobuf::EnumOrUnknown<PitchChoiceType>>,
992    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pitch_choice_parm1)
993    pub pitch_choice_parm1: ::std::vec::Vec<::std::string::String>,
994    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.pitch_choice_parm2)
995    pub pitch_choice_parm2: ::std::vec::Vec<::std::string::String>,
996    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.tuning)
997    pub tuning: ::std::vec::Vec<::protobuf::EnumOrUnknown<TuningType>>,
998    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.tuning_parm)
999    pub tuning_parm: ::std::vec::Vec<::std::string::String>,
1000    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.registers)
1001    pub registers: ::std::vec::Vec<InstrumentRegister>,
1002    // @@protoc_insertion_point(field:ItemdefInstrument.InstrumentDef.description)
1003    pub description: ::std::option::Option<::std::string::String>,
1004    // special fields
1005    // @@protoc_insertion_point(special_field:ItemdefInstrument.InstrumentDef.special_fields)
1006    pub special_fields: ::protobuf::SpecialFields,
1007}
1008
1009impl<'a> ::std::default::Default for &'a InstrumentDef {
1010    fn default() -> &'a InstrumentDef {
1011        <InstrumentDef as ::protobuf::Message>::default_instance()
1012    }
1013}
1014
1015impl InstrumentDef {
1016    pub fn new() -> InstrumentDef {
1017        ::std::default::Default::default()
1018    }
1019
1020    // optional int32 size = 2;
1021
1022    pub fn size(&self) -> i32 {
1023        self.size.unwrap_or(0)
1024    }
1025
1026    pub fn clear_size(&mut self) {
1027        self.size = ::std::option::Option::None;
1028    }
1029
1030    pub fn has_size(&self) -> bool {
1031        self.size.is_some()
1032    }
1033
1034    // Param is passed by value, moved
1035    pub fn set_size(&mut self, v: i32) {
1036        self.size = ::std::option::Option::Some(v);
1037    }
1038
1039    // optional int32 value = 3;
1040
1041    pub fn value(&self) -> i32 {
1042        self.value.unwrap_or(0)
1043    }
1044
1045    pub fn clear_value(&mut self) {
1046        self.value = ::std::option::Option::None;
1047    }
1048
1049    pub fn has_value(&self) -> bool {
1050        self.value.is_some()
1051    }
1052
1053    // Param is passed by value, moved
1054    pub fn set_value(&mut self, v: i32) {
1055        self.value = ::std::option::Option::Some(v);
1056    }
1057
1058    // optional int32 material_size = 4;
1059
1060    pub fn material_size(&self) -> i32 {
1061        self.material_size.unwrap_or(0)
1062    }
1063
1064    pub fn clear_material_size(&mut self) {
1065        self.material_size = ::std::option::Option::None;
1066    }
1067
1068    pub fn has_material_size(&self) -> bool {
1069        self.material_size.is_some()
1070    }
1071
1072    // Param is passed by value, moved
1073    pub fn set_material_size(&mut self, v: i32) {
1074        self.material_size = ::std::option::Option::Some(v);
1075    }
1076
1077    // optional int32 pitch_range_min = 6;
1078
1079    pub fn pitch_range_min(&self) -> i32 {
1080        self.pitch_range_min.unwrap_or(0)
1081    }
1082
1083    pub fn clear_pitch_range_min(&mut self) {
1084        self.pitch_range_min = ::std::option::Option::None;
1085    }
1086
1087    pub fn has_pitch_range_min(&self) -> bool {
1088        self.pitch_range_min.is_some()
1089    }
1090
1091    // Param is passed by value, moved
1092    pub fn set_pitch_range_min(&mut self, v: i32) {
1093        self.pitch_range_min = ::std::option::Option::Some(v);
1094    }
1095
1096    // optional int32 pitch_range_max = 7;
1097
1098    pub fn pitch_range_max(&self) -> i32 {
1099        self.pitch_range_max.unwrap_or(0)
1100    }
1101
1102    pub fn clear_pitch_range_max(&mut self) {
1103        self.pitch_range_max = ::std::option::Option::None;
1104    }
1105
1106    pub fn has_pitch_range_max(&self) -> bool {
1107        self.pitch_range_max.is_some()
1108    }
1109
1110    // Param is passed by value, moved
1111    pub fn set_pitch_range_max(&mut self, v: i32) {
1112        self.pitch_range_max = ::std::option::Option::Some(v);
1113    }
1114
1115    // optional int32 volume_mb_min = 8;
1116
1117    pub fn volume_mb_min(&self) -> i32 {
1118        self.volume_mb_min.unwrap_or(0)
1119    }
1120
1121    pub fn clear_volume_mb_min(&mut self) {
1122        self.volume_mb_min = ::std::option::Option::None;
1123    }
1124
1125    pub fn has_volume_mb_min(&self) -> bool {
1126        self.volume_mb_min.is_some()
1127    }
1128
1129    // Param is passed by value, moved
1130    pub fn set_volume_mb_min(&mut self, v: i32) {
1131        self.volume_mb_min = ::std::option::Option::Some(v);
1132    }
1133
1134    // optional int32 volume_mb_max = 9;
1135
1136    pub fn volume_mb_max(&self) -> i32 {
1137        self.volume_mb_max.unwrap_or(0)
1138    }
1139
1140    pub fn clear_volume_mb_max(&mut self) {
1141        self.volume_mb_max = ::std::option::Option::None;
1142    }
1143
1144    pub fn has_volume_mb_max(&self) -> bool {
1145        self.volume_mb_max.is_some()
1146    }
1147
1148    // Param is passed by value, moved
1149    pub fn set_volume_mb_max(&mut self, v: i32) {
1150        self.volume_mb_max = ::std::option::Option::Some(v);
1151    }
1152
1153    // optional string description = 19;
1154
1155    pub fn description(&self) -> &str {
1156        match self.description.as_ref() {
1157            Some(v) => v,
1158            None => "",
1159        }
1160    }
1161
1162    pub fn clear_description(&mut self) {
1163        self.description = ::std::option::Option::None;
1164    }
1165
1166    pub fn has_description(&self) -> bool {
1167        self.description.is_some()
1168    }
1169
1170    // Param is passed by value, moved
1171    pub fn set_description(&mut self, v: ::std::string::String) {
1172        self.description = ::std::option::Option::Some(v);
1173    }
1174
1175    // Mutable pointer to the field.
1176    // If field is not initialized, it is initialized with default value first.
1177    pub fn mut_description(&mut self) -> &mut ::std::string::String {
1178        if self.description.is_none() {
1179            self.description = ::std::option::Option::Some(::std::string::String::new());
1180        }
1181        self.description.as_mut().unwrap()
1182    }
1183
1184    // Take field
1185    pub fn take_description(&mut self) -> ::std::string::String {
1186        self.description.take().unwrap_or_else(|| ::std::string::String::new())
1187    }
1188
1189    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
1190        let mut fields = ::std::vec::Vec::with_capacity(19);
1191        let mut oneofs = ::std::vec::Vec::with_capacity(0);
1192        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, InstrumentFlags>(
1193            "flags",
1194            |m: &InstrumentDef| { &m.flags },
1195            |m: &mut InstrumentDef| { &mut m.flags },
1196        ));
1197        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1198            "size",
1199            |m: &InstrumentDef| { &m.size },
1200            |m: &mut InstrumentDef| { &mut m.size },
1201        ));
1202        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1203            "value",
1204            |m: &InstrumentDef| { &m.value },
1205            |m: &mut InstrumentDef| { &mut m.value },
1206        ));
1207        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1208            "material_size",
1209            |m: &InstrumentDef| { &m.material_size },
1210            |m: &mut InstrumentDef| { &mut m.material_size },
1211        ));
1212        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1213            "pieces",
1214            |m: &InstrumentDef| { &m.pieces },
1215            |m: &mut InstrumentDef| { &mut m.pieces },
1216        ));
1217        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1218            "pitch_range_min",
1219            |m: &InstrumentDef| { &m.pitch_range_min },
1220            |m: &mut InstrumentDef| { &mut m.pitch_range_min },
1221        ));
1222        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1223            "pitch_range_max",
1224            |m: &InstrumentDef| { &m.pitch_range_max },
1225            |m: &mut InstrumentDef| { &mut m.pitch_range_max },
1226        ));
1227        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1228            "volume_mb_min",
1229            |m: &InstrumentDef| { &m.volume_mb_min },
1230            |m: &mut InstrumentDef| { &mut m.volume_mb_min },
1231        ));
1232        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1233            "volume_mb_max",
1234            |m: &InstrumentDef| { &m.volume_mb_max },
1235            |m: &mut InstrumentDef| { &mut m.volume_mb_max },
1236        ));
1237        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1238            "sound_production",
1239            |m: &InstrumentDef| { &m.sound_production },
1240            |m: &mut InstrumentDef| { &mut m.sound_production },
1241        ));
1242        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1243            "sound_production_parm1",
1244            |m: &InstrumentDef| { &m.sound_production_parm1 },
1245            |m: &mut InstrumentDef| { &mut m.sound_production_parm1 },
1246        ));
1247        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1248            "sound_production_parm2",
1249            |m: &InstrumentDef| { &m.sound_production_parm2 },
1250            |m: &mut InstrumentDef| { &mut m.sound_production_parm2 },
1251        ));
1252        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1253            "pitch_choice",
1254            |m: &InstrumentDef| { &m.pitch_choice },
1255            |m: &mut InstrumentDef| { &mut m.pitch_choice },
1256        ));
1257        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1258            "pitch_choice_parm1",
1259            |m: &InstrumentDef| { &m.pitch_choice_parm1 },
1260            |m: &mut InstrumentDef| { &mut m.pitch_choice_parm1 },
1261        ));
1262        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1263            "pitch_choice_parm2",
1264            |m: &InstrumentDef| { &m.pitch_choice_parm2 },
1265            |m: &mut InstrumentDef| { &mut m.pitch_choice_parm2 },
1266        ));
1267        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1268            "tuning",
1269            |m: &InstrumentDef| { &m.tuning },
1270            |m: &mut InstrumentDef| { &mut m.tuning },
1271        ));
1272        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1273            "tuning_parm",
1274            |m: &InstrumentDef| { &m.tuning_parm },
1275            |m: &mut InstrumentDef| { &mut m.tuning_parm },
1276        ));
1277        fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>(
1278            "registers",
1279            |m: &InstrumentDef| { &m.registers },
1280            |m: &mut InstrumentDef| { &mut m.registers },
1281        ));
1282        fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>(
1283            "description",
1284            |m: &InstrumentDef| { &m.description },
1285            |m: &mut InstrumentDef| { &mut m.description },
1286        ));
1287        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<InstrumentDef>(
1288            "InstrumentDef",
1289            fields,
1290            oneofs,
1291        )
1292    }
1293}
1294
1295impl ::protobuf::Message for InstrumentDef {
1296    const NAME: &'static str = "InstrumentDef";
1297
1298    fn is_initialized(&self) -> bool {
1299        true
1300    }
1301
1302    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
1303        while let Some(tag) = is.read_raw_tag_or_eof()? {
1304            match tag {
1305                10 => {
1306                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.flags)?;
1307                },
1308                16 => {
1309                    self.size = ::std::option::Option::Some(is.read_int32()?);
1310                },
1311                24 => {
1312                    self.value = ::std::option::Option::Some(is.read_int32()?);
1313                },
1314                32 => {
1315                    self.material_size = ::std::option::Option::Some(is.read_int32()?);
1316                },
1317                42 => {
1318                    self.pieces.push(is.read_message()?);
1319                },
1320                48 => {
1321                    self.pitch_range_min = ::std::option::Option::Some(is.read_int32()?);
1322                },
1323                56 => {
1324                    self.pitch_range_max = ::std::option::Option::Some(is.read_int32()?);
1325                },
1326                64 => {
1327                    self.volume_mb_min = ::std::option::Option::Some(is.read_int32()?);
1328                },
1329                72 => {
1330                    self.volume_mb_max = ::std::option::Option::Some(is.read_int32()?);
1331                },
1332                80 => {
1333                    self.sound_production.push(is.read_enum_or_unknown()?);
1334                },
1335                82 => {
1336                    ::protobuf::rt::read_repeated_packed_enum_or_unknown_into(is, &mut self.sound_production)?
1337                },
1338                90 => {
1339                    self.sound_production_parm1.push(is.read_string()?);
1340                },
1341                98 => {
1342                    self.sound_production_parm2.push(is.read_string()?);
1343                },
1344                104 => {
1345                    self.pitch_choice.push(is.read_enum_or_unknown()?);
1346                },
1347                106 => {
1348                    ::protobuf::rt::read_repeated_packed_enum_or_unknown_into(is, &mut self.pitch_choice)?
1349                },
1350                114 => {
1351                    self.pitch_choice_parm1.push(is.read_string()?);
1352                },
1353                122 => {
1354                    self.pitch_choice_parm2.push(is.read_string()?);
1355                },
1356                128 => {
1357                    self.tuning.push(is.read_enum_or_unknown()?);
1358                },
1359                130 => {
1360                    ::protobuf::rt::read_repeated_packed_enum_or_unknown_into(is, &mut self.tuning)?
1361                },
1362                138 => {
1363                    self.tuning_parm.push(is.read_string()?);
1364                },
1365                146 => {
1366                    self.registers.push(is.read_message()?);
1367                },
1368                154 => {
1369                    self.description = ::std::option::Option::Some(is.read_string()?);
1370                },
1371                tag => {
1372                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
1373                },
1374            };
1375        }
1376        ::std::result::Result::Ok(())
1377    }
1378
1379    // Compute sizes of nested messages
1380    #[allow(unused_variables)]
1381    fn compute_size(&self) -> u64 {
1382        let mut my_size = 0;
1383        if let Some(v) = self.flags.as_ref() {
1384            let len = v.compute_size();
1385            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1386        }
1387        if let Some(v) = self.size {
1388            my_size += ::protobuf::rt::int32_size(2, v);
1389        }
1390        if let Some(v) = self.value {
1391            my_size += ::protobuf::rt::int32_size(3, v);
1392        }
1393        if let Some(v) = self.material_size {
1394            my_size += ::protobuf::rt::int32_size(4, v);
1395        }
1396        for value in &self.pieces {
1397            let len = value.compute_size();
1398            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1399        };
1400        if let Some(v) = self.pitch_range_min {
1401            my_size += ::protobuf::rt::int32_size(6, v);
1402        }
1403        if let Some(v) = self.pitch_range_max {
1404            my_size += ::protobuf::rt::int32_size(7, v);
1405        }
1406        if let Some(v) = self.volume_mb_min {
1407            my_size += ::protobuf::rt::int32_size(8, v);
1408        }
1409        if let Some(v) = self.volume_mb_max {
1410            my_size += ::protobuf::rt::int32_size(9, v);
1411        }
1412        for value in &self.sound_production {
1413            my_size += ::protobuf::rt::int32_size(10, value.value());
1414        };
1415        for value in &self.sound_production_parm1 {
1416            my_size += ::protobuf::rt::string_size(11, &value);
1417        };
1418        for value in &self.sound_production_parm2 {
1419            my_size += ::protobuf::rt::string_size(12, &value);
1420        };
1421        for value in &self.pitch_choice {
1422            my_size += ::protobuf::rt::int32_size(13, value.value());
1423        };
1424        for value in &self.pitch_choice_parm1 {
1425            my_size += ::protobuf::rt::string_size(14, &value);
1426        };
1427        for value in &self.pitch_choice_parm2 {
1428            my_size += ::protobuf::rt::string_size(15, &value);
1429        };
1430        for value in &self.tuning {
1431            my_size += ::protobuf::rt::int32_size(16, value.value());
1432        };
1433        for value in &self.tuning_parm {
1434            my_size += ::protobuf::rt::string_size(17, &value);
1435        };
1436        for value in &self.registers {
1437            let len = value.compute_size();
1438            my_size += 2 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
1439        };
1440        if let Some(v) = self.description.as_ref() {
1441            my_size += ::protobuf::rt::string_size(19, &v);
1442        }
1443        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
1444        self.special_fields.cached_size().set(my_size as u32);
1445        my_size
1446    }
1447
1448    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
1449        if let Some(v) = self.flags.as_ref() {
1450            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
1451        }
1452        if let Some(v) = self.size {
1453            os.write_int32(2, v)?;
1454        }
1455        if let Some(v) = self.value {
1456            os.write_int32(3, v)?;
1457        }
1458        if let Some(v) = self.material_size {
1459            os.write_int32(4, v)?;
1460        }
1461        for v in &self.pieces {
1462            ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
1463        };
1464        if let Some(v) = self.pitch_range_min {
1465            os.write_int32(6, v)?;
1466        }
1467        if let Some(v) = self.pitch_range_max {
1468            os.write_int32(7, v)?;
1469        }
1470        if let Some(v) = self.volume_mb_min {
1471            os.write_int32(8, v)?;
1472        }
1473        if let Some(v) = self.volume_mb_max {
1474            os.write_int32(9, v)?;
1475        }
1476        for v in &self.sound_production {
1477            os.write_enum(10, ::protobuf::EnumOrUnknown::value(v))?;
1478        };
1479        for v in &self.sound_production_parm1 {
1480            os.write_string(11, &v)?;
1481        };
1482        for v in &self.sound_production_parm2 {
1483            os.write_string(12, &v)?;
1484        };
1485        for v in &self.pitch_choice {
1486            os.write_enum(13, ::protobuf::EnumOrUnknown::value(v))?;
1487        };
1488        for v in &self.pitch_choice_parm1 {
1489            os.write_string(14, &v)?;
1490        };
1491        for v in &self.pitch_choice_parm2 {
1492            os.write_string(15, &v)?;
1493        };
1494        for v in &self.tuning {
1495            os.write_enum(16, ::protobuf::EnumOrUnknown::value(v))?;
1496        };
1497        for v in &self.tuning_parm {
1498            os.write_string(17, &v)?;
1499        };
1500        for v in &self.registers {
1501            ::protobuf::rt::write_message_field_with_cached_size(18, v, os)?;
1502        };
1503        if let Some(v) = self.description.as_ref() {
1504            os.write_string(19, v)?;
1505        }
1506        os.write_unknown_fields(self.special_fields.unknown_fields())?;
1507        ::std::result::Result::Ok(())
1508    }
1509
1510    fn special_fields(&self) -> &::protobuf::SpecialFields {
1511        &self.special_fields
1512    }
1513
1514    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
1515        &mut self.special_fields
1516    }
1517
1518    fn new() -> InstrumentDef {
1519        InstrumentDef::new()
1520    }
1521
1522    fn clear(&mut self) {
1523        self.flags.clear();
1524        self.size = ::std::option::Option::None;
1525        self.value = ::std::option::Option::None;
1526        self.material_size = ::std::option::Option::None;
1527        self.pieces.clear();
1528        self.pitch_range_min = ::std::option::Option::None;
1529        self.pitch_range_max = ::std::option::Option::None;
1530        self.volume_mb_min = ::std::option::Option::None;
1531        self.volume_mb_max = ::std::option::Option::None;
1532        self.sound_production.clear();
1533        self.sound_production_parm1.clear();
1534        self.sound_production_parm2.clear();
1535        self.pitch_choice.clear();
1536        self.pitch_choice_parm1.clear();
1537        self.pitch_choice_parm2.clear();
1538        self.tuning.clear();
1539        self.tuning_parm.clear();
1540        self.registers.clear();
1541        self.description = ::std::option::Option::None;
1542        self.special_fields.clear();
1543    }
1544
1545    fn default_instance() -> &'static InstrumentDef {
1546        static instance: InstrumentDef = InstrumentDef {
1547            flags: ::protobuf::MessageField::none(),
1548            size: ::std::option::Option::None,
1549            value: ::std::option::Option::None,
1550            material_size: ::std::option::Option::None,
1551            pieces: ::std::vec::Vec::new(),
1552            pitch_range_min: ::std::option::Option::None,
1553            pitch_range_max: ::std::option::Option::None,
1554            volume_mb_min: ::std::option::Option::None,
1555            volume_mb_max: ::std::option::Option::None,
1556            sound_production: ::std::vec::Vec::new(),
1557            sound_production_parm1: ::std::vec::Vec::new(),
1558            sound_production_parm2: ::std::vec::Vec::new(),
1559            pitch_choice: ::std::vec::Vec::new(),
1560            pitch_choice_parm1: ::std::vec::Vec::new(),
1561            pitch_choice_parm2: ::std::vec::Vec::new(),
1562            tuning: ::std::vec::Vec::new(),
1563            tuning_parm: ::std::vec::Vec::new(),
1564            registers: ::std::vec::Vec::new(),
1565            description: ::std::option::Option::None,
1566            special_fields: ::protobuf::SpecialFields::new(),
1567        };
1568        &instance
1569    }
1570}
1571
1572impl ::protobuf::MessageFull for InstrumentDef {
1573    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
1574        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
1575        descriptor.get(|| file_descriptor().message_by_package_relative_name("InstrumentDef").unwrap()).clone()
1576    }
1577}
1578
1579impl ::std::fmt::Display for InstrumentDef {
1580    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1581        ::protobuf::text_format::fmt(self, f)
1582    }
1583}
1584
1585impl ::protobuf::reflect::ProtobufValue for InstrumentDef {
1586    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
1587}
1588
1589#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
1590// @@protoc_insertion_point(enum:ItemdefInstrument.PitchChoiceType)
1591pub enum PitchChoiceType {
1592    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.MEMBRANE_POSITION)
1593    MEMBRANE_POSITION = 0,
1594    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.SUBPART_CHOICE)
1595    SUBPART_CHOICE = 1,
1596    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.KEYBOARD)
1597    KEYBOARD = 2,
1598    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.STOPPING_FRET)
1599    STOPPING_FRET = 3,
1600    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.STOPPING_AGAINST_BODY)
1601    STOPPING_AGAINST_BODY = 4,
1602    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.STOPPING_HOLE)
1603    STOPPING_HOLE = 5,
1604    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.STOPPING_HOLE_KEY)
1605    STOPPING_HOLE_KEY = 6,
1606    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.SLIDE)
1607    SLIDE = 7,
1608    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.HARMONIC_SERIES)
1609    HARMONIC_SERIES = 8,
1610    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.VALVE_ROUTES_AIR)
1611    VALVE_ROUTES_AIR = 9,
1612    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.BP_IN_BELL)
1613    BP_IN_BELL = 10,
1614    // @@protoc_insertion_point(enum_value:ItemdefInstrument.PitchChoiceType.FOOT_PEDALS)
1615    FOOT_PEDALS = 11,
1616}
1617
1618impl ::protobuf::Enum for PitchChoiceType {
1619    const NAME: &'static str = "PitchChoiceType";
1620
1621    fn value(&self) -> i32 {
1622        *self as i32
1623    }
1624
1625    fn from_i32(value: i32) -> ::std::option::Option<PitchChoiceType> {
1626        match value {
1627            0 => ::std::option::Option::Some(PitchChoiceType::MEMBRANE_POSITION),
1628            1 => ::std::option::Option::Some(PitchChoiceType::SUBPART_CHOICE),
1629            2 => ::std::option::Option::Some(PitchChoiceType::KEYBOARD),
1630            3 => ::std::option::Option::Some(PitchChoiceType::STOPPING_FRET),
1631            4 => ::std::option::Option::Some(PitchChoiceType::STOPPING_AGAINST_BODY),
1632            5 => ::std::option::Option::Some(PitchChoiceType::STOPPING_HOLE),
1633            6 => ::std::option::Option::Some(PitchChoiceType::STOPPING_HOLE_KEY),
1634            7 => ::std::option::Option::Some(PitchChoiceType::SLIDE),
1635            8 => ::std::option::Option::Some(PitchChoiceType::HARMONIC_SERIES),
1636            9 => ::std::option::Option::Some(PitchChoiceType::VALVE_ROUTES_AIR),
1637            10 => ::std::option::Option::Some(PitchChoiceType::BP_IN_BELL),
1638            11 => ::std::option::Option::Some(PitchChoiceType::FOOT_PEDALS),
1639            _ => ::std::option::Option::None
1640        }
1641    }
1642
1643    fn from_str(str: &str) -> ::std::option::Option<PitchChoiceType> {
1644        match str {
1645            "MEMBRANE_POSITION" => ::std::option::Option::Some(PitchChoiceType::MEMBRANE_POSITION),
1646            "SUBPART_CHOICE" => ::std::option::Option::Some(PitchChoiceType::SUBPART_CHOICE),
1647            "KEYBOARD" => ::std::option::Option::Some(PitchChoiceType::KEYBOARD),
1648            "STOPPING_FRET" => ::std::option::Option::Some(PitchChoiceType::STOPPING_FRET),
1649            "STOPPING_AGAINST_BODY" => ::std::option::Option::Some(PitchChoiceType::STOPPING_AGAINST_BODY),
1650            "STOPPING_HOLE" => ::std::option::Option::Some(PitchChoiceType::STOPPING_HOLE),
1651            "STOPPING_HOLE_KEY" => ::std::option::Option::Some(PitchChoiceType::STOPPING_HOLE_KEY),
1652            "SLIDE" => ::std::option::Option::Some(PitchChoiceType::SLIDE),
1653            "HARMONIC_SERIES" => ::std::option::Option::Some(PitchChoiceType::HARMONIC_SERIES),
1654            "VALVE_ROUTES_AIR" => ::std::option::Option::Some(PitchChoiceType::VALVE_ROUTES_AIR),
1655            "BP_IN_BELL" => ::std::option::Option::Some(PitchChoiceType::BP_IN_BELL),
1656            "FOOT_PEDALS" => ::std::option::Option::Some(PitchChoiceType::FOOT_PEDALS),
1657            _ => ::std::option::Option::None
1658        }
1659    }
1660
1661    const VALUES: &'static [PitchChoiceType] = &[
1662        PitchChoiceType::MEMBRANE_POSITION,
1663        PitchChoiceType::SUBPART_CHOICE,
1664        PitchChoiceType::KEYBOARD,
1665        PitchChoiceType::STOPPING_FRET,
1666        PitchChoiceType::STOPPING_AGAINST_BODY,
1667        PitchChoiceType::STOPPING_HOLE,
1668        PitchChoiceType::STOPPING_HOLE_KEY,
1669        PitchChoiceType::SLIDE,
1670        PitchChoiceType::HARMONIC_SERIES,
1671        PitchChoiceType::VALVE_ROUTES_AIR,
1672        PitchChoiceType::BP_IN_BELL,
1673        PitchChoiceType::FOOT_PEDALS,
1674    ];
1675}
1676
1677impl ::protobuf::EnumFull for PitchChoiceType {
1678    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
1679        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
1680        descriptor.get(|| file_descriptor().enum_by_package_relative_name("PitchChoiceType").unwrap()).clone()
1681    }
1682
1683    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
1684        let index = *self as usize;
1685        Self::enum_descriptor().value_by_index(index)
1686    }
1687}
1688
1689impl ::std::default::Default for PitchChoiceType {
1690    fn default() -> Self {
1691        PitchChoiceType::MEMBRANE_POSITION
1692    }
1693}
1694
1695impl PitchChoiceType {
1696    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
1697        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<PitchChoiceType>("PitchChoiceType")
1698    }
1699}
1700
1701#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
1702// @@protoc_insertion_point(enum:ItemdefInstrument.SoundProductionType)
1703pub enum SoundProductionType {
1704    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.PLUCKED_BY_BP)
1705    PLUCKED_BY_BP = 0,
1706    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.PLUCKED)
1707    PLUCKED = 1,
1708    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BOWED)
1709    BOWED = 2,
1710    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.STRUCK_BY_BP)
1711    STRUCK_BY_BP = 3,
1712    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.STRUCK)
1713    STRUCK = 4,
1714    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.VIBRATE_BP_AGAINST_OPENING)
1715    VIBRATE_BP_AGAINST_OPENING = 5,
1716    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_AGAINST_FIPPLE)
1717    BLOW_AGAINST_FIPPLE = 6,
1718    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_OVER_OPENING_SIDE)
1719    BLOW_OVER_OPENING_SIDE = 7,
1720    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_OVER_OPENING_END)
1721    BLOW_OVER_OPENING_END = 8,
1722    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_OVER_SINGLE_REED)
1723    BLOW_OVER_SINGLE_REED = 9,
1724    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_OVER_DOUBLE_REED)
1725    BLOW_OVER_DOUBLE_REED = 10,
1726    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BLOW_OVER_FREE_REED)
1727    BLOW_OVER_FREE_REED = 11,
1728    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.STRUCK_TOGETHER)
1729    STRUCK_TOGETHER = 12,
1730    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.SHAKEN)
1731    SHAKEN = 13,
1732    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.SCRAPED)
1733    SCRAPED = 14,
1734    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.FRICTION)
1735    FRICTION = 15,
1736    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.RESONATOR)
1737    RESONATOR = 16,
1738    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.BAG_OVER_REED)
1739    BAG_OVER_REED = 17,
1740    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.AIR_OVER_REED)
1741    AIR_OVER_REED = 18,
1742    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.AIR_OVER_FREE_REED)
1743    AIR_OVER_FREE_REED = 19,
1744    // @@protoc_insertion_point(enum_value:ItemdefInstrument.SoundProductionType.AIR_AGAINST_FIPPLE)
1745    AIR_AGAINST_FIPPLE = 20,
1746}
1747
1748impl ::protobuf::Enum for SoundProductionType {
1749    const NAME: &'static str = "SoundProductionType";
1750
1751    fn value(&self) -> i32 {
1752        *self as i32
1753    }
1754
1755    fn from_i32(value: i32) -> ::std::option::Option<SoundProductionType> {
1756        match value {
1757            0 => ::std::option::Option::Some(SoundProductionType::PLUCKED_BY_BP),
1758            1 => ::std::option::Option::Some(SoundProductionType::PLUCKED),
1759            2 => ::std::option::Option::Some(SoundProductionType::BOWED),
1760            3 => ::std::option::Option::Some(SoundProductionType::STRUCK_BY_BP),
1761            4 => ::std::option::Option::Some(SoundProductionType::STRUCK),
1762            5 => ::std::option::Option::Some(SoundProductionType::VIBRATE_BP_AGAINST_OPENING),
1763            6 => ::std::option::Option::Some(SoundProductionType::BLOW_AGAINST_FIPPLE),
1764            7 => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_OPENING_SIDE),
1765            8 => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_OPENING_END),
1766            9 => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_SINGLE_REED),
1767            10 => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_DOUBLE_REED),
1768            11 => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_FREE_REED),
1769            12 => ::std::option::Option::Some(SoundProductionType::STRUCK_TOGETHER),
1770            13 => ::std::option::Option::Some(SoundProductionType::SHAKEN),
1771            14 => ::std::option::Option::Some(SoundProductionType::SCRAPED),
1772            15 => ::std::option::Option::Some(SoundProductionType::FRICTION),
1773            16 => ::std::option::Option::Some(SoundProductionType::RESONATOR),
1774            17 => ::std::option::Option::Some(SoundProductionType::BAG_OVER_REED),
1775            18 => ::std::option::Option::Some(SoundProductionType::AIR_OVER_REED),
1776            19 => ::std::option::Option::Some(SoundProductionType::AIR_OVER_FREE_REED),
1777            20 => ::std::option::Option::Some(SoundProductionType::AIR_AGAINST_FIPPLE),
1778            _ => ::std::option::Option::None
1779        }
1780    }
1781
1782    fn from_str(str: &str) -> ::std::option::Option<SoundProductionType> {
1783        match str {
1784            "PLUCKED_BY_BP" => ::std::option::Option::Some(SoundProductionType::PLUCKED_BY_BP),
1785            "PLUCKED" => ::std::option::Option::Some(SoundProductionType::PLUCKED),
1786            "BOWED" => ::std::option::Option::Some(SoundProductionType::BOWED),
1787            "STRUCK_BY_BP" => ::std::option::Option::Some(SoundProductionType::STRUCK_BY_BP),
1788            "STRUCK" => ::std::option::Option::Some(SoundProductionType::STRUCK),
1789            "VIBRATE_BP_AGAINST_OPENING" => ::std::option::Option::Some(SoundProductionType::VIBRATE_BP_AGAINST_OPENING),
1790            "BLOW_AGAINST_FIPPLE" => ::std::option::Option::Some(SoundProductionType::BLOW_AGAINST_FIPPLE),
1791            "BLOW_OVER_OPENING_SIDE" => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_OPENING_SIDE),
1792            "BLOW_OVER_OPENING_END" => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_OPENING_END),
1793            "BLOW_OVER_SINGLE_REED" => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_SINGLE_REED),
1794            "BLOW_OVER_DOUBLE_REED" => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_DOUBLE_REED),
1795            "BLOW_OVER_FREE_REED" => ::std::option::Option::Some(SoundProductionType::BLOW_OVER_FREE_REED),
1796            "STRUCK_TOGETHER" => ::std::option::Option::Some(SoundProductionType::STRUCK_TOGETHER),
1797            "SHAKEN" => ::std::option::Option::Some(SoundProductionType::SHAKEN),
1798            "SCRAPED" => ::std::option::Option::Some(SoundProductionType::SCRAPED),
1799            "FRICTION" => ::std::option::Option::Some(SoundProductionType::FRICTION),
1800            "RESONATOR" => ::std::option::Option::Some(SoundProductionType::RESONATOR),
1801            "BAG_OVER_REED" => ::std::option::Option::Some(SoundProductionType::BAG_OVER_REED),
1802            "AIR_OVER_REED" => ::std::option::Option::Some(SoundProductionType::AIR_OVER_REED),
1803            "AIR_OVER_FREE_REED" => ::std::option::Option::Some(SoundProductionType::AIR_OVER_FREE_REED),
1804            "AIR_AGAINST_FIPPLE" => ::std::option::Option::Some(SoundProductionType::AIR_AGAINST_FIPPLE),
1805            _ => ::std::option::Option::None
1806        }
1807    }
1808
1809    const VALUES: &'static [SoundProductionType] = &[
1810        SoundProductionType::PLUCKED_BY_BP,
1811        SoundProductionType::PLUCKED,
1812        SoundProductionType::BOWED,
1813        SoundProductionType::STRUCK_BY_BP,
1814        SoundProductionType::STRUCK,
1815        SoundProductionType::VIBRATE_BP_AGAINST_OPENING,
1816        SoundProductionType::BLOW_AGAINST_FIPPLE,
1817        SoundProductionType::BLOW_OVER_OPENING_SIDE,
1818        SoundProductionType::BLOW_OVER_OPENING_END,
1819        SoundProductionType::BLOW_OVER_SINGLE_REED,
1820        SoundProductionType::BLOW_OVER_DOUBLE_REED,
1821        SoundProductionType::BLOW_OVER_FREE_REED,
1822        SoundProductionType::STRUCK_TOGETHER,
1823        SoundProductionType::SHAKEN,
1824        SoundProductionType::SCRAPED,
1825        SoundProductionType::FRICTION,
1826        SoundProductionType::RESONATOR,
1827        SoundProductionType::BAG_OVER_REED,
1828        SoundProductionType::AIR_OVER_REED,
1829        SoundProductionType::AIR_OVER_FREE_REED,
1830        SoundProductionType::AIR_AGAINST_FIPPLE,
1831    ];
1832}
1833
1834impl ::protobuf::EnumFull for SoundProductionType {
1835    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
1836        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
1837        descriptor.get(|| file_descriptor().enum_by_package_relative_name("SoundProductionType").unwrap()).clone()
1838    }
1839
1840    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
1841        let index = *self as usize;
1842        Self::enum_descriptor().value_by_index(index)
1843    }
1844}
1845
1846impl ::std::default::Default for SoundProductionType {
1847    fn default() -> Self {
1848        SoundProductionType::PLUCKED_BY_BP
1849    }
1850}
1851
1852impl SoundProductionType {
1853    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
1854        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<SoundProductionType>("SoundProductionType")
1855    }
1856}
1857
1858#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
1859// @@protoc_insertion_point(enum:ItemdefInstrument.TuningType)
1860pub enum TuningType {
1861    // @@protoc_insertion_point(enum_value:ItemdefInstrument.TuningType.PEGS)
1862    PEGS = 0,
1863    // @@protoc_insertion_point(enum_value:ItemdefInstrument.TuningType.ADJUSTABLE_BRIDGES)
1864    ADJUSTABLE_BRIDGES = 1,
1865    // @@protoc_insertion_point(enum_value:ItemdefInstrument.TuningType.CROOKS)
1866    CROOKS = 2,
1867    // @@protoc_insertion_point(enum_value:ItemdefInstrument.TuningType.TIGHTENING)
1868    TIGHTENING = 3,
1869    // @@protoc_insertion_point(enum_value:ItemdefInstrument.TuningType.LEVERS)
1870    LEVERS = 4,
1871}
1872
1873impl ::protobuf::Enum for TuningType {
1874    const NAME: &'static str = "TuningType";
1875
1876    fn value(&self) -> i32 {
1877        *self as i32
1878    }
1879
1880    fn from_i32(value: i32) -> ::std::option::Option<TuningType> {
1881        match value {
1882            0 => ::std::option::Option::Some(TuningType::PEGS),
1883            1 => ::std::option::Option::Some(TuningType::ADJUSTABLE_BRIDGES),
1884            2 => ::std::option::Option::Some(TuningType::CROOKS),
1885            3 => ::std::option::Option::Some(TuningType::TIGHTENING),
1886            4 => ::std::option::Option::Some(TuningType::LEVERS),
1887            _ => ::std::option::Option::None
1888        }
1889    }
1890
1891    fn from_str(str: &str) -> ::std::option::Option<TuningType> {
1892        match str {
1893            "PEGS" => ::std::option::Option::Some(TuningType::PEGS),
1894            "ADJUSTABLE_BRIDGES" => ::std::option::Option::Some(TuningType::ADJUSTABLE_BRIDGES),
1895            "CROOKS" => ::std::option::Option::Some(TuningType::CROOKS),
1896            "TIGHTENING" => ::std::option::Option::Some(TuningType::TIGHTENING),
1897            "LEVERS" => ::std::option::Option::Some(TuningType::LEVERS),
1898            _ => ::std::option::Option::None
1899        }
1900    }
1901
1902    const VALUES: &'static [TuningType] = &[
1903        TuningType::PEGS,
1904        TuningType::ADJUSTABLE_BRIDGES,
1905        TuningType::CROOKS,
1906        TuningType::TIGHTENING,
1907        TuningType::LEVERS,
1908    ];
1909}
1910
1911impl ::protobuf::EnumFull for TuningType {
1912    fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
1913        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
1914        descriptor.get(|| file_descriptor().enum_by_package_relative_name("TuningType").unwrap()).clone()
1915    }
1916
1917    fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
1918        let index = *self as usize;
1919        Self::enum_descriptor().value_by_index(index)
1920    }
1921}
1922
1923impl ::std::default::Default for TuningType {
1924    fn default() -> Self {
1925        TuningType::PEGS
1926    }
1927}
1928
1929impl TuningType {
1930    fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
1931        ::protobuf::reflect::GeneratedEnumDescriptorData::new::<TuningType>("TuningType")
1932    }
1933}
1934
1935static file_descriptor_proto_data: &'static [u8] = b"\
1936    \n\x17ItemdefInstrument.proto\x12\x11ItemdefInstrument\"\xb5\x02\n\x0fIn\
1937    strumentFlags\x12)\n\x10indefinite_pitch\x18\x01\x20\x01(\x08R\x0findefi\
1938    nitePitch\x12,\n\x12placed_as_building\x18\x02\x20\x01(\x08R\x10placedAs\
1939    Building\x12\x1b\n\tmetal_mat\x18\x03\x20\x01(\x08R\x08metalMat\x12\x1b\
1940    \n\tstone_mat\x18\x04\x20\x01(\x08R\x08stoneMat\x12\x19\n\x08wood_mat\
1941    \x18\x05\x20\x01(\x08R\x07woodMat\x12\x1b\n\tglass_mat\x18\x06\x20\x01(\
1942    \x08R\x08glassMat\x12\x1f\n\x0bceramic_mat\x18\x07\x20\x01(\x08R\ncerami\
1943    cMat\x12\x1b\n\tshell_mat\x18\x08\x20\x01(\x08R\x08shellMat\x12\x19\n\
1944    \x08bone_mat\x18\t\x20\x01(\x08R\x07boneMat\"j\n\x0fInstrumentPiece\x12\
1945    \x12\n\x04type\x18\x01\x20\x01(\tR\x04type\x12\x0e\n\x02id\x18\x02\x20\
1946    \x01(\tR\x02id\x12\x12\n\x04name\x18\x03\x20\x01(\tR\x04name\x12\x1f\n\
1947    \x0bname_plural\x18\x04\x20\x01(\tR\nnamePlural\"d\n\x12InstrumentRegist\
1948    er\x12&\n\x0fpitch_range_min\x18\x01\x20\x01(\x05R\rpitchRangeMin\x12&\n\
1949    \x0fpitch_range_max\x18\x02\x20\x01(\x05R\rpitchRangeMax\"\x8d\x07\n\rIn\
1950    strumentDef\x128\n\x05flags\x18\x01\x20\x01(\x0b2\".ItemdefInstrument.In\
1951    strumentFlagsR\x05flags\x12\x12\n\x04size\x18\x02\x20\x01(\x05R\x04size\
1952    \x12\x14\n\x05value\x18\x03\x20\x01(\x05R\x05value\x12#\n\rmaterial_size\
1953    \x18\x04\x20\x01(\x05R\x0cmaterialSize\x12:\n\x06pieces\x18\x05\x20\x03(\
1954    \x0b2\".ItemdefInstrument.InstrumentPieceR\x06pieces\x12&\n\x0fpitch_ran\
1955    ge_min\x18\x06\x20\x01(\x05R\rpitchRangeMin\x12&\n\x0fpitch_range_max\
1956    \x18\x07\x20\x01(\x05R\rpitchRangeMax\x12\"\n\rvolume_mb_min\x18\x08\x20\
1957    \x01(\x05R\x0bvolumeMbMin\x12\"\n\rvolume_mb_max\x18\t\x20\x01(\x05R\x0b\
1958    volumeMbMax\x12Q\n\x10sound_production\x18\n\x20\x03(\x0e2&.ItemdefInstr\
1959    ument.SoundProductionTypeR\x0fsoundProduction\x124\n\x16sound_production\
1960    _parm1\x18\x0b\x20\x03(\tR\x14soundProductionParm1\x124\n\x16sound_produ\
1961    ction_parm2\x18\x0c\x20\x03(\tR\x14soundProductionParm2\x12E\n\x0cpitch_\
1962    choice\x18\r\x20\x03(\x0e2\".ItemdefInstrument.PitchChoiceTypeR\x0bpitch\
1963    Choice\x12,\n\x12pitch_choice_parm1\x18\x0e\x20\x03(\tR\x10pitchChoicePa\
1964    rm1\x12,\n\x12pitch_choice_parm2\x18\x0f\x20\x03(\tR\x10pitchChoiceParm2\
1965    \x125\n\x06tuning\x18\x10\x20\x03(\x0e2\x1d.ItemdefInstrument.TuningType\
1966    R\x06tuning\x12\x1f\n\x0btuning_parm\x18\x11\x20\x03(\tR\ntuningParm\x12\
1967    C\n\tregisters\x18\x12\x20\x03(\x0b2%.ItemdefInstrument.InstrumentRegist\
1968    erR\tregisters\x12\x20\n\x0bdescription\x18\x13\x20\x01(\tR\x0bdescripti\
1969    on*\xf9\x01\n\x0fPitchChoiceType\x12\x15\n\x11MEMBRANE_POSITION\x10\0\
1970    \x12\x12\n\x0eSUBPART_CHOICE\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\x12\
1971    \x11\n\rSTOPPING_FRET\x10\x03\x12\x19\n\x15STOPPING_AGAINST_BODY\x10\x04\
1972    \x12\x11\n\rSTOPPING_HOLE\x10\x05\x12\x15\n\x11STOPPING_HOLE_KEY\x10\x06\
1973    \x12\t\n\x05SLIDE\x10\x07\x12\x13\n\x0fHARMONIC_SERIES\x10\x08\x12\x14\n\
1974    \x10VALVE_ROUTES_AIR\x10\t\x12\x0e\n\nBP_IN_BELL\x10\n\x12\x0f\n\x0bFOOT\
1975    _PEDALS\x10\x0b*\xbe\x03\n\x13SoundProductionType\x12\x11\n\rPLUCKED_BY_\
1976    BP\x10\0\x12\x0b\n\x07PLUCKED\x10\x01\x12\t\n\x05BOWED\x10\x02\x12\x10\n\
1977    \x0cSTRUCK_BY_BP\x10\x03\x12\n\n\x06STRUCK\x10\x04\x12\x1e\n\x1aVIBRATE_\
1978    BP_AGAINST_OPENING\x10\x05\x12\x17\n\x13BLOW_AGAINST_FIPPLE\x10\x06\x12\
1979    \x1a\n\x16BLOW_OVER_OPENING_SIDE\x10\x07\x12\x19\n\x15BLOW_OVER_OPENING_\
1980    END\x10\x08\x12\x19\n\x15BLOW_OVER_SINGLE_REED\x10\t\x12\x19\n\x15BLOW_O\
1981    VER_DOUBLE_REED\x10\n\x12\x17\n\x13BLOW_OVER_FREE_REED\x10\x0b\x12\x13\n\
1982    \x0fSTRUCK_TOGETHER\x10\x0c\x12\n\n\x06SHAKEN\x10\r\x12\x0b\n\x07SCRAPED\
1983    \x10\x0e\x12\x0c\n\x08FRICTION\x10\x0f\x12\r\n\tRESONATOR\x10\x10\x12\
1984    \x11\n\rBAG_OVER_REED\x10\x11\x12\x11\n\rAIR_OVER_REED\x10\x12\x12\x16\n\
1985    \x12AIR_OVER_FREE_REED\x10\x13\x12\x16\n\x12AIR_AGAINST_FIPPLE\x10\x14*V\
1986    \n\nTuningType\x12\x08\n\x04PEGS\x10\0\x12\x16\n\x12ADJUSTABLE_BRIDGES\
1987    \x10\x01\x12\n\n\x06CROOKS\x10\x02\x12\x0e\n\nTIGHTENING\x10\x03\x12\n\n\
1988    \x06LEVERS\x10\x04B\x02H\x03b\x06proto2\
1989";
1990
1991/// `FileDescriptorProto` object which was a source for this generated file
1992fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1993    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
1994    file_descriptor_proto_lazy.get(|| {
1995        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1996    })
1997}
1998
1999/// `FileDescriptor` object which allows dynamic access to files
2000pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
2001    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
2002    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
2003    file_descriptor.get(|| {
2004        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
2005            let mut deps = ::std::vec::Vec::with_capacity(0);
2006            let mut messages = ::std::vec::Vec::with_capacity(4);
2007            messages.push(InstrumentFlags::generated_message_descriptor_data());
2008            messages.push(InstrumentPiece::generated_message_descriptor_data());
2009            messages.push(InstrumentRegister::generated_message_descriptor_data());
2010            messages.push(InstrumentDef::generated_message_descriptor_data());
2011            let mut enums = ::std::vec::Vec::with_capacity(3);
2012            enums.push(PitchChoiceType::generated_enum_descriptor_data());
2013            enums.push(SoundProductionType::generated_enum_descriptor_data());
2014            enums.push(TuningType::generated_enum_descriptor_data());
2015            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
2016                file_descriptor_proto(),
2017                deps,
2018                messages,
2019                enums,
2020            )
2021        });
2022        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
2023    })
2024}