lua_protobuf_rs/descriptor_proto/
extension_range.rs

1use crate::descriptor_proto::extension_options::LuaExtensionRangeOptions;
2use crate::{
3    add_message_dyn_trait_method, add_message_full_trait_method, add_message_trait_method,
4};
5use derive_more::{Deref, DerefMut, From, Into};
6use mlua::prelude::LuaUserData;
7use mlua::{MetaMethod, UserDataFields, UserDataMethods};
8use protobuf::descriptor::descriptor_proto::ExtensionRange;
9
10#[derive(PartialEq, Clone, Default, Debug, Deref, DerefMut, From, Into)]
11pub struct LuaExtensionRange(pub ExtensionRange);
12
13impl LuaUserData for LuaExtensionRange {
14    fn add_fields<F: UserDataFields<Self>>(fields: &mut F) {
15        fields.add_field_method_get("start", |_, this| Ok(this.start));
16        fields.add_field_method_get("end", |_, this| Ok(this.end));
17        fields.add_field_method_get("options", |_, this| {
18            Ok::<Option<LuaExtensionRangeOptions>, _>(
19                this.options.clone().into_option().map(Into::into),
20            )
21        });
22    }
23
24    fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
25        methods.add_meta_method(MetaMethod::ToString, |_, this, ()| Ok(this.to_string()));
26
27        methods.add_method("start", |_, this, ()| Ok(this.start()));
28
29        methods.add_method("has_start", |_, this, ()| Ok(this.has_start()));
30
31        methods.add_method_mut("clear_start", |_, this, ()| {
32            this.clear_start();
33            Ok(())
34        });
35
36        methods.add_method_mut("set_start", |_, this, value: i32| {
37            this.set_start(value);
38            Ok(())
39        });
40
41        methods.add_method("end", |_, this, ()| Ok(this.end()));
42
43        methods.add_method("has_end", |_, this, ()| Ok(this.has_end()));
44
45        methods.add_method_mut("clear_end", |_, this, ()| {
46            this.clear_end();
47            Ok(())
48        });
49
50        methods.add_method_mut("set_end", |_, this, value: i32| {
51            this.set_end(value);
52            Ok(())
53        });
54
55        add_message_trait_method!(methods, ExtensionRange, LuaExtensionRange);
56
57        add_message_dyn_trait_method!(methods, ExtensionRange, LuaExtensionRange);
58
59        add_message_full_trait_method!(methods, ExtensionRange, LuaExtensionRange);
60    }
61}