lua_protobuf_rs/descriptor_proto/
uninterpreted_option.rs

1use crate::descriptor_proto::name_part::LuaNamePart;
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::UninterpretedOption;
7
8#[derive(PartialEq, Clone, Default, Debug, Deref, DerefMut, From, Into)]
9pub struct LuaUninterpretedOption(pub UninterpretedOption);
10
11impl LuaUserData for LuaUninterpretedOption {
12    fn add_fields<F: UserDataFields<Self>>(fields: &mut F) {
13        fields.add_field_method_get("name", |_, this| {
14            let name = this.name.iter().map(Clone::clone).map(Into::into).collect::<Vec<LuaNamePart>>();
15            Ok(name)
16        });
17
18        fields.add_field_method_get("identifier_value", |_, this| {
19            Ok(this.identifier_value.clone())
20        });
21
22        fields.add_field_method_get("positive_int_value", |_, this| {
23            Ok(this.positive_int_value.clone())
24        });
25
26        fields.add_field_method_get("negative_int_value", |_, this| {
27            Ok(this.negative_int_value.clone())
28        });
29
30        fields.add_field_method_get("double_value", |_, this| {
31            Ok(this.double_value.clone())
32        });
33
34        fields.add_field_method_get("string_value", |_, this| {
35            Ok(this.string_value.as_ref().map(|v| String::from_utf8_lossy(v).to_string()))
36        });
37
38        fields.add_field_method_get("aggregate_value", |_, this| {
39            Ok(this.aggregate_value.clone())
40        });
41    }
42
43    fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
44        methods.add_meta_method(MetaMethod::ToString, |_, this, ()| {
45            Ok(this.to_string())
46        });
47
48        methods.add_method("identifier_value", |_, this, ()| {
49            Ok(this.identifier_value().to_string())
50        });
51
52        methods.add_method("identifier_value", |_, this, ()| {
53            Ok(this.identifier_value().to_string())
54        });
55
56        methods.add_method_mut("clear_identifier_value", |_, this, ()| {
57            this.clear_identifier_value();
58            Ok(())
59        });
60
61        methods.add_method("has_identifier_value", |_, this, ()| {
62            Ok(this.has_identifier_value())
63        });
64
65        methods.add_method_mut("set_identifier_value", |_, this, value: String| {
66            this.set_identifier_value(value);
67            Ok(())
68        });
69
70        methods.add_method_mut("mut_identifier_value", |_, this, ()| {
71            Ok(this.mut_identifier_value().clone())
72        });
73
74        methods.add_method_mut("take_identifier_value", |_, this, ()| {
75            Ok(this.take_identifier_value())
76        });
77
78        methods.add_method("positive_int_value", |_, this, ()| {
79            Ok(this.positive_int_value())
80        });
81
82        methods.add_method_mut("clear_positive_int_value", |_, this, ()| {
83            this.clear_positive_int_value();
84            Ok(())
85        });
86
87        methods.add_method("has_positive_int_value", |_, this, ()| {
88            Ok(this.has_positive_int_value())
89        });
90
91        methods.add_method_mut("set_positive_int_value", |_, this, value: u64| {
92            this.set_positive_int_value(value);
93            Ok(())
94        });
95
96        methods.add_method("negative_int_value", |_, this, ()| {
97            Ok(this.negative_int_value())
98        });
99
100        methods.add_method_mut("clear_negative_int_value", |_, this, ()| {
101            this.clear_negative_int_value();
102            Ok(())
103        });
104
105        methods.add_method("has_negative_int_value", |_, this, ()| {
106            Ok(this.has_negative_int_value())
107        });
108
109        methods.add_method_mut("set_negative_int_value", |_, this, value: i64| {
110            this.set_negative_int_value(value);
111            Ok(())
112        });
113
114        methods.add_method("double_value", |_, this, ()| {
115            Ok(this.double_value())
116        });
117
118        methods.add_method_mut("clear_double_value", |_, this, ()| {
119            this.clear_double_value();
120            Ok(())
121        });
122
123        methods.add_method("has_double_value", |_, this, ()| {
124            Ok(this.has_double_value())
125        });
126
127        methods.add_method_mut("set_double_value", |_, this, value: f64| {
128            this.set_double_value(value);
129            Ok(())
130        });
131
132        methods.add_method("string_value", |_, this, ()| {
133            Ok(this.string_value().to_vec())
134        });
135
136        methods.add_method_mut("clear_string_value", |_, this, ()| {
137            this.clear_string_value();
138            Ok(())
139        });
140
141        methods.add_method("has_string_value", |_, this, ()| {
142            Ok(this.has_string_value())
143        });
144
145        methods.add_method_mut("set_string_value", |_, this, value: Vec<u8>| {
146            this.set_string_value(value);
147            Ok(())
148        });
149
150        methods.add_method_mut("mut_string_value", |_, this, ()| {
151            Ok(this.mut_string_value().clone())
152        });
153
154        methods.add_method_mut("take_string_value", |_, this, ()| {
155            Ok(this.take_string_value())
156        });
157
158        methods.add_method("aggregate_value", |_, this, ()| {
159            Ok(this.aggregate_value().to_string())
160        });
161
162        methods.add_method_mut("clear_aggregate_value", |_, this, ()| {
163            this.clear_aggregate_value();
164            Ok(())
165        });
166
167        methods.add_method("has_aggregate_value", |_, this, ()| {
168            Ok(this.has_aggregate_value())
169        });
170
171        methods.add_method_mut("set_aggregate_value", |_, this, value: String| {
172            this.set_aggregate_value(value);
173            Ok(())
174        });
175
176        methods.add_method_mut("mut_aggregate_value", |_, this, ()| {
177            Ok(this.mut_aggregate_value().clone())
178        });
179
180        methods.add_method_mut("take_aggregate_value", |_, this, ()| {
181            Ok(this.take_aggregate_value())
182        });
183
184        add_message_trait_method!(methods, UninterpretedOption, LuaUninterpretedOption);
185
186        add_message_dyn_trait_method!(methods, UninterpretedOption, LuaUninterpretedOption);
187
188        add_message_full_trait_method!(methods, UninterpretedOption, LuaUninterpretedOption);
189    }
190}