gz_msgs/gz_msgs9/
friction.rs

1// This file is generated by rust-protobuf 3.7.2. Do not edit
2// .proto file is parsed by protoc 3.21.12
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 `gz/msgs/friction.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#[derive(::gz_msgs_common::GzMessage)]
28// @@protoc_insertion_point(message:gz.msgs.Friction)
29#[derive(PartialEq,Clone,Default,Debug)]
30pub struct Friction {
31    // message fields
32    // @@protoc_insertion_point(field:gz.msgs.Friction.header)
33    pub header: ::protobuf::MessageField<super::header::Header>,
34    // @@protoc_insertion_point(field:gz.msgs.Friction.mu)
35    pub mu: f64,
36    // @@protoc_insertion_point(field:gz.msgs.Friction.mu2)
37    pub mu2: f64,
38    // @@protoc_insertion_point(field:gz.msgs.Friction.fdir1)
39    pub fdir1: ::protobuf::MessageField<super::vector3d::Vector3d>,
40    // @@protoc_insertion_point(field:gz.msgs.Friction.slip1)
41    pub slip1: f64,
42    // @@protoc_insertion_point(field:gz.msgs.Friction.slip2)
43    pub slip2: f64,
44    // @@protoc_insertion_point(field:gz.msgs.Friction.torsional)
45    pub torsional: ::protobuf::MessageField<friction::Torsional>,
46    // special fields
47    // @@protoc_insertion_point(special_field:gz.msgs.Friction.special_fields)
48    pub special_fields: ::protobuf::SpecialFields,
49}
50
51impl<'a> ::std::default::Default for &'a Friction {
52    fn default() -> &'a Friction {
53        <Friction as ::protobuf::Message>::default_instance()
54    }
55}
56
57impl Friction {
58    pub fn new() -> Friction {
59        ::std::default::Default::default()
60    }
61
62    fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
63        let mut fields = ::std::vec::Vec::with_capacity(7);
64        let mut oneofs = ::std::vec::Vec::with_capacity(0);
65        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::header::Header>(
66            "header",
67            |m: &Friction| { &m.header },
68            |m: &mut Friction| { &mut m.header },
69        ));
70        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
71            "mu",
72            |m: &Friction| { &m.mu },
73            |m: &mut Friction| { &mut m.mu },
74        ));
75        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
76            "mu2",
77            |m: &Friction| { &m.mu2 },
78            |m: &mut Friction| { &mut m.mu2 },
79        ));
80        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, super::vector3d::Vector3d>(
81            "fdir1",
82            |m: &Friction| { &m.fdir1 },
83            |m: &mut Friction| { &mut m.fdir1 },
84        ));
85        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
86            "slip1",
87            |m: &Friction| { &m.slip1 },
88            |m: &mut Friction| { &mut m.slip1 },
89        ));
90        fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
91            "slip2",
92            |m: &Friction| { &m.slip2 },
93            |m: &mut Friction| { &mut m.slip2 },
94        ));
95        fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, friction::Torsional>(
96            "torsional",
97            |m: &Friction| { &m.torsional },
98            |m: &mut Friction| { &mut m.torsional },
99        ));
100        ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Friction>(
101            "Friction",
102            fields,
103            oneofs,
104        )
105    }
106}
107
108impl ::protobuf::Message for Friction {
109    const NAME: &'static str = "Friction";
110
111    fn is_initialized(&self) -> bool {
112        true
113    }
114
115    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
116        while let Some(tag) = is.read_raw_tag_or_eof()? {
117            match tag {
118                10 => {
119                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.header)?;
120                },
121                17 => {
122                    self.mu = is.read_double()?;
123                },
124                25 => {
125                    self.mu2 = is.read_double()?;
126                },
127                34 => {
128                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.fdir1)?;
129                },
130                41 => {
131                    self.slip1 = is.read_double()?;
132                },
133                49 => {
134                    self.slip2 = is.read_double()?;
135                },
136                58 => {
137                    ::protobuf::rt::read_singular_message_into_field(is, &mut self.torsional)?;
138                },
139                tag => {
140                    ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
141                },
142            };
143        }
144        ::std::result::Result::Ok(())
145    }
146
147    // Compute sizes of nested messages
148    #[allow(unused_variables)]
149    fn compute_size(&self) -> u64 {
150        let mut my_size = 0;
151        if let Some(v) = self.header.as_ref() {
152            let len = v.compute_size();
153            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
154        }
155        if self.mu != 0. {
156            my_size += 1 + 8;
157        }
158        if self.mu2 != 0. {
159            my_size += 1 + 8;
160        }
161        if let Some(v) = self.fdir1.as_ref() {
162            let len = v.compute_size();
163            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
164        }
165        if self.slip1 != 0. {
166            my_size += 1 + 8;
167        }
168        if self.slip2 != 0. {
169            my_size += 1 + 8;
170        }
171        if let Some(v) = self.torsional.as_ref() {
172            let len = v.compute_size();
173            my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
174        }
175        my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
176        self.special_fields.cached_size().set(my_size as u32);
177        my_size
178    }
179
180    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
181        if let Some(v) = self.header.as_ref() {
182            ::protobuf::rt::write_message_field_with_cached_size(1, v, os)?;
183        }
184        if self.mu != 0. {
185            os.write_double(2, self.mu)?;
186        }
187        if self.mu2 != 0. {
188            os.write_double(3, self.mu2)?;
189        }
190        if let Some(v) = self.fdir1.as_ref() {
191            ::protobuf::rt::write_message_field_with_cached_size(4, v, os)?;
192        }
193        if self.slip1 != 0. {
194            os.write_double(5, self.slip1)?;
195        }
196        if self.slip2 != 0. {
197            os.write_double(6, self.slip2)?;
198        }
199        if let Some(v) = self.torsional.as_ref() {
200            ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?;
201        }
202        os.write_unknown_fields(self.special_fields.unknown_fields())?;
203        ::std::result::Result::Ok(())
204    }
205
206    fn special_fields(&self) -> &::protobuf::SpecialFields {
207        &self.special_fields
208    }
209
210    fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
211        &mut self.special_fields
212    }
213
214    fn new() -> Friction {
215        Friction::new()
216    }
217
218    fn clear(&mut self) {
219        self.header.clear();
220        self.mu = 0.;
221        self.mu2 = 0.;
222        self.fdir1.clear();
223        self.slip1 = 0.;
224        self.slip2 = 0.;
225        self.torsional.clear();
226        self.special_fields.clear();
227    }
228
229    fn default_instance() -> &'static Friction {
230        static instance: Friction = Friction {
231            header: ::protobuf::MessageField::none(),
232            mu: 0.,
233            mu2: 0.,
234            fdir1: ::protobuf::MessageField::none(),
235            slip1: 0.,
236            slip2: 0.,
237            torsional: ::protobuf::MessageField::none(),
238            special_fields: ::protobuf::SpecialFields::new(),
239        };
240        &instance
241    }
242}
243
244impl ::protobuf::MessageFull for Friction {
245    fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
246        static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
247        descriptor.get(|| file_descriptor().message_by_package_relative_name("Friction").unwrap()).clone()
248    }
249}
250
251impl ::std::fmt::Display for Friction {
252    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
253        ::protobuf::text_format::fmt(self, f)
254    }
255}
256
257impl ::protobuf::reflect::ProtobufValue for Friction {
258    type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
259}
260
261/// Nested message and enums of message `Friction`
262pub mod friction {
263    #[derive(::gz_msgs_common::GzMessage)]
264    // @@protoc_insertion_point(message:gz.msgs.Friction.Torsional)
265    #[derive(PartialEq,Clone,Default,Debug)]
266    pub struct Torsional {
267        // message fields
268        // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.coefficient)
269        pub coefficient: f64,
270        // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.use_patch_radius)
271        pub use_patch_radius: bool,
272        // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.patch_radius)
273        pub patch_radius: f64,
274        // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.surface_radius)
275        pub surface_radius: f64,
276        // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.ode)
277        pub ode: ::protobuf::MessageField<torsional::ODE>,
278        // special fields
279        // @@protoc_insertion_point(special_field:gz.msgs.Friction.Torsional.special_fields)
280        pub special_fields: ::protobuf::SpecialFields,
281    }
282
283    impl<'a> ::std::default::Default for &'a Torsional {
284        fn default() -> &'a Torsional {
285            <Torsional as ::protobuf::Message>::default_instance()
286        }
287    }
288
289    impl Torsional {
290        pub fn new() -> Torsional {
291            ::std::default::Default::default()
292        }
293
294        pub(in super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
295            let mut fields = ::std::vec::Vec::with_capacity(5);
296            let mut oneofs = ::std::vec::Vec::with_capacity(0);
297            fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
298                "coefficient",
299                |m: &Torsional| { &m.coefficient },
300                |m: &mut Torsional| { &mut m.coefficient },
301            ));
302            fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
303                "use_patch_radius",
304                |m: &Torsional| { &m.use_patch_radius },
305                |m: &mut Torsional| { &mut m.use_patch_radius },
306            ));
307            fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
308                "patch_radius",
309                |m: &Torsional| { &m.patch_radius },
310                |m: &mut Torsional| { &mut m.patch_radius },
311            ));
312            fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
313                "surface_radius",
314                |m: &Torsional| { &m.surface_radius },
315                |m: &mut Torsional| { &mut m.surface_radius },
316            ));
317            fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, torsional::ODE>(
318                "ode",
319                |m: &Torsional| { &m.ode },
320                |m: &mut Torsional| { &mut m.ode },
321            ));
322            ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Torsional>(
323                "Friction.Torsional",
324                fields,
325                oneofs,
326            )
327        }
328    }
329
330    impl ::protobuf::Message for Torsional {
331        const NAME: &'static str = "Torsional";
332
333        fn is_initialized(&self) -> bool {
334            true
335        }
336
337        fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
338            while let Some(tag) = is.read_raw_tag_or_eof()? {
339                match tag {
340                    9 => {
341                        self.coefficient = is.read_double()?;
342                    },
343                    16 => {
344                        self.use_patch_radius = is.read_bool()?;
345                    },
346                    25 => {
347                        self.patch_radius = is.read_double()?;
348                    },
349                    33 => {
350                        self.surface_radius = is.read_double()?;
351                    },
352                    42 => {
353                        ::protobuf::rt::read_singular_message_into_field(is, &mut self.ode)?;
354                    },
355                    tag => {
356                        ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
357                    },
358                };
359            }
360            ::std::result::Result::Ok(())
361        }
362
363        // Compute sizes of nested messages
364        #[allow(unused_variables)]
365        fn compute_size(&self) -> u64 {
366            let mut my_size = 0;
367            if self.coefficient != 0. {
368                my_size += 1 + 8;
369            }
370            if self.use_patch_radius != false {
371                my_size += 1 + 1;
372            }
373            if self.patch_radius != 0. {
374                my_size += 1 + 8;
375            }
376            if self.surface_radius != 0. {
377                my_size += 1 + 8;
378            }
379            if let Some(v) = self.ode.as_ref() {
380                let len = v.compute_size();
381                my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len;
382            }
383            my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
384            self.special_fields.cached_size().set(my_size as u32);
385            my_size
386        }
387
388        fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
389            if self.coefficient != 0. {
390                os.write_double(1, self.coefficient)?;
391            }
392            if self.use_patch_radius != false {
393                os.write_bool(2, self.use_patch_radius)?;
394            }
395            if self.patch_radius != 0. {
396                os.write_double(3, self.patch_radius)?;
397            }
398            if self.surface_radius != 0. {
399                os.write_double(4, self.surface_radius)?;
400            }
401            if let Some(v) = self.ode.as_ref() {
402                ::protobuf::rt::write_message_field_with_cached_size(5, v, os)?;
403            }
404            os.write_unknown_fields(self.special_fields.unknown_fields())?;
405            ::std::result::Result::Ok(())
406        }
407
408        fn special_fields(&self) -> &::protobuf::SpecialFields {
409            &self.special_fields
410        }
411
412        fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
413            &mut self.special_fields
414        }
415
416        fn new() -> Torsional {
417            Torsional::new()
418        }
419
420        fn clear(&mut self) {
421            self.coefficient = 0.;
422            self.use_patch_radius = false;
423            self.patch_radius = 0.;
424            self.surface_radius = 0.;
425            self.ode.clear();
426            self.special_fields.clear();
427        }
428
429        fn default_instance() -> &'static Torsional {
430            static instance: Torsional = Torsional {
431                coefficient: 0.,
432                use_patch_radius: false,
433                patch_radius: 0.,
434                surface_radius: 0.,
435                ode: ::protobuf::MessageField::none(),
436                special_fields: ::protobuf::SpecialFields::new(),
437            };
438            &instance
439        }
440    }
441
442    impl ::protobuf::MessageFull for Torsional {
443        fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
444            static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
445            descriptor.get(|| super::file_descriptor().message_by_package_relative_name("Friction.Torsional").unwrap()).clone()
446        }
447    }
448
449    impl ::std::fmt::Display for Torsional {
450        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
451            ::protobuf::text_format::fmt(self, f)
452        }
453    }
454
455    impl ::protobuf::reflect::ProtobufValue for Torsional {
456        type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
457    }
458
459    /// Nested message and enums of message `Torsional`
460    pub mod torsional {
461        #[derive(::gz_msgs_common::GzMessage)]
462        // @@protoc_insertion_point(message:gz.msgs.Friction.Torsional.ODE)
463        #[derive(PartialEq,Clone,Default,Debug)]
464        pub struct ODE {
465            // message fields
466            // @@protoc_insertion_point(field:gz.msgs.Friction.Torsional.ODE.slip)
467            pub slip: f64,
468            // special fields
469            // @@protoc_insertion_point(special_field:gz.msgs.Friction.Torsional.ODE.special_fields)
470            pub special_fields: ::protobuf::SpecialFields,
471        }
472
473        impl<'a> ::std::default::Default for &'a ODE {
474            fn default() -> &'a ODE {
475                <ODE as ::protobuf::Message>::default_instance()
476            }
477        }
478
479        impl ODE {
480            pub fn new() -> ODE {
481                ::std::default::Default::default()
482            }
483
484            pub(in super::super) fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
485                let mut fields = ::std::vec::Vec::with_capacity(1);
486                let mut oneofs = ::std::vec::Vec::with_capacity(0);
487                fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>(
488                    "slip",
489                    |m: &ODE| { &m.slip },
490                    |m: &mut ODE| { &mut m.slip },
491                ));
492                ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ODE>(
493                    "Friction.Torsional.ODE",
494                    fields,
495                    oneofs,
496                )
497            }
498        }
499
500        impl ::protobuf::Message for ODE {
501            const NAME: &'static str = "ODE";
502
503            fn is_initialized(&self) -> bool {
504                true
505            }
506
507            fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
508                while let Some(tag) = is.read_raw_tag_or_eof()? {
509                    match tag {
510                        9 => {
511                            self.slip = is.read_double()?;
512                        },
513                        tag => {
514                            ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
515                        },
516                    };
517                }
518                ::std::result::Result::Ok(())
519            }
520
521            // Compute sizes of nested messages
522            #[allow(unused_variables)]
523            fn compute_size(&self) -> u64 {
524                let mut my_size = 0;
525                if self.slip != 0. {
526                    my_size += 1 + 8;
527                }
528                my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
529                self.special_fields.cached_size().set(my_size as u32);
530                my_size
531            }
532
533            fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
534                if self.slip != 0. {
535                    os.write_double(1, self.slip)?;
536                }
537                os.write_unknown_fields(self.special_fields.unknown_fields())?;
538                ::std::result::Result::Ok(())
539            }
540
541            fn special_fields(&self) -> &::protobuf::SpecialFields {
542                &self.special_fields
543            }
544
545            fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
546                &mut self.special_fields
547            }
548
549            fn new() -> ODE {
550                ODE::new()
551            }
552
553            fn clear(&mut self) {
554                self.slip = 0.;
555                self.special_fields.clear();
556            }
557
558            fn default_instance() -> &'static ODE {
559                static instance: ODE = ODE {
560                    slip: 0.,
561                    special_fields: ::protobuf::SpecialFields::new(),
562                };
563                &instance
564            }
565        }
566
567        impl ::protobuf::MessageFull for ODE {
568            fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
569                static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
570                descriptor.get(|| super::super::file_descriptor().message_by_package_relative_name("Friction.Torsional.ODE").unwrap()).clone()
571            }
572        }
573
574        impl ::std::fmt::Display for ODE {
575            fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
576                ::protobuf::text_format::fmt(self, f)
577            }
578        }
579
580        impl ::protobuf::reflect::ProtobufValue for ODE {
581            type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
582        }
583    }
584}
585
586static file_descriptor_proto_data: &'static [u8] = b"\
587    \n\x16gz/msgs/friction.proto\x12\x07gz.msgs\x1a\x16gz/msgs/vector3d.prot\
588    o\x1a\x14gz/msgs/header.proto\"\xd7\x03\n\x08Friction\x12'\n\x06header\
589    \x18\x01\x20\x01(\x0b2\x0f.gz.msgs.HeaderR\x06header\x12\x0e\n\x02mu\x18\
590    \x02\x20\x01(\x01R\x02mu\x12\x10\n\x03mu2\x18\x03\x20\x01(\x01R\x03mu2\
591    \x12'\n\x05fdir1\x18\x04\x20\x01(\x0b2\x11.gz.msgs.Vector3dR\x05fdir1\
592    \x12\x14\n\x05slip1\x18\x05\x20\x01(\x01R\x05slip1\x12\x14\n\x05slip2\
593    \x18\x06\x20\x01(\x01R\x05slip2\x129\n\ttorsional\x18\x07\x20\x01(\x0b2\
594    \x1b.gz.msgs.Friction.TorsionalR\ttorsional\x1a\xef\x01\n\tTorsional\x12\
595    \x20\n\x0bcoefficient\x18\x01\x20\x01(\x01R\x0bcoefficient\x12(\n\x10use\
596    _patch_radius\x18\x02\x20\x01(\x08R\x0eusePatchRadius\x12!\n\x0cpatch_ra\
597    dius\x18\x03\x20\x01(\x01R\x0bpatchRadius\x12%\n\x0esurface_radius\x18\
598    \x04\x20\x01(\x01R\rsurfaceRadius\x121\n\x03ode\x18\x05\x20\x01(\x0b2\
599    \x1f.gz.msgs.Friction.Torsional.ODER\x03ode\x1a\x19\n\x03ODE\x12\x12\n\
600    \x04slip\x18\x01\x20\x01(\x01R\x04slipB\x1d\n\x0bcom.gz.msgsB\x0eFrictio\
601    nProtosb\x06proto3\
602";
603
604/// `FileDescriptorProto` object which was a source for this generated file
605fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
606    static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
607    file_descriptor_proto_lazy.get(|| {
608        ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
609    })
610}
611
612/// `FileDescriptor` object which allows dynamic access to files
613pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
614    static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
615    static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
616    file_descriptor.get(|| {
617        let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
618            let mut deps = ::std::vec::Vec::with_capacity(2);
619            deps.push(super::vector3d::file_descriptor().clone());
620            deps.push(super::header::file_descriptor().clone());
621            let mut messages = ::std::vec::Vec::with_capacity(3);
622            messages.push(Friction::generated_message_descriptor_data());
623            messages.push(friction::Torsional::generated_message_descriptor_data());
624            messages.push(friction::torsional::ODE::generated_message_descriptor_data());
625            let mut enums = ::std::vec::Vec::with_capacity(0);
626            ::protobuf::reflect::GeneratedFileDescriptor::new_generated(
627                file_descriptor_proto(),
628                deps,
629                messages,
630                enums,
631            )
632        });
633        ::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
634    })
635}