lua_protobuf_rs/descriptor_proto/
enum_options.rs

1use crate::descriptor_proto::uninterpreted_option::LuaUninterpretedOption;
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::EnumOptions;
7
8#[derive(PartialEq, Clone, Default, Debug, Deref, DerefMut, From, Into)]
9pub struct LuaEnumOptions(pub EnumOptions);
10
11impl LuaUserData for LuaEnumOptions {
12    fn add_fields<F: UserDataFields<Self>>(fields: &mut F) {
13        fields.add_field_method_get("allow_alias", |_, this| {
14            Ok(this.allow_alias)
15        });
16
17        fields.add_field_method_get("deprecated", |_, this| {
18            Ok(this.deprecated)
19        });
20
21        fields.add_field_method_get("uninterpreted_option", |_, this| {
22            let uninterpreted_option = this.uninterpreted_option.iter().map(Clone::clone).map(Into::into).collect::<Vec<LuaUninterpretedOption>>();
23            Ok(uninterpreted_option)
24        })
25    }
26
27    fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
28        methods.add_meta_method(MetaMethod::ToString, |_, this, ()| {
29            Ok(this.to_string())
30        });
31
32        methods.add_method("allow_alias", |_, this, ()| {
33            Ok(this.allow_alias())
34        });
35
36        methods.add_method_mut("clear_allow_alias", |_, this, ()| {
37            this.clear_allow_alias();
38            Ok(())
39        });
40
41        methods.add_method("has_allow_alias", |_, this, ()| {
42            Ok(this.has_allow_alias())
43        });
44
45        methods.add_method_mut("set_allow_alias", |_, this, value: bool| {
46            this.set_allow_alias(value);
47            Ok(())
48        });
49
50        methods.add_method("deprecated", |_, this, ()| {
51            Ok(this.deprecated())
52        });
53
54        methods.add_method_mut("clear_deprecated", |_, this, ()| {
55            this.clear_deprecated();
56            Ok(())
57        });
58
59        methods.add_method("has_deprecated", |_, this, ()| {
60            Ok(this.has_deprecated())
61        });
62
63        methods.add_method_mut("set_deprecated", |_, this, value: bool| {
64            this.set_deprecated(value);
65            Ok(())
66        });
67
68        add_message_trait_method!(methods, EnumOptions, LuaEnumOptions);
69
70        add_message_dyn_trait_method!(methods, EnumOptions, LuaEnumOptions);
71
72        add_message_full_trait_method!(methods, EnumOptions, LuaEnumOptions);
73    }
74}