lua_protobuf_rs/descriptor_proto/
extension_range.rs

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