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