1use crate::lowlevel;
9use crate::highlevel;
10use crate::serde::DeserializeErrorCause;
11use crate::translate_util::*;
12use num_traits::FromPrimitive;
13
14pub fn raise_command(lowlevel: &lowlevel::Command) -> Result<highlevel::Command, DeserializeErrorCause> {
15 match lowlevel {
16 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
17 name == "TESTEX"
18 && delimiter == &None
19 => {
20 Ok(highlevel::Command::Testex {
21 })
22 },
23 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
24 name == "TESTEXEXT"
25 && delimiter == &None
26 => {
27 Ok(highlevel::Command::Testexext {
28 })
29 },
30 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
31 name == "TESTNEX"
32 && delimiter == &None
33 => {
34 Ok(highlevel::Command::TestCommand {
35 })
36 },
37 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
38 name == "TESTEXEXTFI"
39 && delimiter == &Some(String::from("="))
40 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
41 => {
42 let arg_vec = extract_vec_from_args(&arguments)?;
43 let field_option = arg_vec.get(0);
44 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
45 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
46 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
47 Ok(highlevel::Command::Testexextfi {
48 field,
49 })
50 },
51 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
52 name == "TESTEXEXTFIC"
53 && delimiter == &Some(String::from("="))
54 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
55 => {
56 let arg_vec = extract_vec_from_args(&arguments)?;
57 let field_option = arg_vec.get(0);
58 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
59 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
60 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
61 Ok(highlevel::Command::Testexextfic {
62 field,
63 })
64 },
65 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
66 name == "TESTNSD"
67 && delimiter == &Some(String::from(">"))
68 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
69 => {
70 let arg_vec = extract_vec_from_args(&arguments)?;
71 let field_option = arg_vec.get(0);
72 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
73 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
74 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
75 Ok(highlevel::Command::Testnsd {
76 field,
77 })
78 },
79 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
80 name == "TESTNST"
81 && delimiter == &Some(String::from("="))
82 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
83 => {
84 let arg_vec = extract_vec_from_args(&arguments)?;
85 let field_option = arg_vec.get(0);
86 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
87 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
88 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
89 Ok(highlevel::Command::Testnst {
90 field,
91 })
92 },
93 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
94 name == "TESTNSDNST"
95 && delimiter == &Some(String::from(">"))
96 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
97 => {
98 let arg_vec = extract_vec_from_args(&arguments)?;
99 let field_option = arg_vec.get(0);
100 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
101 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
102 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
103 Ok(highlevel::Command::Testnsdnst {
104 field,
105 })
106 },
107 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
108 name == "TESTNOD"
109 && delimiter == &None
110 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
111 => {
112 let arg_vec = extract_vec_from_args(&arguments)?;
113 let field_option = arg_vec.get(0);
114 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
115 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
116 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
117 Ok(highlevel::Command::Testnod {
118 field,
119 })
120 },
121 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
122 name == "TESTEXEXTFS"
123 && delimiter == &Some(String::from("="))
124 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
125 => {
126 let arg_vec = extract_vec_from_args(&arguments)?;
127 let field_option = arg_vec.get(0);
128 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
129 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
130 let field = field_option_unwrapped_primitive.clone();
131 Ok(highlevel::Command::Testexextfs {
132 field,
133 })
134 },
135 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
136 name == "TESTEXEXTFSI"
137 && delimiter == &Some(String::from("="))
138 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
139 => {
140 let arg_vec = extract_vec_from_args(&arguments)?;
141 let field1_option = arg_vec.get(0);
142 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
143 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
144 let field1 = field1_option_unwrapped_primitive.clone();
145 let field2_option = arg_vec.get(1);
146 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
147 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
148 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
149 Ok(highlevel::Command::Testexextfsi {
150 field1,
151 field2,
152 })
153 },
154 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
155 name == "TESTEXEXTFSIC"
156 && delimiter == &Some(String::from("="))
157 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
158 => {
159 let arg_vec = extract_vec_from_args(&arguments)?;
160 let field1_option = arg_vec.get(0);
161 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
162 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
163 let field1 = field1_option_unwrapped_primitive.clone();
164 let field2_option = arg_vec.get(1);
165 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
166 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
167 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
168 Ok(highlevel::Command::Testexextfsic {
169 field1,
170 field2,
171 })
172 },
173 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
174 name == "TESTIO"
175 && delimiter == &Some(String::from("="))
176 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
177 => {
178 let arg_vec = extract_vec_from_args(&arguments)?;
179 let field1_option = arg_vec.get(0);
180 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
181 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
182 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
183 let field2_option = arg_vec.get(1);
184 let field2 = match field2_option {
185 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
186 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
187 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
188 Some(field2_unwrapped)
189 }
190 _ => None,
191 };
192 Ok(highlevel::Command::Testio {
193 field1,
194 field2,
195 })
196 },
197 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
198 name == "TESTL"
199 && delimiter == &Some(String::from("="))
200 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
201 => {
202 let arg_vec = extract_vec_from_args(&arguments)?;
203 let mut field = Vec::new();
204 for field_element_raw in arg_vec[0..].into_iter() {
205 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
206 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
207 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
208 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
209 field.push(field_element);
210 }
211 Ok(highlevel::Command::Testl {
212 field,
213 })
214 },
215 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
216 name == "TESTOL"
217 && delimiter == &Some(String::from("="))
218 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
219 => {
220 let arg_vec = extract_vec_from_args(&arguments)?;
221 let mut field = Vec::new();
222 for field_element_raw in arg_vec[0..].into_iter() {
223 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
224 let field_element = match field_element_option {
225 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
226 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
227 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
228 Some(field_element_unwrapped)
229 }
230 _ => None,
231 };
232 field.push(field_element);
233 }
234 Ok(highlevel::Command::Testol {
235 field,
236 })
237 },
238 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
239 name == "TESTM"
240 && delimiter == &Some(String::from("="))
241 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
242 => {
243 let arg_vec = extract_vec_from_args(&arguments)?;
244 let mut field = std::collections::HashMap::new();
245 for field_element in arg_vec[0..].into_iter() {
246 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
247 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
248 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
249 let field_value = field_element_primitive.clone();
250 let _ = field.insert(field_key, field_value);
251 }
252 Ok(highlevel::Command::Testm {
253 field,
254 })
255 },
256 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
257 name == "TESTP"
258 && delimiter == &Some(String::from("="))
259 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
260 => {
261 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
262 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
263 let field_option = arg_vec.get(0);
264 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
265 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
266 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
267 Ok(highlevel::Command::Testp {
268 field,
269 })
270 },
271 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
272 name == "TESTPP"
273 && delimiter == &Some(String::from("="))
274 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
275 => {
276 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
277 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
278 let field1_option = arg_vec.get(0);
279 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
280 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
281 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
282 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
283 let field2_option = arg_vec.get(0);
284 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
285 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
286 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
287 let field3_option = arg_vec.get(1);
288 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
289 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
290 let field3 = field3_option_unwrapped_primitive.clone();
291 Ok(highlevel::Command::Testpp {
292 field1,
293 field2,
294 field3,
295 })
296 },
297 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
298 name == "TESTPMPIL"
299 && delimiter == &Some(String::from("="))
300 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
301 => {
302 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
303 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
304 let mut field1 = std::collections::HashMap::new();
305 for field1_element in arg_vec[0..].into_iter() {
306 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
307 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
308 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
309 let field1_value = field1_element_primitive.clone();
310 let _ = field1.insert(field1_key, field1_value);
311 }
312 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
313 let field2_option = arg_vec.get(0);
314 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
315 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
316 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
317 let mut field3 = Vec::new();
318 for field3_element_raw in arg_vec[1..].into_iter() {
319 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
320 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
321 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
322 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
323 field3.push(field3_element);
324 }
325 Ok(highlevel::Command::Testpmpil {
326 field1,
327 field2,
328 field3,
329 })
330 },
331 lowlevel::Command::Read { name, is_extension: false, ..} if
332 name == "TESTR"
333 => {
334 Ok(highlevel::Command::TestrRead {})
335 },
336 lowlevel::Command::Read { name, is_extension: true, ..} if
337 name == "TESTREX"
338 => {
339 Ok(highlevel::Command::TestrexRead {})
340 },
341 lowlevel::Command::Test { name, is_extension: false, ..} if
342 name == "TESTT"
343 => {
344 Ok(highlevel::Command::TesttTest {})
345 },
346 lowlevel::Command::Test { name, is_extension: true, ..} if
347 name == "TESTTEX"
348 => {
349 Ok(highlevel::Command::TesttexTest {})
350 },
351 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
352 name == "TESTENUM"
353 && delimiter == &Some(String::from("="))
354 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
355 => {
356 let arg_vec = extract_vec_from_args(&arguments)?;
357 let field_option = arg_vec.get(0);
358 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
359 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
360 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
361 let field = super::types::TestOneVariantComma::from_i64(field_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
362 Ok(highlevel::Command::Testenum {
363 field,
364 })
365 },
366 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
367 name == "TESTBOOL"
368 && delimiter == &Some(String::from("="))
369 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
370 => {
371 let arg_vec = extract_vec_from_args(&arguments)?;
372 let field_option = arg_vec.get(0);
373 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
374 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
375 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
376 let field = field_option_unwrapped_int != 0;
377 Ok(highlevel::Command::Testbool {
378 field,
379 })
380 },
381 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
382 name == "TESTOTHERFILE"
383 && delimiter == &None
384 => {
385 Ok(highlevel::Command::Testotherfile {
386 })
387 },
388 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
389 name == "BRSF"
390 && delimiter == &Some(String::from("="))
391 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
392 => {
393 let arg_vec = extract_vec_from_args(&arguments)?;
394 let features_option = arg_vec.get(0);
395 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
396 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
397 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
398 Ok(highlevel::Command::Brsf {
399 features,
400 })
401 },
402 lowlevel::Command::Test { name, is_extension: true, ..} if
403 name == "CIND"
404 => {
405 Ok(highlevel::Command::CindTest {})
406 },
407 lowlevel::Command::Read { name, is_extension: true, ..} if
408 name == "CIND"
409 => {
410 Ok(highlevel::Command::CindRead {})
411 },
412 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
413 name == "CLCC"
414 && delimiter == &None
415 => {
416 Ok(highlevel::Command::Clcc {
417 })
418 },
419 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
420 name == "BCC"
421 && delimiter == &None
422 => {
423 Ok(highlevel::Command::Bcc {
424 })
425 },
426 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
427 name == "BCS"
428 && delimiter == &Some(String::from("="))
429 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
430 => {
431 let arg_vec = extract_vec_from_args(&arguments)?;
432 let codec_option = arg_vec.get(0);
433 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
434 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
435 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
436 Ok(highlevel::Command::Bcs {
437 codec,
438 })
439 },
440 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
441 name == "BAC"
442 && delimiter == &Some(String::from("="))
443 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
444 => {
445 let arg_vec = extract_vec_from_args(&arguments)?;
446 let mut codecs = Vec::new();
447 for codecs_element_raw in arg_vec[0..].into_iter() {
448 let codecs_element_option = if codecs_element_raw.is_empty() { None } else { Some(codecs_element_raw) };
449 let codecs_element_option_unwrapped = codecs_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
450 let codecs_element_option_unwrapped_primitive = extract_primitive_from_field(codecs_element_option_unwrapped, &arguments)?;
451 let codecs_element = extract_int_from_primitive(codecs_element_option_unwrapped_primitive, &arguments)?;
452 codecs.push(codecs_element);
453 }
454 Ok(highlevel::Command::Bac {
455 codecs,
456 })
457 },
458 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
459 name == "BIND"
460 && delimiter == &Some(String::from("="))
461 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
462 => {
463 let arg_vec = extract_vec_from_args(&arguments)?;
464 let mut indicators = Vec::new();
465 for indicators_element_raw in arg_vec[0..].into_iter() {
466 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
467 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
468 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
469 let indicators_element = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
470 indicators.push(indicators_element);
471 }
472 Ok(highlevel::Command::Bind {
473 indicators,
474 })
475 },
476 lowlevel::Command::Test { name, is_extension: true, ..} if
477 name == "BIND"
478 => {
479 Ok(highlevel::Command::BindTest {})
480 },
481 lowlevel::Command::Read { name, is_extension: true, ..} if
482 name == "BIND"
483 => {
484 Ok(highlevel::Command::BindRead {})
485 },
486 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
487 name == "BIEV"
488 && delimiter == &Some(String::from("="))
489 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
490 => {
491 let arg_vec = extract_vec_from_args(&arguments)?;
492 let anum_option = arg_vec.get(0);
493 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
494 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
495 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
496 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
497 let value_option = arg_vec.get(1);
498 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
499 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
500 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
501 Ok(highlevel::Command::Biev {
502 anum,
503 value,
504 })
505 },
506 lowlevel::Command::Test { name, is_extension: true, ..} if
507 name == "CHLD"
508 => {
509 Ok(highlevel::Command::ChldTest {})
510 },
511 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
512 name == "CMER"
513 && delimiter == &Some(String::from("="))
514 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
515 => {
516 let arg_vec = extract_vec_from_args(&arguments)?;
517 let mode_option = arg_vec.get(0);
518 let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
519 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
520 let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
521 let keyp_option = arg_vec.get(1);
522 let keyp_option_unwrapped = keyp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
523 let keyp_option_unwrapped_primitive = extract_primitive_from_field(keyp_option_unwrapped, &arguments)?;
524 let keyp = extract_int_from_primitive(keyp_option_unwrapped_primitive, &arguments)?;
525 let disp_option = arg_vec.get(2);
526 let disp_option_unwrapped = disp_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
527 let disp_option_unwrapped_primitive = extract_primitive_from_field(disp_option_unwrapped, &arguments)?;
528 let disp = extract_int_from_primitive(disp_option_unwrapped_primitive, &arguments)?;
529 let ind_option = arg_vec.get(3);
530 let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
531 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
532 let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
533 Ok(highlevel::Command::Cmer {
534 mode,
535 keyp,
536 disp,
537 ind,
538 })
539 },
540 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
541 name == "NREC"
542 && delimiter == &Some(String::from("="))
543 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
544 => {
545 let arg_vec = extract_vec_from_args(&arguments)?;
546 let nrec_option = arg_vec.get(0);
547 let nrec_option_unwrapped = nrec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
548 let nrec_option_unwrapped_primitive = extract_primitive_from_field(nrec_option_unwrapped, &arguments)?;
549 let nrec_option_unwrapped_int = extract_int_from_primitive(nrec_option_unwrapped_primitive, &arguments)?;
550 let nrec = nrec_option_unwrapped_int != 0;
551 Ok(highlevel::Command::Nrec {
552 nrec,
553 })
554 },
555 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
556 name == "COPS"
557 && delimiter == &Some(String::from("="))
558 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
559 => {
560 let arg_vec = extract_vec_from_args(&arguments)?;
561 let three_option = arg_vec.get(0);
562 let three_option_unwrapped = three_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
563 let three_option_unwrapped_primitive = extract_primitive_from_field(three_option_unwrapped, &arguments)?;
564 let three = extract_int_from_primitive(three_option_unwrapped_primitive, &arguments)?;
565 let format_option = arg_vec.get(1);
566 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
567 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
568 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
569 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
570 Ok(highlevel::Command::Cops {
571 three,
572 format,
573 })
574 },
575 lowlevel::Command::Read { name, is_extension: true, ..} if
576 name == "COPS"
577 => {
578 Ok(highlevel::Command::CopsRead {})
579 },
580 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
581 name == "CMEE"
582 && delimiter == &Some(String::from("="))
583 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
584 => {
585 let arg_vec = extract_vec_from_args(&arguments)?;
586 let enable_option = arg_vec.get(0);
587 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
588 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
589 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
590 let enable = enable_option_unwrapped_int != 0;
591 Ok(highlevel::Command::Cmee {
592 enable,
593 })
594 },
595 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
596 name == "CCWA"
597 && delimiter == &Some(String::from("="))
598 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
599 => {
600 let arg_vec = extract_vec_from_args(&arguments)?;
601 let enable_option = arg_vec.get(0);
602 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
603 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
604 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
605 let enable = enable_option_unwrapped_int != 0;
606 Ok(highlevel::Command::Ccwa {
607 enable,
608 })
609 },
610 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
611 name == "CLIP"
612 && delimiter == &Some(String::from("="))
613 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
614 => {
615 let arg_vec = extract_vec_from_args(&arguments)?;
616 let enable_option = arg_vec.get(0);
617 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
618 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
619 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
620 let enable = enable_option_unwrapped_int != 0;
621 Ok(highlevel::Command::Clip {
622 enable,
623 })
624 },
625 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
626 name == "CNUM"
627 && delimiter == &None
628 => {
629 Ok(highlevel::Command::Cnum {
630 })
631 },
632 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
633 name == "VTS"
634 && delimiter == &Some(String::from("="))
635 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
636 => {
637 let arg_vec = extract_vec_from_args(&arguments)?;
638 let code_option = arg_vec.get(0);
639 let code_option_unwrapped = code_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
640 let code_option_unwrapped_primitive = extract_primitive_from_field(code_option_unwrapped, &arguments)?;
641 let code = code_option_unwrapped_primitive.clone();
642 Ok(highlevel::Command::Vts {
643 code,
644 })
645 },
646 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
647 name == "VGS"
648 && delimiter == &Some(String::from("="))
649 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
650 => {
651 let arg_vec = extract_vec_from_args(&arguments)?;
652 let level_option = arg_vec.get(0);
653 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
654 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
655 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
656 Ok(highlevel::Command::Vgs {
657 level,
658 })
659 },
660 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
661 name == "VGM"
662 && delimiter == &Some(String::from("="))
663 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
664 => {
665 let arg_vec = extract_vec_from_args(&arguments)?;
666 let level_option = arg_vec.get(0);
667 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
668 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
669 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
670 Ok(highlevel::Command::Vgm {
671 level,
672 })
673 },
674 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
675 name == "BIA"
676 && delimiter == &Some(String::from("="))
677 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
678 => {
679 let arg_vec = extract_vec_from_args(&arguments)?;
680 let mut indrep = Vec::new();
681 for indrep_element_raw in arg_vec[0..].into_iter() {
682 let indrep_element_option = if indrep_element_raw.is_empty() { None } else { Some(indrep_element_raw) };
683 let indrep_element = match indrep_element_option {
684 Some(indrep_element_option_unwrapped) if !indrep_element_option_unwrapped.is_empty() => {
685 let indrep_element_option_unwrapped_primitive = extract_primitive_from_field(indrep_element_option_unwrapped, &arguments)?;
686 let indrep_element_option_unwrapped_int = extract_int_from_primitive(indrep_element_option_unwrapped_primitive, &arguments)?;
687 let indrep_element_unwrapped = indrep_element_option_unwrapped_int != 0;
688 Some(indrep_element_unwrapped)
689 }
690 _ => None,
691 };
692 indrep.push(indrep_element);
693 }
694 Ok(highlevel::Command::Bia {
695 indrep,
696 })
697 },
698 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
699 name == "A"
700 && delimiter == &None
701 => {
702 Ok(highlevel::Command::Answer {
703 })
704 },
705 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
706 name == "CHUP"
707 && delimiter == &None
708 => {
709 Ok(highlevel::Command::Chup {
710 })
711 },
712 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
713 name == "CHLD"
714 && delimiter == &Some(String::from("="))
715 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
716 => {
717 let arg_vec = extract_vec_from_args(&arguments)?;
718 let command_option = arg_vec.get(0);
719 let command_option_unwrapped = command_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
720 let command_option_unwrapped_primitive = extract_primitive_from_field(command_option_unwrapped, &arguments)?;
721 let command = command_option_unwrapped_primitive.clone();
722 Ok(highlevel::Command::Chld {
723 command,
724 })
725 },
726 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
727 name == "D"
728 && delimiter == &None
729 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
730 => {
731 let arg_vec = extract_vec_from_args(&arguments)?;
732 let number_option = arg_vec.get(0);
733 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
734 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
735 let number = number_option_unwrapped_primitive.clone();
736 Ok(highlevel::Command::AtdNumber {
737 number,
738 })
739 },
740 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
741 name == "D"
742 && delimiter == &Some(String::from(">"))
743 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
744 => {
745 let arg_vec = extract_vec_from_args(&arguments)?;
746 let location_option = arg_vec.get(0);
747 let location_option_unwrapped = location_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
748 let location_option_unwrapped_primitive = extract_primitive_from_field(location_option_unwrapped, &arguments)?;
749 let location = location_option_unwrapped_primitive.clone();
750 Ok(highlevel::Command::AtdMemory {
751 location,
752 })
753 },
754 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
755 name == "BLDN"
756 && delimiter == &None
757 => {
758 Ok(highlevel::Command::Bldn {
759 })
760 },
761 _ => Err(DeserializeErrorCause::UnknownCommand(lowlevel.clone())),
762 }
763}
764
765pub fn raise_success(lowlevel: &lowlevel::Response) -> Result<highlevel::Success, DeserializeErrorCause> {
767 match lowlevel {
768 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
769 name == "TEST"
770 && delimiter == &Some(String::from(":"))
771 => {
772 Ok(highlevel::Success::Test {
773 })
774 },
775 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
776 name == "TESTNOD"
777 && delimiter == &None
778 => {
779 Ok(highlevel::Success::Testnod {
780 })
781 },
782 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
783 name == "TESTN"
784 && delimiter == &Some(String::from(":"))
785 => {
786 Ok(highlevel::Success::TestResponse {
787 })
788 },
789 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
790 name == "TESTEXT"
791 && delimiter == &Some(String::from(":"))
792 => {
793 Ok(highlevel::Success::Testext {
794 })
795 },
796 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
797 name == "TESTEXTNOD"
798 && delimiter == &None
799 => {
800 Ok(highlevel::Success::Testextnod {
801 })
802 },
803 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
804 name == "TESTI"
805 && delimiter == &Some(String::from(":"))
806 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
807 => {
808 let arg_vec = extract_vec_from_args(&arguments)?;
809 let field_option = arg_vec.get(0);
810 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
811 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
812 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
813 Ok(highlevel::Success::Testi {
814 field,
815 })
816 },
817 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
818 name == "TESTINOD"
819 && delimiter == &None
820 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
821 => {
822 let arg_vec = extract_vec_from_args(&arguments)?;
823 let field_option = arg_vec.get(0);
824 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
825 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
826 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
827 Ok(highlevel::Success::Testinod {
828 field,
829 })
830 },
831 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
832 name == "TESTIC"
833 && delimiter == &Some(String::from(":"))
834 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
835 => {
836 let arg_vec = extract_vec_from_args(&arguments)?;
837 let field_option = arg_vec.get(0);
838 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
839 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
840 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
841 Ok(highlevel::Success::Testic {
842 field,
843 })
844 },
845 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
846 name == "TESTS"
847 && delimiter == &Some(String::from(":"))
848 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
849 => {
850 let arg_vec = extract_vec_from_args(&arguments)?;
851 let field_option = arg_vec.get(0);
852 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
853 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
854 let field = field_option_unwrapped_primitive.clone();
855 Ok(highlevel::Success::Tests {
856 field,
857 })
858 },
859 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
860 name == "TESTSI"
861 && delimiter == &Some(String::from(":"))
862 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
863 => {
864 let arg_vec = extract_vec_from_args(&arguments)?;
865 let field1_option = arg_vec.get(0);
866 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
867 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
868 let field1 = field1_option_unwrapped_primitive.clone();
869 let field2_option = arg_vec.get(1);
870 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
871 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
872 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
873 Ok(highlevel::Success::Testsi {
874 field1,
875 field2,
876 })
877 },
878 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
879 name == "TESTSIC"
880 && delimiter == &Some(String::from(":"))
881 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
882 => {
883 let arg_vec = extract_vec_from_args(&arguments)?;
884 let field1_option = arg_vec.get(0);
885 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
886 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
887 let field1 = field1_option_unwrapped_primitive.clone();
888 let field2_option = arg_vec.get(1);
889 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
890 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
891 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
892 Ok(highlevel::Success::Testsic {
893 field1,
894 field2,
895 })
896 },
897 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
898 name == "TESTIO"
899 && delimiter == &Some(String::from(":"))
900 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
901 => {
902 let arg_vec = extract_vec_from_args(&arguments)?;
903 let field1_option = arg_vec.get(0);
904 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
905 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
906 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
907 let field2_option = arg_vec.get(1);
908 let field2 = match field2_option {
909 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
910 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
911 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
912 Some(field2_unwrapped)
913 }
914 _ => None,
915 };
916 Ok(highlevel::Success::Testio {
917 field1,
918 field2,
919 })
920 },
921 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
922 name == "TESTIOO"
923 && delimiter == &Some(String::from(":"))
924 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
925 => {
926 let arg_vec = extract_vec_from_args(&arguments)?;
927 let field1_option = arg_vec.get(0);
928 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
929 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
930 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
931 let field2_option = arg_vec.get(1);
932 let field2 = match field2_option {
933 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
934 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
935 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
936 Some(field2_unwrapped)
937 }
938 _ => None,
939 };
940 let field3_option = arg_vec.get(2);
941 let field3 = match field3_option {
942 Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
943 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
944 let field3_unwrapped = field3_option_unwrapped_primitive.clone();
945 Some(field3_unwrapped)
946 }
947 _ => None,
948 };
949 Ok(highlevel::Success::Testioo {
950 field1,
951 field2,
952 field3,
953 })
954 },
955 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
956 name == "TESTL"
957 && delimiter == &Some(String::from(":"))
958 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
959 => {
960 let arg_vec = extract_vec_from_args(&arguments)?;
961 let mut field = Vec::new();
962 for field_element_raw in arg_vec[0..].into_iter() {
963 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
964 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
965 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
966 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
967 field.push(field_element);
968 }
969 Ok(highlevel::Success::Testl {
970 field,
971 })
972 },
973 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
974 name == "TESTOL"
975 && delimiter == &Some(String::from(":"))
976 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
977 => {
978 let arg_vec = extract_vec_from_args(&arguments)?;
979 let mut field = Vec::new();
980 for field_element_raw in arg_vec[0..].into_iter() {
981 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
982 let field_element = match field_element_option {
983 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
984 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
985 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
986 Some(field_element_unwrapped)
987 }
988 _ => None,
989 };
990 field.push(field_element);
991 }
992 Ok(highlevel::Success::Testol {
993 field,
994 })
995 },
996 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
997 name == "TESTM"
998 && delimiter == &Some(String::from(":"))
999 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1000 => {
1001 let arg_vec = extract_vec_from_args(&arguments)?;
1002 let mut field = std::collections::HashMap::new();
1003 for field_element in arg_vec[0..].into_iter() {
1004 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
1005 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
1006 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
1007 let field_value = field_element_primitive.clone();
1008 let _ = field.insert(field_key, field_value);
1009 }
1010 Ok(highlevel::Success::Testm {
1011 field,
1012 })
1013 },
1014 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1015 name == "TESTP"
1016 && delimiter == &Some(String::from(":"))
1017 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1018 => {
1019 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1020 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1021 let field_option = arg_vec.get(0);
1022 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1023 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1024 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1025 Ok(highlevel::Success::Testp {
1026 field,
1027 })
1028 },
1029 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1030 name == "TESTPP"
1031 && delimiter == &Some(String::from(":"))
1032 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1033 => {
1034 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1035 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1036 let field1_option = arg_vec.get(0);
1037 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1038 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
1039 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
1040 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1041 let field2_option = arg_vec.get(0);
1042 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1043 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1044 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1045 let field3_option = arg_vec.get(1);
1046 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1047 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1048 let field3 = field3_option_unwrapped_primitive.clone();
1049 Ok(highlevel::Success::Testpp {
1050 field1,
1051 field2,
1052 field3,
1053 })
1054 },
1055 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1056 name == "TESTPMPIL"
1057 && delimiter == &Some(String::from(":"))
1058 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1059 => {
1060 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1061 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1062 let mut field1 = std::collections::HashMap::new();
1063 for field1_element in arg_vec[0..].into_iter() {
1064 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
1065 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
1066 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
1067 let field1_value = field1_element_primitive.clone();
1068 let _ = field1.insert(field1_key, field1_value);
1069 }
1070 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1071 let field2_option = arg_vec.get(0);
1072 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1073 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1074 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1075 let mut field3 = Vec::new();
1076 for field3_element_raw in arg_vec[1..].into_iter() {
1077 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
1078 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1079 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
1080 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
1081 field3.push(field3_element);
1082 }
1083 Ok(highlevel::Success::Testpmpil {
1084 field1,
1085 field2,
1086 field3,
1087 })
1088 },
1089 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1090 name == "SAME"
1091 && delimiter == &Some(String::from(":"))
1092 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1093 => {
1094 let arg_vec = extract_vec_from_args(&arguments)?;
1095 let field_option = arg_vec.get(0);
1096 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1097 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1098 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1099 Ok(highlevel::Success::SameOne {
1100 field,
1101 })
1102 },
1103 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1104 name == "SAME"
1105 && delimiter == &Some(String::from(":"))
1106 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1107 => {
1108 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1109 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1110 let field_option = arg_vec.get(0);
1111 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1112 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1113 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1114 Ok(highlevel::Success::SameTwo {
1115 field,
1116 })
1117 },
1118 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1119 name == "BRSF"
1120 && delimiter == &Some(String::from(":"))
1121 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1122 => {
1123 let arg_vec = extract_vec_from_args(&arguments)?;
1124 let features_option = arg_vec.get(0);
1125 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1126 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
1127 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
1128 Ok(highlevel::Success::Brsf {
1129 features,
1130 })
1131 },
1132 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1133 name == "CIND"
1134 && delimiter == &Some(String::from(":"))
1135 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1136 => {
1137 let arg_vec = extract_vec_from_args(&arguments)?;
1138 let mut ordered_values = Vec::new();
1139 for ordered_values_element_raw in arg_vec[0..].into_iter() {
1140 let ordered_values_element_option = if ordered_values_element_raw.is_empty() { None } else { Some(ordered_values_element_raw) };
1141 let ordered_values_element_option_unwrapped = ordered_values_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1142 let ordered_values_element_option_unwrapped_primitive = extract_primitive_from_field(ordered_values_element_option_unwrapped, &arguments)?;
1143 let ordered_values_element = extract_int_from_primitive(ordered_values_element_option_unwrapped_primitive, &arguments)?;
1144 ordered_values.push(ordered_values_element);
1145 }
1146 Ok(highlevel::Success::CindRead {
1147 ordered_values,
1148 })
1149 },
1150 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1151 name == "CLCC"
1152 && delimiter == &Some(String::from(":"))
1153 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1154 => {
1155 let arg_vec = extract_vec_from_args(&arguments)?;
1156 let index_option = arg_vec.get(0);
1157 let index_option_unwrapped = index_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1158 let index_option_unwrapped_primitive = extract_primitive_from_field(index_option_unwrapped, &arguments)?;
1159 let index = extract_int_from_primitive(index_option_unwrapped_primitive, &arguments)?;
1160 let dir_option = arg_vec.get(1);
1161 let dir_option_unwrapped = dir_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1162 let dir_option_unwrapped_primitive = extract_primitive_from_field(dir_option_unwrapped, &arguments)?;
1163 let dir = extract_int_from_primitive(dir_option_unwrapped_primitive, &arguments)?;
1164 let status_option = arg_vec.get(2);
1165 let status_option_unwrapped = status_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1166 let status_option_unwrapped_primitive = extract_primitive_from_field(status_option_unwrapped, &arguments)?;
1167 let status = extract_int_from_primitive(status_option_unwrapped_primitive, &arguments)?;
1168 let mode_option = arg_vec.get(3);
1169 let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1170 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
1171 let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
1172 let mpty_option = arg_vec.get(4);
1173 let mpty_option_unwrapped = mpty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1174 let mpty_option_unwrapped_primitive = extract_primitive_from_field(mpty_option_unwrapped, &arguments)?;
1175 let mpty = extract_int_from_primitive(mpty_option_unwrapped_primitive, &arguments)?;
1176 let number_option = arg_vec.get(5);
1177 let number = match number_option {
1178 Some(number_option_unwrapped) if !number_option_unwrapped.is_empty() => {
1179 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1180 let number_unwrapped = number_option_unwrapped_primitive.clone();
1181 Some(number_unwrapped)
1182 }
1183 _ => None,
1184 };
1185 let ty_option = arg_vec.get(6);
1186 let ty = match ty_option {
1187 Some(ty_option_unwrapped) if !ty_option_unwrapped.is_empty() => {
1188 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1189 let ty_unwrapped = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1190 Some(ty_unwrapped)
1191 }
1192 _ => None,
1193 };
1194 Ok(highlevel::Success::Clcc {
1195 index,
1196 dir,
1197 status,
1198 mode,
1199 mpty,
1200 number,
1201 ty,
1202 })
1203 },
1204 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1205 name == "BCS"
1206 && delimiter == &Some(String::from(":"))
1207 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1208 => {
1209 let arg_vec = extract_vec_from_args(&arguments)?;
1210 let codec_option = arg_vec.get(0);
1211 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1212 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
1213 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
1214 Ok(highlevel::Success::Bcs {
1215 codec,
1216 })
1217 },
1218 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1219 name == "BIND"
1220 && delimiter == &Some(String::from(":"))
1221 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1222 => {
1223 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1224 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1225 let mut indicators = Vec::new();
1226 for indicators_element_raw in arg_vec[0..].into_iter() {
1227 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
1228 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1229 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
1230 let indicators_element_option_unwrapped_int = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
1231 let indicators_element = super::types::BluetoothHFIndicator::from_i64(indicators_element_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1232 indicators.push(indicators_element);
1233 }
1234 Ok(highlevel::Success::BindList {
1235 indicators,
1236 })
1237 },
1238 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1239 name == "BIND"
1240 && delimiter == &Some(String::from(":"))
1241 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1242 => {
1243 let arg_vec = extract_vec_from_args(&arguments)?;
1244 let anum_option = arg_vec.get(0);
1245 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1246 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
1247 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
1248 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1249 let state_option = arg_vec.get(1);
1250 let state_option_unwrapped = state_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1251 let state_option_unwrapped_primitive = extract_primitive_from_field(state_option_unwrapped, &arguments)?;
1252 let state_option_unwrapped_int = extract_int_from_primitive(state_option_unwrapped_primitive, &arguments)?;
1253 let state = state_option_unwrapped_int != 0;
1254 Ok(highlevel::Success::BindStatus {
1255 anum,
1256 state,
1257 })
1258 },
1259 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1260 name == "CHLD"
1261 && delimiter == &Some(String::from(":"))
1262 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1263 => {
1264 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1265 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1266 let mut commands = Vec::new();
1267 for commands_element_raw in arg_vec[0..].into_iter() {
1268 let commands_element_option = if commands_element_raw.is_empty() { None } else { Some(commands_element_raw) };
1269 let commands_element_option_unwrapped = commands_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1270 let commands_element_option_unwrapped_primitive = extract_primitive_from_field(commands_element_option_unwrapped, &arguments)?;
1271 let commands_element = commands_element_option_unwrapped_primitive.clone();
1272 commands.push(commands_element);
1273 }
1274 Ok(highlevel::Success::Chld {
1275 commands,
1276 })
1277 },
1278 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1279 name == "COPS"
1280 && delimiter == &Some(String::from(":"))
1281 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1282 => {
1283 let arg_vec = extract_vec_from_args(&arguments)?;
1284 let format_option = arg_vec.get(0);
1285 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1286 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
1287 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
1288 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1289 let zero_option = arg_vec.get(1);
1290 let zero_option_unwrapped = zero_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1291 let zero_option_unwrapped_primitive = extract_primitive_from_field(zero_option_unwrapped, &arguments)?;
1292 let zero = extract_int_from_primitive(zero_option_unwrapped_primitive, &arguments)?;
1293 let operator_option = arg_vec.get(2);
1294 let operator_option_unwrapped = operator_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1295 let operator_option_unwrapped_primitive = extract_primitive_from_field(operator_option_unwrapped, &arguments)?;
1296 let operator = operator_option_unwrapped_primitive.clone();
1297 Ok(highlevel::Success::Cops {
1298 format,
1299 zero,
1300 operator,
1301 })
1302 },
1303 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1304 name == "CLIP"
1305 && delimiter == &Some(String::from(":"))
1306 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1307 => {
1308 let arg_vec = extract_vec_from_args(&arguments)?;
1309 let number_option = arg_vec.get(0);
1310 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1311 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1312 let number = number_option_unwrapped_primitive.clone();
1313 let ty_option = arg_vec.get(1);
1314 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1315 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1316 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1317 Ok(highlevel::Success::Clip {
1318 number,
1319 ty,
1320 })
1321 },
1322 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1323 name == "CNUM"
1324 && delimiter == &Some(String::from(":"))
1325 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1326 => {
1327 let arg_vec = extract_vec_from_args(&arguments)?;
1328 let alpha_option = arg_vec.get(0);
1329 let alpha_option_unwrapped = alpha_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1330 let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1331 let alpha = alpha_option_unwrapped_primitive.clone();
1332 let number_option = arg_vec.get(1);
1333 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1334 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1335 let number = number_option_unwrapped_primitive.clone();
1336 let ty_option = arg_vec.get(2);
1337 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1338 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1339 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1340 let speed_option = arg_vec.get(3);
1341 let speed_option_unwrapped = speed_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1342 let speed_option_unwrapped_primitive = extract_primitive_from_field(speed_option_unwrapped, &arguments)?;
1343 let speed = speed_option_unwrapped_primitive.clone();
1344 let service_option = arg_vec.get(4);
1345 let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1346 let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1347 let service = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1348 Ok(highlevel::Success::Cnum {
1349 alpha,
1350 number,
1351 ty,
1352 speed,
1353 service,
1354 })
1355 },
1356 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1357 name == "VGS"
1358 && delimiter == &Some(String::from(":"))
1359 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1360 => {
1361 let arg_vec = extract_vec_from_args(&arguments)?;
1362 let level_option = arg_vec.get(0);
1363 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1364 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1365 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1366 Ok(highlevel::Success::Vgs {
1367 level,
1368 })
1369 },
1370 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1371 name == "VGM"
1372 && delimiter == &Some(String::from(":"))
1373 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1374 => {
1375 let arg_vec = extract_vec_from_args(&arguments)?;
1376 let level_option = arg_vec.get(0);
1377 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1378 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1379 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1380 Ok(highlevel::Success::Vgm {
1381 level,
1382 })
1383 },
1384 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1385 name == "CIEV"
1386 && delimiter == &Some(String::from(":"))
1387 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1388 => {
1389 let arg_vec = extract_vec_from_args(&arguments)?;
1390 let ind_option = arg_vec.get(0);
1391 let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1392 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
1393 let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
1394 let value_option = arg_vec.get(1);
1395 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1396 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
1397 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
1398 Ok(highlevel::Success::Ciev {
1399 ind,
1400 value,
1401 })
1402 },
1403 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1404 name == "CCWA"
1405 && delimiter == &Some(String::from(":"))
1406 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1407 => {
1408 let arg_vec = extract_vec_from_args(&arguments)?;
1409 let number_option = arg_vec.get(0);
1410 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1411 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1412 let number = number_option_unwrapped_primitive.clone();
1413 let ty_option = arg_vec.get(1);
1414 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1415 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1416 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1417 Ok(highlevel::Success::Ccwa {
1418 number,
1419 ty,
1420 })
1421 },
1422 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
1423 name == "RING"
1424 && delimiter == &None
1425 => {
1426 Ok(highlevel::Success::Ring {
1427 })
1428 },
1429 _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1430 }
1431}
1432
1433pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1434 match highlevel {
1435 highlevel::Command::Testex { } => {
1436 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1437 lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1438 },
1439 highlevel::Command::Testexext { } => {
1440 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1441 lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1442 },
1443 highlevel::Command::TestCommand { } => {
1444 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1445 lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1446 },
1447 highlevel::Command::Testexextfi {
1448 field,
1449 } => {
1450 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1451 let field_string = i64::to_string(&field);
1452 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1453 raw_arguments.push(field_primitive);
1454 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1455 lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1456 },
1457 highlevel::Command::Testexextfic {
1458 field,
1459 } => {
1460 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1461 let field_string = i64::to_string(&field);
1462 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1463 raw_arguments.push(field_primitive);
1464 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1465 lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1466 },
1467 highlevel::Command::Testnsd {
1468 field,
1469 } => {
1470 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1471 let field_string = i64::to_string(&field);
1472 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1473 raw_arguments.push(field_primitive);
1474 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1475 lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1476 },
1477 highlevel::Command::Testnst {
1478 field,
1479 } => {
1480 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1481 let field_string = i64::to_string(&field);
1482 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1483 raw_arguments.push(field_primitive);
1484 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1485 lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1486 },
1487 highlevel::Command::Testnsdnst {
1488 field,
1489 } => {
1490 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1491 let field_string = i64::to_string(&field);
1492 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1493 raw_arguments.push(field_primitive);
1494 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1495 lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1496 },
1497 highlevel::Command::Testnod {
1498 field,
1499 } => {
1500 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1501 let field_string = i64::to_string(&field);
1502 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1503 raw_arguments.push(field_primitive);
1504 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1505 lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1506 },
1507 highlevel::Command::Testexextfs {
1508 field,
1509 } => {
1510 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1511 let field_string = field.clone();
1512 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1513 raw_arguments.push(field_primitive);
1514 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1515 lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1516 },
1517 highlevel::Command::Testexextfsi {
1518 field1,
1519 field2,
1520 } => {
1521 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1522 let field1_string = field1.clone();
1523 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1524 raw_arguments.push(field1_primitive);
1525 let field2_string = i64::to_string(&field2);
1526 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1527 raw_arguments.push(field2_primitive);
1528 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1529 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1530 },
1531 highlevel::Command::Testexextfsic {
1532 field1,
1533 field2,
1534 } => {
1535 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1536 let field1_string = field1.clone();
1537 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1538 raw_arguments.push(field1_primitive);
1539 let field2_string = i64::to_string(&field2);
1540 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1541 raw_arguments.push(field2_primitive);
1542 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1543 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1544 },
1545 highlevel::Command::Testio {
1546 field1,
1547 field2,
1548 } => {
1549 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1550 let field1_string = i64::to_string(&field1);
1551 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1552 raw_arguments.push(field1_primitive);
1553 match field2 {
1554 None => {}
1555 Some(field2_unwrapped) => {
1556 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1557 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1558 raw_arguments.push(field2_primitive);
1559 }
1560 }
1561 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1562 lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1563 },
1564 highlevel::Command::Testl {
1565 field,
1566 } => {
1567 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1568 for field_element in field.into_iter() {
1569 let field_element_string = i64::to_string(&field_element);
1570 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1571 raw_arguments.push(field_element_primitive);
1572 }
1573 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1574 lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1575 },
1576 highlevel::Command::Testol {
1577 field,
1578 } => {
1579 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1580 for field_element in field.into_iter() {
1581 match field_element {
1582 None => {
1583 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1584 }
1585 Some(field_element_unwrapped) => {
1586 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1587 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1588 raw_arguments.push(field_element_primitive);
1589 }
1590 }
1591 }
1592 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1593 lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1594 },
1595 highlevel::Command::Testm {
1596 field,
1597 } => {
1598 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1599 for (field_typed_key, field_typed_value) in field {
1600 let field_primitive_key = i64::to_string(&field_typed_key);
1601 let field_primitive_value = field_typed_value.clone();
1602 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1603 raw_arguments.push(field_untyped_pair);
1604 }
1605 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1606 lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1607 },
1608 highlevel::Command::Testp {
1609 field,
1610 } => {
1611 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1612 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1613 let field_string = i64::to_string(&field);
1614 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1615 raw_arguments_inner.push(field_primitive);
1616 raw_arguments_outer.push(raw_arguments_inner);
1617 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1618 lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1619 },
1620 highlevel::Command::Testpp {
1621 field1,
1622 field2,
1623 field3,
1624 } => {
1625 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1626 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1627 let field1_string = i64::to_string(&field1);
1628 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1629 raw_arguments_inner.push(field1_primitive);
1630 raw_arguments_outer.push(raw_arguments_inner);
1631 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1632 let field2_string = i64::to_string(&field2);
1633 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1634 raw_arguments_inner.push(field2_primitive);
1635 let field3_string = field3.clone();
1636 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1637 raw_arguments_inner.push(field3_primitive);
1638 raw_arguments_outer.push(raw_arguments_inner);
1639 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1640 lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1641 },
1642 highlevel::Command::Testpmpil {
1643 field1,
1644 field2,
1645 field3,
1646 } => {
1647 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1648 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1649 for (field1_typed_key, field1_typed_value) in field1 {
1650 let field1_primitive_key = i64::to_string(&field1_typed_key);
1651 let field1_primitive_value = field1_typed_value.clone();
1652 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1653 raw_arguments_inner.push(field1_untyped_pair);
1654 }
1655 raw_arguments_outer.push(raw_arguments_inner);
1656 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1657 let field2_string = i64::to_string(&field2);
1658 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1659 raw_arguments_inner.push(field2_primitive);
1660 for field3_element in field3.into_iter() {
1661 let field3_element_string = i64::to_string(&field3_element);
1662 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1663 raw_arguments_inner.push(field3_element_primitive);
1664 }
1665 raw_arguments_outer.push(raw_arguments_inner);
1666 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1667 lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1668 },
1669 highlevel::Command::TestrRead {} => {
1670 lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1671 },
1672 highlevel::Command::TestrexRead {} => {
1673 lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1674 },
1675 highlevel::Command::TesttTest {} => {
1676 lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1677 },
1678 highlevel::Command::TesttexTest {} => {
1679 lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1680 },
1681 highlevel::Command::Testenum {
1682 field,
1683 } => {
1684 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1685 let field_string_int = *field as i64;
1686 let field_string = i64::to_string(&field_string_int);
1687 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1688 raw_arguments.push(field_primitive);
1689 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1690 lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1691 },
1692 highlevel::Command::Testbool {
1693 field,
1694 } => {
1695 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1696 let field_string_int = if *field { 1 } else { 0 };
1697 let field_string = i64::to_string(&field_string_int);
1698 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1699 raw_arguments.push(field_primitive);
1700 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1701 lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1702 },
1703 highlevel::Command::Testotherfile { } => {
1704 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1705 lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1706 },
1707 highlevel::Command::Brsf {
1708 features,
1709 } => {
1710 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1711 let features_string = i64::to_string(&features);
1712 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1713 raw_arguments.push(features_primitive);
1714 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1715 lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1716 },
1717 highlevel::Command::CindTest {} => {
1718 lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1719 },
1720 highlevel::Command::CindRead {} => {
1721 lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1722 },
1723 highlevel::Command::Clcc { } => {
1724 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1725 lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1726 },
1727 highlevel::Command::Bcc { } => {
1728 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1729 lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1730 },
1731 highlevel::Command::Bcs {
1732 codec,
1733 } => {
1734 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1735 let codec_string = i64::to_string(&codec);
1736 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1737 raw_arguments.push(codec_primitive);
1738 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1739 lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1740 },
1741 highlevel::Command::Bac {
1742 codecs,
1743 } => {
1744 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1745 for codecs_element in codecs.into_iter() {
1746 let codecs_element_string = i64::to_string(&codecs_element);
1747 let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1748 raw_arguments.push(codecs_element_primitive);
1749 }
1750 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1751 lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1752 },
1753 highlevel::Command::Bind {
1754 indicators,
1755 } => {
1756 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1757 for indicators_element in indicators.into_iter() {
1758 let indicators_element_string = i64::to_string(&indicators_element);
1759 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
1760 raw_arguments.push(indicators_element_primitive);
1761 }
1762 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1763 lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1764 },
1765 highlevel::Command::BindTest {} => {
1766 lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
1767 },
1768 highlevel::Command::BindRead {} => {
1769 lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
1770 },
1771 highlevel::Command::Biev {
1772 anum,
1773 value,
1774 } => {
1775 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1776 let anum_string_int = *anum as i64;
1777 let anum_string = i64::to_string(&anum_string_int);
1778 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
1779 raw_arguments.push(anum_primitive);
1780 let value_string = i64::to_string(&value);
1781 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
1782 raw_arguments.push(value_primitive);
1783 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1784 lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1785 },
1786 highlevel::Command::ChldTest {} => {
1787 lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
1788 },
1789 highlevel::Command::Cmer {
1790 mode,
1791 keyp,
1792 disp,
1793 ind,
1794 } => {
1795 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1796 let mode_string = i64::to_string(&mode);
1797 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
1798 raw_arguments.push(mode_primitive);
1799 let keyp_string = i64::to_string(&keyp);
1800 let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_string);
1801 raw_arguments.push(keyp_primitive);
1802 let disp_string = i64::to_string(&disp);
1803 let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_string);
1804 raw_arguments.push(disp_primitive);
1805 let ind_string = i64::to_string(&ind);
1806 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
1807 raw_arguments.push(ind_primitive);
1808 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1809 lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1810 },
1811 highlevel::Command::Nrec {
1812 nrec,
1813 } => {
1814 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1815 let nrec_string_int = if *nrec { 1 } else { 0 };
1816 let nrec_string = i64::to_string(&nrec_string_int);
1817 let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
1818 raw_arguments.push(nrec_primitive);
1819 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1820 lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1821 },
1822 highlevel::Command::Cops {
1823 three,
1824 format,
1825 } => {
1826 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1827 let three_string = i64::to_string(&three);
1828 let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
1829 raw_arguments.push(three_primitive);
1830 let format_string_int = *format as i64;
1831 let format_string = i64::to_string(&format_string_int);
1832 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
1833 raw_arguments.push(format_primitive);
1834 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1835 lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1836 },
1837 highlevel::Command::CopsRead {} => {
1838 lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
1839 },
1840 highlevel::Command::Cmee {
1841 enable,
1842 } => {
1843 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1844 let enable_string_int = if *enable { 1 } else { 0 };
1845 let enable_string = i64::to_string(&enable_string_int);
1846 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1847 raw_arguments.push(enable_primitive);
1848 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1849 lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1850 },
1851 highlevel::Command::Ccwa {
1852 enable,
1853 } => {
1854 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1855 let enable_string_int = if *enable { 1 } else { 0 };
1856 let enable_string = i64::to_string(&enable_string_int);
1857 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1858 raw_arguments.push(enable_primitive);
1859 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1860 lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1861 },
1862 highlevel::Command::Clip {
1863 enable,
1864 } => {
1865 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1866 let enable_string_int = if *enable { 1 } else { 0 };
1867 let enable_string = i64::to_string(&enable_string_int);
1868 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
1869 raw_arguments.push(enable_primitive);
1870 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1871 lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1872 },
1873 highlevel::Command::Cnum { } => {
1874 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1875 lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1876 },
1877 highlevel::Command::Vts {
1878 code,
1879 } => {
1880 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1881 let code_string = code.clone();
1882 let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
1883 raw_arguments.push(code_primitive);
1884 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1885 lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1886 },
1887 highlevel::Command::Vgs {
1888 level,
1889 } => {
1890 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1891 let level_string = i64::to_string(&level);
1892 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1893 raw_arguments.push(level_primitive);
1894 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1895 lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1896 },
1897 highlevel::Command::Vgm {
1898 level,
1899 } => {
1900 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1901 let level_string = i64::to_string(&level);
1902 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
1903 raw_arguments.push(level_primitive);
1904 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1905 lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1906 },
1907 highlevel::Command::Bia {
1908 indrep,
1909 } => {
1910 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1911 for indrep_element in indrep.into_iter() {
1912 match indrep_element {
1913 None => {
1914 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1915 }
1916 Some(indrep_element_unwrapped) => {
1917 let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
1918 let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
1919 let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
1920 raw_arguments.push(indrep_element_primitive);
1921 }
1922 }
1923 }
1924 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1925 lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1926 },
1927 highlevel::Command::Answer { } => {
1928 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1929 lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1930 },
1931 highlevel::Command::Chup { } => {
1932 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1933 lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1934 },
1935 highlevel::Command::Chld {
1936 command,
1937 } => {
1938 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1939 let command_string = command.clone();
1940 let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
1941 raw_arguments.push(command_primitive);
1942 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1943 lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1944 },
1945 highlevel::Command::AtdNumber {
1946 number,
1947 } => {
1948 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1949 let number_string = number.clone();
1950 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
1951 raw_arguments.push(number_primitive);
1952 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1953 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
1954 },
1955 highlevel::Command::AtdMemory {
1956 location,
1957 } => {
1958 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1959 let location_string = location.clone();
1960 let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
1961 raw_arguments.push(location_primitive);
1962 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1963 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1964 },
1965 highlevel::Command::Bldn { } => {
1966 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1967 lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1968 },
1969 }
1970}
1971
1972pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
1973 match highlevel {
1974 highlevel::Success::Test { } => {
1975 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1976 lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1977 },
1978 highlevel::Success::Testnod { } => {
1979 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1980 lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1981 },
1982 highlevel::Success::TestResponse { } => {
1983 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1984 lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1985 },
1986 highlevel::Success::Testext { } => {
1987 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1988 lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
1989 },
1990 highlevel::Success::Testextnod { } => {
1991 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1992 lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1993 },
1994 highlevel::Success::Testi {
1995 field,
1996 } => {
1997 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1998 let field_string = i64::to_string(&field);
1999 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2000 raw_arguments.push(field_primitive);
2001 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2002 lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2003 },
2004 highlevel::Success::Testinod {
2005 field,
2006 } => {
2007 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2008 let field_string = i64::to_string(&field);
2009 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2010 raw_arguments.push(field_primitive);
2011 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2012 lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2013 },
2014 highlevel::Success::Testic {
2015 field,
2016 } => {
2017 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2018 let field_string = i64::to_string(&field);
2019 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2020 raw_arguments.push(field_primitive);
2021 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2022 lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2023 },
2024 highlevel::Success::Tests {
2025 field,
2026 } => {
2027 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2028 let field_string = field.clone();
2029 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2030 raw_arguments.push(field_primitive);
2031 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2032 lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2033 },
2034 highlevel::Success::Testsi {
2035 field1,
2036 field2,
2037 } => {
2038 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2039 let field1_string = field1.clone();
2040 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2041 raw_arguments.push(field1_primitive);
2042 let field2_string = i64::to_string(&field2);
2043 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2044 raw_arguments.push(field2_primitive);
2045 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2046 lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2047 },
2048 highlevel::Success::Testsic {
2049 field1,
2050 field2,
2051 } => {
2052 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2053 let field1_string = field1.clone();
2054 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2055 raw_arguments.push(field1_primitive);
2056 let field2_string = i64::to_string(&field2);
2057 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2058 raw_arguments.push(field2_primitive);
2059 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2060 lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2061 },
2062 highlevel::Success::Testio {
2063 field1,
2064 field2,
2065 } => {
2066 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2067 let field1_string = i64::to_string(&field1);
2068 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2069 raw_arguments.push(field1_primitive);
2070 match field2 {
2071 None => {}
2072 Some(field2_unwrapped) => {
2073 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2074 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2075 raw_arguments.push(field2_primitive);
2076 }
2077 }
2078 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2079 lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2080 },
2081 highlevel::Success::Testioo {
2082 field1,
2083 field2,
2084 field3,
2085 } => {
2086 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2087 let field1_string = i64::to_string(&field1);
2088 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2089 raw_arguments.push(field1_primitive);
2090 match field2 {
2091 None => {}
2092 Some(field2_unwrapped) => {
2093 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2094 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2095 raw_arguments.push(field2_primitive);
2096 }
2097 }
2098 match field3 {
2099 None => {}
2100 Some(field3_unwrapped) => {
2101 let field3_unwrapped_string = field3_unwrapped.clone();
2102 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2103 raw_arguments.push(field3_primitive);
2104 }
2105 }
2106 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2107 lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2108 },
2109 highlevel::Success::Testl {
2110 field,
2111 } => {
2112 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2113 for field_element in field.into_iter() {
2114 let field_element_string = i64::to_string(&field_element);
2115 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2116 raw_arguments.push(field_element_primitive);
2117 }
2118 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2119 lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2120 },
2121 highlevel::Success::Testol {
2122 field,
2123 } => {
2124 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2125 for field_element in field.into_iter() {
2126 match field_element {
2127 None => {
2128 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2129 }
2130 Some(field_element_unwrapped) => {
2131 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2132 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2133 raw_arguments.push(field_element_primitive);
2134 }
2135 }
2136 }
2137 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2138 lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2139 },
2140 highlevel::Success::Testm {
2141 field,
2142 } => {
2143 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2144 for (field_typed_key, field_typed_value) in field {
2145 let field_primitive_key = i64::to_string(&field_typed_key);
2146 let field_primitive_value = field_typed_value.clone();
2147 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2148 raw_arguments.push(field_untyped_pair);
2149 }
2150 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2151 lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2152 },
2153 highlevel::Success::Testp {
2154 field,
2155 } => {
2156 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2157 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2158 let field_string = i64::to_string(&field);
2159 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2160 raw_arguments_inner.push(field_primitive);
2161 raw_arguments_outer.push(raw_arguments_inner);
2162 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2163 lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2164 },
2165 highlevel::Success::Testpp {
2166 field1,
2167 field2,
2168 field3,
2169 } => {
2170 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2171 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2172 let field1_string = i64::to_string(&field1);
2173 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2174 raw_arguments_inner.push(field1_primitive);
2175 raw_arguments_outer.push(raw_arguments_inner);
2176 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2177 let field2_string = i64::to_string(&field2);
2178 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2179 raw_arguments_inner.push(field2_primitive);
2180 let field3_string = field3.clone();
2181 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2182 raw_arguments_inner.push(field3_primitive);
2183 raw_arguments_outer.push(raw_arguments_inner);
2184 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2185 lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2186 },
2187 highlevel::Success::Testpmpil {
2188 field1,
2189 field2,
2190 field3,
2191 } => {
2192 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2193 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2194 for (field1_typed_key, field1_typed_value) in field1 {
2195 let field1_primitive_key = i64::to_string(&field1_typed_key);
2196 let field1_primitive_value = field1_typed_value.clone();
2197 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2198 raw_arguments_inner.push(field1_untyped_pair);
2199 }
2200 raw_arguments_outer.push(raw_arguments_inner);
2201 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2202 let field2_string = i64::to_string(&field2);
2203 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2204 raw_arguments_inner.push(field2_primitive);
2205 for field3_element in field3.into_iter() {
2206 let field3_element_string = i64::to_string(&field3_element);
2207 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2208 raw_arguments_inner.push(field3_element_primitive);
2209 }
2210 raw_arguments_outer.push(raw_arguments_inner);
2211 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2212 lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2213 },
2214 highlevel::Success::SameOne {
2215 field,
2216 } => {
2217 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2218 let field_string = i64::to_string(&field);
2219 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2220 raw_arguments.push(field_primitive);
2221 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2222 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2223 },
2224 highlevel::Success::SameTwo {
2225 field,
2226 } => {
2227 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2228 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2229 let field_string = i64::to_string(&field);
2230 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2231 raw_arguments_inner.push(field_primitive);
2232 raw_arguments_outer.push(raw_arguments_inner);
2233 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2234 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2235 },
2236 highlevel::Success::Brsf {
2237 features,
2238 } => {
2239 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2240 let features_string = i64::to_string(&features);
2241 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2242 raw_arguments.push(features_primitive);
2243 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2244 lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2245 },
2246 highlevel::Success::CindRead {
2247 ordered_values,
2248 } => {
2249 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2250 for ordered_values_element in ordered_values.into_iter() {
2251 let ordered_values_element_string = i64::to_string(&ordered_values_element);
2252 let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2253 raw_arguments.push(ordered_values_element_primitive);
2254 }
2255 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2256 lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2257 },
2258 highlevel::Success::Clcc {
2259 index,
2260 dir,
2261 status,
2262 mode,
2263 mpty,
2264 number,
2265 ty,
2266 } => {
2267 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2268 let index_string = i64::to_string(&index);
2269 let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2270 raw_arguments.push(index_primitive);
2271 let dir_string = i64::to_string(&dir);
2272 let dir_primitive = lowlevel::Argument::PrimitiveArgument(dir_string);
2273 raw_arguments.push(dir_primitive);
2274 let status_string = i64::to_string(&status);
2275 let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2276 raw_arguments.push(status_primitive);
2277 let mode_string = i64::to_string(&mode);
2278 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2279 raw_arguments.push(mode_primitive);
2280 let mpty_string = i64::to_string(&mpty);
2281 let mpty_primitive = lowlevel::Argument::PrimitiveArgument(mpty_string);
2282 raw_arguments.push(mpty_primitive);
2283 match number {
2284 None => {}
2285 Some(number_unwrapped) => {
2286 let number_unwrapped_string = number_unwrapped.clone();
2287 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2288 raw_arguments.push(number_primitive);
2289 }
2290 }
2291 match ty {
2292 None => {}
2293 Some(ty_unwrapped) => {
2294 let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2295 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2296 raw_arguments.push(ty_primitive);
2297 }
2298 }
2299 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2300 lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2301 },
2302 highlevel::Success::Bcs {
2303 codec,
2304 } => {
2305 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2306 let codec_string = i64::to_string(&codec);
2307 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2308 raw_arguments.push(codec_primitive);
2309 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2310 lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2311 },
2312 highlevel::Success::BindList {
2313 indicators,
2314 } => {
2315 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2316 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2317 for indicators_element in indicators.into_iter() {
2318 let indicators_element_string_int = *indicators_element as i64;
2319 let indicators_element_string = i64::to_string(&indicators_element_string_int);
2320 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2321 raw_arguments_inner.push(indicators_element_primitive);
2322 }
2323 raw_arguments_outer.push(raw_arguments_inner);
2324 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2325 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2326 },
2327 highlevel::Success::BindStatus {
2328 anum,
2329 state,
2330 } => {
2331 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2332 let anum_string_int = *anum as i64;
2333 let anum_string = i64::to_string(&anum_string_int);
2334 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2335 raw_arguments.push(anum_primitive);
2336 let state_string_int = if *state { 1 } else { 0 };
2337 let state_string = i64::to_string(&state_string_int);
2338 let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2339 raw_arguments.push(state_primitive);
2340 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2341 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2342 },
2343 highlevel::Success::Chld {
2344 commands,
2345 } => {
2346 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2347 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2348 for commands_element in commands.into_iter() {
2349 let commands_element_string = commands_element.clone();
2350 let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2351 raw_arguments_inner.push(commands_element_primitive);
2352 }
2353 raw_arguments_outer.push(raw_arguments_inner);
2354 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2355 lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2356 },
2357 highlevel::Success::Cops {
2358 format,
2359 zero,
2360 operator,
2361 } => {
2362 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2363 let format_string_int = *format as i64;
2364 let format_string = i64::to_string(&format_string_int);
2365 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2366 raw_arguments.push(format_primitive);
2367 let zero_string = i64::to_string(&zero);
2368 let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2369 raw_arguments.push(zero_primitive);
2370 let operator_string = operator.clone();
2371 let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2372 raw_arguments.push(operator_primitive);
2373 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2374 lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2375 },
2376 highlevel::Success::Clip {
2377 number,
2378 ty,
2379 } => {
2380 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2381 let number_string = number.clone();
2382 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2383 raw_arguments.push(number_primitive);
2384 let ty_string = i64::to_string(&ty);
2385 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2386 raw_arguments.push(ty_primitive);
2387 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2388 lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2389 },
2390 highlevel::Success::Cnum {
2391 alpha,
2392 number,
2393 ty,
2394 speed,
2395 service,
2396 } => {
2397 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2398 let alpha_string = alpha.clone();
2399 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2400 raw_arguments.push(alpha_primitive);
2401 let number_string = number.clone();
2402 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2403 raw_arguments.push(number_primitive);
2404 let ty_string = i64::to_string(&ty);
2405 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2406 raw_arguments.push(ty_primitive);
2407 let speed_string = speed.clone();
2408 let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2409 raw_arguments.push(speed_primitive);
2410 let service_string = i64::to_string(&service);
2411 let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2412 raw_arguments.push(service_primitive);
2413 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2414 lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2415 },
2416 highlevel::Success::Vgs {
2417 level,
2418 } => {
2419 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2420 let level_string = i64::to_string(&level);
2421 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2422 raw_arguments.push(level_primitive);
2423 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2424 lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2425 },
2426 highlevel::Success::Vgm {
2427 level,
2428 } => {
2429 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2430 let level_string = i64::to_string(&level);
2431 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2432 raw_arguments.push(level_primitive);
2433 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2434 lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2435 },
2436 highlevel::Success::Ciev {
2437 ind,
2438 value,
2439 } => {
2440 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2441 let ind_string = i64::to_string(&ind);
2442 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2443 raw_arguments.push(ind_primitive);
2444 let value_string = i64::to_string(&value);
2445 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2446 raw_arguments.push(value_primitive);
2447 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2448 lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2449 },
2450 highlevel::Success::Ccwa {
2451 number,
2452 ty,
2453 } => {
2454 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2455 let number_string = number.clone();
2456 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2457 raw_arguments.push(number_primitive);
2458 let ty_string = i64::to_string(&ty);
2459 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2460 raw_arguments.push(ty_primitive);
2461 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2462 lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2463 },
2464 highlevel::Success::Ring { } => {
2465 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2466 lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2467 },
2468 }
2469}
2470