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