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