lua_protobuf_rs/descriptor_proto/
enum_options.rs

1use 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}