lua_protobuf_rs/descriptor_proto/
extension_range.rs1use 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}