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 == "TESTALLOPT"
199 && delimiter == &Some(String::from("="))
200 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
201 => {
202 let arg_vec = extract_vec_from_args(&arguments)?;
203 let field1_option = arg_vec.get(0);
204 let field1 = match field1_option {
205 Some(field1_option_unwrapped) if !field1_option_unwrapped.is_empty() => {
206 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
207 let field1_unwrapped = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
208 Some(field1_unwrapped)
209 }
210 _ => None,
211 };
212 let field2_option = arg_vec.get(1);
213 let field2 = match field2_option {
214 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
215 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
216 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
217 Some(field2_unwrapped)
218 }
219 _ => None,
220 };
221 let field3_option = arg_vec.get(2);
222 let field3 = match field3_option {
223 Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
224 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
225 let field3_unwrapped = extract_int_from_primitive(field3_option_unwrapped_primitive, &arguments)?;
226 Some(field3_unwrapped)
227 }
228 _ => None,
229 };
230 Ok(highlevel::Command::Testallopt {
231 field1,
232 field2,
233 field3,
234 })
235 },
236 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
237 name == "TESTL"
238 && delimiter == &Some(String::from("="))
239 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
240 => {
241 let arg_vec = extract_vec_from_args(&arguments)?;
242 let mut field = Vec::new();
243 for field_element_raw in arg_vec[0..].iter() {
244 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
245 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
246 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
247 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
248 field.push(field_element);
249 }
250 Ok(highlevel::Command::Testl {
251 field,
252 })
253 },
254 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
255 name == "TESTOL"
256 && delimiter == &Some(String::from("="))
257 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
258 => {
259 let arg_vec = extract_vec_from_args(&arguments)?;
260 let mut field = Vec::new();
261 for field_element_raw in arg_vec[0..].iter() {
262 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
263 let field_element = match field_element_option {
264 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
265 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
266 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
267 Some(field_element_unwrapped)
268 }
269 _ => None,
270 };
271 field.push(field_element);
272 }
273 Ok(highlevel::Command::Testol {
274 field,
275 })
276 },
277 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
278 name == "TESTM"
279 && delimiter == &Some(String::from("="))
280 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
281 => {
282 let arg_vec = extract_vec_from_args(&arguments)?;
283 let mut field = std::collections::HashMap::new();
284 for field_element in arg_vec[0..].iter() {
285 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
286 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
287 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
288 let field_value = field_element_primitive.clone();
289 let _ = field.insert(field_key, field_value);
290 }
291 Ok(highlevel::Command::Testm {
292 field,
293 })
294 },
295 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
296 name == "TESTP"
297 && delimiter == &Some(String::from("="))
298 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
299 => {
300 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
301 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
302 let field_option = arg_vec.get(0);
303 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
304 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
305 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
306 Ok(highlevel::Command::Testp {
307 field,
308 })
309 },
310 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
311 name == "TESTPP"
312 && delimiter == &Some(String::from("="))
313 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
314 => {
315 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
316 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
317 let field1_option = arg_vec.get(0);
318 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
319 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
320 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
321 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
322 let field2_option = arg_vec.get(0);
323 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
324 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
325 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
326 let field3_option = arg_vec.get(1);
327 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
328 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
329 let field3 = field3_option_unwrapped_primitive.clone();
330 Ok(highlevel::Command::Testpp {
331 field1,
332 field2,
333 field3,
334 })
335 },
336 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
337 name == "TESTPMPIL"
338 && delimiter == &Some(String::from("="))
339 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
340 => {
341 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
342 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
343 let mut field1 = std::collections::HashMap::new();
344 for field1_element in arg_vec[0..].iter() {
345 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
346 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
347 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
348 let field1_value = field1_element_primitive.clone();
349 let _ = field1.insert(field1_key, field1_value);
350 }
351 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
352 let field2_option = arg_vec.get(0);
353 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
354 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
355 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
356 let mut field3 = Vec::new();
357 for field3_element_raw in arg_vec[1..].iter() {
358 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
359 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
360 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
361 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
362 field3.push(field3_element);
363 }
364 Ok(highlevel::Command::Testpmpil {
365 field1,
366 field2,
367 field3,
368 })
369 },
370 lowlevel::Command::Read { name, is_extension: false, ..} if
371 name == "TESTR"
372 => {
373 Ok(highlevel::Command::TestrRead {})
374 },
375 lowlevel::Command::Read { name, is_extension: true, ..} if
376 name == "TESTREX"
377 => {
378 Ok(highlevel::Command::TestrexRead {})
379 },
380 lowlevel::Command::Test { name, is_extension: false, ..} if
381 name == "TESTT"
382 => {
383 Ok(highlevel::Command::TesttTest {})
384 },
385 lowlevel::Command::Test { name, is_extension: true, ..} if
386 name == "TESTTEX"
387 => {
388 Ok(highlevel::Command::TesttexTest {})
389 },
390 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
391 name == "TESTENUM"
392 && delimiter == &Some(String::from("="))
393 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
394 => {
395 let arg_vec = extract_vec_from_args(&arguments)?;
396 let field_option = arg_vec.get(0);
397 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
398 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
399 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
400 let field = super::types::TestOneVariantComma::from_i64(field_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
401 Ok(highlevel::Command::Testenum {
402 field,
403 })
404 },
405 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
406 name == "TESTBOOL"
407 && delimiter == &Some(String::from("="))
408 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
409 => {
410 let arg_vec = extract_vec_from_args(&arguments)?;
411 let field_option = arg_vec.get(0);
412 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
413 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
414 let field_option_unwrapped_int = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
415 let field = field_option_unwrapped_int != 0;
416 Ok(highlevel::Command::Testbool {
417 field,
418 })
419 },
420 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
421 name == "TESTOTHERFILE"
422 && delimiter == &None
423 => {
424 Ok(highlevel::Command::Testotherfile {
425 })
426 },
427 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
428 name == "BRSF"
429 && delimiter == &Some(String::from("="))
430 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
431 => {
432 let arg_vec = extract_vec_from_args(&arguments)?;
433 let features_option = arg_vec.get(0);
434 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
435 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
436 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
437 Ok(highlevel::Command::Brsf {
438 features,
439 })
440 },
441 lowlevel::Command::Test { name, is_extension: true, ..} if
442 name == "CIND"
443 => {
444 Ok(highlevel::Command::CindTest {})
445 },
446 lowlevel::Command::Read { name, is_extension: true, ..} if
447 name == "CIND"
448 => {
449 Ok(highlevel::Command::CindRead {})
450 },
451 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
452 name == "CLCC"
453 && delimiter == &None
454 => {
455 Ok(highlevel::Command::Clcc {
456 })
457 },
458 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
459 name == "BCC"
460 && delimiter == &None
461 => {
462 Ok(highlevel::Command::Bcc {
463 })
464 },
465 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
466 name == "BCS"
467 && delimiter == &Some(String::from("="))
468 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
469 => {
470 let arg_vec = extract_vec_from_args(&arguments)?;
471 let codec_option = arg_vec.get(0);
472 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
473 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
474 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
475 Ok(highlevel::Command::Bcs {
476 codec,
477 })
478 },
479 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
480 name == "BAC"
481 && delimiter == &Some(String::from("="))
482 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
483 => {
484 let arg_vec = extract_vec_from_args(&arguments)?;
485 let mut codecs = Vec::new();
486 for codecs_element_raw in arg_vec[0..].iter() {
487 let codecs_element_option = if codecs_element_raw.is_empty() { None } else { Some(codecs_element_raw) };
488 let codecs_element_option_unwrapped = codecs_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
489 let codecs_element_option_unwrapped_primitive = extract_primitive_from_field(codecs_element_option_unwrapped, &arguments)?;
490 let codecs_element = extract_int_from_primitive(codecs_element_option_unwrapped_primitive, &arguments)?;
491 codecs.push(codecs_element);
492 }
493 Ok(highlevel::Command::Bac {
494 codecs,
495 })
496 },
497 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
498 name == "BIND"
499 && delimiter == &Some(String::from("="))
500 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
501 => {
502 let arg_vec = extract_vec_from_args(&arguments)?;
503 let mut indicators = Vec::new();
504 for indicators_element_raw in arg_vec[0..].iter() {
505 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
506 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
507 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
508 let indicators_element = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
509 indicators.push(indicators_element);
510 }
511 Ok(highlevel::Command::Bind {
512 indicators,
513 })
514 },
515 lowlevel::Command::Test { name, is_extension: true, ..} if
516 name == "BIND"
517 => {
518 Ok(highlevel::Command::BindTest {})
519 },
520 lowlevel::Command::Read { name, is_extension: true, ..} if
521 name == "BIND"
522 => {
523 Ok(highlevel::Command::BindRead {})
524 },
525 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
526 name == "BIEV"
527 && delimiter == &Some(String::from("="))
528 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
529 => {
530 let arg_vec = extract_vec_from_args(&arguments)?;
531 let anum_option = arg_vec.get(0);
532 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
533 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
534 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
535 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
536 let value_option = arg_vec.get(1);
537 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
538 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
539 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
540 Ok(highlevel::Command::Biev {
541 anum,
542 value,
543 })
544 },
545 lowlevel::Command::Test { name, is_extension: true, ..} if
546 name == "CHLD"
547 => {
548 Ok(highlevel::Command::ChldTest {})
549 },
550 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
551 name == "CMER"
552 && delimiter == &Some(String::from("="))
553 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
554 => {
555 let arg_vec = extract_vec_from_args(&arguments)?;
556 let mode_option = arg_vec.get(0);
557 let mode = match mode_option {
558 Some(mode_option_unwrapped) if !mode_option_unwrapped.is_empty() => {
559 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
560 let mode_unwrapped = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
561 Some(mode_unwrapped)
562 }
563 _ => None,
564 };
565 let keyp_option = arg_vec.get(1);
566 let keyp = match keyp_option {
567 Some(keyp_option_unwrapped) if !keyp_option_unwrapped.is_empty() => {
568 let keyp_option_unwrapped_primitive = extract_primitive_from_field(keyp_option_unwrapped, &arguments)?;
569 let keyp_unwrapped = extract_int_from_primitive(keyp_option_unwrapped_primitive, &arguments)?;
570 Some(keyp_unwrapped)
571 }
572 _ => None,
573 };
574 let disp_option = arg_vec.get(2);
575 let disp = match disp_option {
576 Some(disp_option_unwrapped) if !disp_option_unwrapped.is_empty() => {
577 let disp_option_unwrapped_primitive = extract_primitive_from_field(disp_option_unwrapped, &arguments)?;
578 let disp_unwrapped = extract_int_from_primitive(disp_option_unwrapped_primitive, &arguments)?;
579 Some(disp_unwrapped)
580 }
581 _ => None,
582 };
583 let ind_option = arg_vec.get(3);
584 let ind = match ind_option {
585 Some(ind_option_unwrapped) if !ind_option_unwrapped.is_empty() => {
586 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
587 let ind_unwrapped = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
588 Some(ind_unwrapped)
589 }
590 _ => None,
591 };
592 Ok(highlevel::Command::Cmer {
593 mode,
594 keyp,
595 disp,
596 ind,
597 })
598 },
599 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
600 name == "NREC"
601 && delimiter == &Some(String::from("="))
602 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
603 => {
604 let arg_vec = extract_vec_from_args(&arguments)?;
605 let nrec_option = arg_vec.get(0);
606 let nrec_option_unwrapped = nrec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
607 let nrec_option_unwrapped_primitive = extract_primitive_from_field(nrec_option_unwrapped, &arguments)?;
608 let nrec_option_unwrapped_int = extract_int_from_primitive(nrec_option_unwrapped_primitive, &arguments)?;
609 let nrec = nrec_option_unwrapped_int != 0;
610 Ok(highlevel::Command::Nrec {
611 nrec,
612 })
613 },
614 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
615 name == "COPS"
616 && delimiter == &Some(String::from("="))
617 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
618 => {
619 let arg_vec = extract_vec_from_args(&arguments)?;
620 let three_option = arg_vec.get(0);
621 let three_option_unwrapped = three_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
622 let three_option_unwrapped_primitive = extract_primitive_from_field(three_option_unwrapped, &arguments)?;
623 let three = extract_int_from_primitive(three_option_unwrapped_primitive, &arguments)?;
624 let format_option = arg_vec.get(1);
625 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
626 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
627 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
628 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
629 Ok(highlevel::Command::Cops {
630 three,
631 format,
632 })
633 },
634 lowlevel::Command::Read { name, is_extension: true, ..} if
635 name == "COPS"
636 => {
637 Ok(highlevel::Command::CopsRead {})
638 },
639 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
640 name == "CMEE"
641 && delimiter == &Some(String::from("="))
642 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
643 => {
644 let arg_vec = extract_vec_from_args(&arguments)?;
645 let enable_option = arg_vec.get(0);
646 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
647 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
648 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
649 let enable = enable_option_unwrapped_int != 0;
650 Ok(highlevel::Command::Cmee {
651 enable,
652 })
653 },
654 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
655 name == "CCWA"
656 && delimiter == &Some(String::from("="))
657 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
658 => {
659 let arg_vec = extract_vec_from_args(&arguments)?;
660 let enable_option = arg_vec.get(0);
661 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
662 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
663 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
664 let enable = enable_option_unwrapped_int != 0;
665 Ok(highlevel::Command::Ccwa {
666 enable,
667 })
668 },
669 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
670 name == "CLIP"
671 && delimiter == &Some(String::from("="))
672 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
673 => {
674 let arg_vec = extract_vec_from_args(&arguments)?;
675 let enable_option = arg_vec.get(0);
676 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
677 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
678 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
679 let enable = enable_option_unwrapped_int != 0;
680 Ok(highlevel::Command::Clip {
681 enable,
682 })
683 },
684 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
685 name == "CNUM"
686 && delimiter == &None
687 => {
688 Ok(highlevel::Command::Cnum {
689 })
690 },
691 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
692 name == "VTS"
693 && delimiter == &Some(String::from("="))
694 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
695 => {
696 let arg_vec = extract_vec_from_args(&arguments)?;
697 let code_option = arg_vec.get(0);
698 let code_option_unwrapped = code_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
699 let code_option_unwrapped_primitive = extract_primitive_from_field(code_option_unwrapped, &arguments)?;
700 let code = code_option_unwrapped_primitive.clone();
701 Ok(highlevel::Command::Vts {
702 code,
703 })
704 },
705 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
706 name == "VGS"
707 && delimiter == &Some(String::from("="))
708 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
709 => {
710 let arg_vec = extract_vec_from_args(&arguments)?;
711 let level_option = arg_vec.get(0);
712 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
713 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
714 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
715 Ok(highlevel::Command::Vgs {
716 level,
717 })
718 },
719 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
720 name == "VGM"
721 && delimiter == &Some(String::from("="))
722 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
723 => {
724 let arg_vec = extract_vec_from_args(&arguments)?;
725 let level_option = arg_vec.get(0);
726 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
727 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
728 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
729 Ok(highlevel::Command::Vgm {
730 level,
731 })
732 },
733 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
734 name == "BIA"
735 && delimiter == &Some(String::from("="))
736 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
737 => {
738 let arg_vec = extract_vec_from_args(&arguments)?;
739 let mut indrep = Vec::new();
740 for indrep_element_raw in arg_vec[0..].iter() {
741 let indrep_element_option = if indrep_element_raw.is_empty() { None } else { Some(indrep_element_raw) };
742 let indrep_element = match indrep_element_option {
743 Some(indrep_element_option_unwrapped) if !indrep_element_option_unwrapped.is_empty() => {
744 let indrep_element_option_unwrapped_primitive = extract_primitive_from_field(indrep_element_option_unwrapped, &arguments)?;
745 let indrep_element_option_unwrapped_int = extract_int_from_primitive(indrep_element_option_unwrapped_primitive, &arguments)?;
746 let indrep_element_unwrapped = indrep_element_option_unwrapped_int != 0;
747 Some(indrep_element_unwrapped)
748 }
749 _ => None,
750 };
751 indrep.push(indrep_element);
752 }
753 Ok(highlevel::Command::Bia {
754 indrep,
755 })
756 },
757 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
758 name == "A"
759 && delimiter == &None
760 => {
761 Ok(highlevel::Command::Answer {
762 })
763 },
764 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
765 name == "CHUP"
766 && delimiter == &None
767 => {
768 Ok(highlevel::Command::Chup {
769 })
770 },
771 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
772 name == "CHLD"
773 && delimiter == &Some(String::from("="))
774 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
775 => {
776 let arg_vec = extract_vec_from_args(&arguments)?;
777 let command_option = arg_vec.get(0);
778 let command_option_unwrapped = command_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
779 let command_option_unwrapped_primitive = extract_primitive_from_field(command_option_unwrapped, &arguments)?;
780 let command = command_option_unwrapped_primitive.clone();
781 Ok(highlevel::Command::Chld {
782 command,
783 })
784 },
785 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
786 name == "D"
787 && delimiter == &None
788 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
789 => {
790 let arg_vec = extract_vec_from_args(&arguments)?;
791 let number_option = arg_vec.get(0);
792 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
793 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
794 let number = number_option_unwrapped_primitive.clone();
795 Ok(highlevel::Command::AtdNumber {
796 number,
797 })
798 },
799 lowlevel::Command::Execute { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
800 name == "D"
801 && delimiter == &Some(String::from(">"))
802 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
803 => {
804 let arg_vec = extract_vec_from_args(&arguments)?;
805 let location_option = arg_vec.get(0);
806 let location_option_unwrapped = location_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
807 let location_option_unwrapped_primitive = extract_primitive_from_field(location_option_unwrapped, &arguments)?;
808 let location = location_option_unwrapped_primitive.clone();
809 Ok(highlevel::Command::AtdMemory {
810 location,
811 })
812 },
813 lowlevel::Command::Execute { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
814 name == "BLDN"
815 && delimiter == &None
816 => {
817 Ok(highlevel::Command::Bldn {
818 })
819 },
820 _ => Err(DeserializeErrorCause::UnknownCommand(lowlevel.clone())),
821 }
822}
823
824pub fn raise_success(lowlevel: &lowlevel::Response) -> Result<highlevel::Success, DeserializeErrorCause> {
826 match lowlevel {
827 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
828 name == "TEST"
829 && delimiter == &Some(String::from(":"))
830 => {
831 Ok(highlevel::Success::Test {
832 })
833 },
834 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
835 name == "TESTNOD"
836 && delimiter == &None
837 => {
838 Ok(highlevel::Success::Testnod {
839 })
840 },
841 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
842 name == "TESTN"
843 && delimiter == &Some(String::from(":"))
844 => {
845 Ok(highlevel::Success::TestResponse {
846 })
847 },
848 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
849 name == "TESTEXT"
850 && delimiter == &Some(String::from(":"))
851 => {
852 Ok(highlevel::Success::Testext {
853 })
854 },
855 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
856 name == "TESTEXTNOD"
857 && delimiter == &None
858 => {
859 Ok(highlevel::Success::Testextnod {
860 })
861 },
862 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
863 name == "TESTI"
864 && delimiter == &Some(String::from(":"))
865 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
866 => {
867 let arg_vec = extract_vec_from_args(&arguments)?;
868 let field_option = arg_vec.get(0);
869 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
870 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
871 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
872 Ok(highlevel::Success::Testi {
873 field,
874 })
875 },
876 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
877 name == "TESTINOD"
878 && delimiter == &None
879 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
880 => {
881 let arg_vec = extract_vec_from_args(&arguments)?;
882 let field_option = arg_vec.get(0);
883 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
884 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
885 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
886 Ok(highlevel::Success::Testinod {
887 field,
888 })
889 },
890 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
891 name == "TESTIC"
892 && delimiter == &Some(String::from(":"))
893 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
894 => {
895 let arg_vec = extract_vec_from_args(&arguments)?;
896 let field_option = arg_vec.get(0);
897 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
898 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
899 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
900 Ok(highlevel::Success::Testic {
901 field,
902 })
903 },
904 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
905 name == "TESTS"
906 && delimiter == &Some(String::from(":"))
907 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
908 => {
909 let arg_vec = extract_vec_from_args(&arguments)?;
910 let field_option = arg_vec.get(0);
911 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
912 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
913 let field = field_option_unwrapped_primitive.clone();
914 Ok(highlevel::Success::Tests {
915 field,
916 })
917 },
918 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
919 name == "TESTSI"
920 && delimiter == &Some(String::from(":"))
921 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
922 => {
923 let arg_vec = extract_vec_from_args(&arguments)?;
924 let field1_option = arg_vec.get(0);
925 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
926 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
927 let field1 = field1_option_unwrapped_primitive.clone();
928 let field2_option = arg_vec.get(1);
929 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
930 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
931 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
932 Ok(highlevel::Success::Testsi {
933 field1,
934 field2,
935 })
936 },
937 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
938 name == "TESTSIC"
939 && delimiter == &Some(String::from(":"))
940 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
941 => {
942 let arg_vec = extract_vec_from_args(&arguments)?;
943 let field1_option = arg_vec.get(0);
944 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
945 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
946 let field1 = field1_option_unwrapped_primitive.clone();
947 let field2_option = arg_vec.get(1);
948 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
949 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
950 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
951 Ok(highlevel::Success::Testsic {
952 field1,
953 field2,
954 })
955 },
956 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
957 name == "TESTIO"
958 && delimiter == &Some(String::from(":"))
959 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
960 => {
961 let arg_vec = extract_vec_from_args(&arguments)?;
962 let field1_option = arg_vec.get(0);
963 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
964 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
965 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
966 let field2_option = arg_vec.get(1);
967 let field2 = match field2_option {
968 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
969 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
970 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
971 Some(field2_unwrapped)
972 }
973 _ => None,
974 };
975 Ok(highlevel::Success::Testio {
976 field1,
977 field2,
978 })
979 },
980 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
981 name == "TESTIOO"
982 && delimiter == &Some(String::from(":"))
983 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
984 => {
985 let arg_vec = extract_vec_from_args(&arguments)?;
986 let field1_option = arg_vec.get(0);
987 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
988 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
989 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
990 let field2_option = arg_vec.get(1);
991 let field2 = match field2_option {
992 Some(field2_option_unwrapped) if !field2_option_unwrapped.is_empty() => {
993 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
994 let field2_unwrapped = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
995 Some(field2_unwrapped)
996 }
997 _ => None,
998 };
999 let field3_option = arg_vec.get(2);
1000 let field3 = match field3_option {
1001 Some(field3_option_unwrapped) if !field3_option_unwrapped.is_empty() => {
1002 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1003 let field3_unwrapped = field3_option_unwrapped_primitive.clone();
1004 Some(field3_unwrapped)
1005 }
1006 _ => None,
1007 };
1008 Ok(highlevel::Success::Testioo {
1009 field1,
1010 field2,
1011 field3,
1012 })
1013 },
1014 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1015 name == "TESTL"
1016 && delimiter == &Some(String::from(":"))
1017 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1018 => {
1019 let arg_vec = extract_vec_from_args(&arguments)?;
1020 let mut field = Vec::new();
1021 for field_element_raw in arg_vec[0..].iter() {
1022 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
1023 let field_element_option_unwrapped = field_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1024 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
1025 let field_element = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
1026 field.push(field_element);
1027 }
1028 Ok(highlevel::Success::Testl {
1029 field,
1030 })
1031 },
1032 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1033 name == "TESTOL"
1034 && delimiter == &Some(String::from(":"))
1035 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1036 => {
1037 let arg_vec = extract_vec_from_args(&arguments)?;
1038 let mut field = Vec::new();
1039 for field_element_raw in arg_vec[0..].iter() {
1040 let field_element_option = if field_element_raw.is_empty() { None } else { Some(field_element_raw) };
1041 let field_element = match field_element_option {
1042 Some(field_element_option_unwrapped) if !field_element_option_unwrapped.is_empty() => {
1043 let field_element_option_unwrapped_primitive = extract_primitive_from_field(field_element_option_unwrapped, &arguments)?;
1044 let field_element_unwrapped = extract_int_from_primitive(field_element_option_unwrapped_primitive, &arguments)?;
1045 Some(field_element_unwrapped)
1046 }
1047 _ => None,
1048 };
1049 field.push(field_element);
1050 }
1051 Ok(highlevel::Success::Testol {
1052 field,
1053 })
1054 },
1055 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1056 name == "TESTM"
1057 && delimiter == &Some(String::from(":"))
1058 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1059 => {
1060 let arg_vec = extract_vec_from_args(&arguments)?;
1061 let mut field = std::collections::HashMap::new();
1062 for field_element in arg_vec[0..].iter() {
1063 let field_element_primitive = extract_key_from_field(field_element, &arguments)?;
1064 let field_key = extract_int_from_primitive(field_element_primitive, &arguments)?;
1065 let field_element_primitive = extract_value_from_field(field_element, &arguments)?;
1066 let field_value = field_element_primitive.clone();
1067 let _ = field.insert(field_key, field_value);
1068 }
1069 Ok(highlevel::Success::Testm {
1070 field,
1071 })
1072 },
1073 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1074 name == "TESTP"
1075 && delimiter == &Some(String::from(":"))
1076 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1077 => {
1078 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1079 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1080 let field_option = arg_vec.get(0);
1081 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1082 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1083 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1084 Ok(highlevel::Success::Testp {
1085 field,
1086 })
1087 },
1088 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1089 name == "TESTPP"
1090 && delimiter == &Some(String::from(":"))
1091 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1092 => {
1093 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1094 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1095 let field1_option = arg_vec.get(0);
1096 let field1_option_unwrapped = field1_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1097 let field1_option_unwrapped_primitive = extract_primitive_from_field(field1_option_unwrapped, &arguments)?;
1098 let field1 = extract_int_from_primitive(field1_option_unwrapped_primitive, &arguments)?;
1099 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1100 let field2_option = arg_vec.get(0);
1101 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1102 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1103 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1104 let field3_option = arg_vec.get(1);
1105 let field3_option_unwrapped = field3_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1106 let field3_option_unwrapped_primitive = extract_primitive_from_field(field3_option_unwrapped, &arguments)?;
1107 let field3 = field3_option_unwrapped_primitive.clone();
1108 Ok(highlevel::Success::Testpp {
1109 field1,
1110 field2,
1111 field3,
1112 })
1113 },
1114 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1115 name == "TESTPMPIL"
1116 && delimiter == &Some(String::from(":"))
1117 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1118 => {
1119 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1120 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1121 let mut field1 = std::collections::HashMap::new();
1122 for field1_element in arg_vec[0..].iter() {
1123 let field1_element_primitive = extract_key_from_field(field1_element, &arguments)?;
1124 let field1_key = extract_int_from_primitive(field1_element_primitive, &arguments)?;
1125 let field1_element_primitive = extract_value_from_field(field1_element, &arguments)?;
1126 let field1_value = field1_element_primitive.clone();
1127 let _ = field1.insert(field1_key, field1_value);
1128 }
1129 let arg_vec = arg_vec_vec.get(1).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1130 let field2_option = arg_vec.get(0);
1131 let field2_option_unwrapped = field2_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1132 let field2_option_unwrapped_primitive = extract_primitive_from_field(field2_option_unwrapped, &arguments)?;
1133 let field2 = extract_int_from_primitive(field2_option_unwrapped_primitive, &arguments)?;
1134 let mut field3 = Vec::new();
1135 for field3_element_raw in arg_vec[1..].iter() {
1136 let field3_element_option = if field3_element_raw.is_empty() { None } else { Some(field3_element_raw) };
1137 let field3_element_option_unwrapped = field3_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1138 let field3_element_option_unwrapped_primitive = extract_primitive_from_field(field3_element_option_unwrapped, &arguments)?;
1139 let field3_element = extract_int_from_primitive(field3_element_option_unwrapped_primitive, &arguments)?;
1140 field3.push(field3_element);
1141 }
1142 Ok(highlevel::Success::Testpmpil {
1143 field1,
1144 field2,
1145 field3,
1146 })
1147 },
1148 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1149 name == "SAME"
1150 && delimiter == &Some(String::from(":"))
1151 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1152 => {
1153 let arg_vec = extract_vec_from_args(&arguments)?;
1154 let field_option = arg_vec.get(0);
1155 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1156 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1157 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1158 Ok(highlevel::Success::SameOne {
1159 field,
1160 })
1161 },
1162 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1163 name == "SAME"
1164 && delimiter == &Some(String::from(":"))
1165 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1166 => {
1167 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1168 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1169 let field_option = arg_vec.get(0);
1170 let field_option_unwrapped = field_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1171 let field_option_unwrapped_primitive = extract_primitive_from_field(field_option_unwrapped, &arguments)?;
1172 let field = extract_int_from_primitive(field_option_unwrapped_primitive, &arguments)?;
1173 Ok(highlevel::Success::SameTwo {
1174 field,
1175 })
1176 },
1177 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1178 name == "BRSF"
1179 && delimiter == &Some(String::from(":"))
1180 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1181 => {
1182 let arg_vec = extract_vec_from_args(&arguments)?;
1183 let features_option = arg_vec.get(0);
1184 let features_option_unwrapped = features_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1185 let features_option_unwrapped_primitive = extract_primitive_from_field(features_option_unwrapped, &arguments)?;
1186 let features = extract_int_from_primitive(features_option_unwrapped_primitive, &arguments)?;
1187 Ok(highlevel::Success::Brsf {
1188 features,
1189 })
1190 },
1191 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1192 name == "CIND"
1193 && delimiter == &Some(String::from(":"))
1194 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1195 => {
1196 let arg_vec = extract_vec_from_args(&arguments)?;
1197 let mut ordered_values = Vec::new();
1198 for ordered_values_element_raw in arg_vec[0..].iter() {
1199 let ordered_values_element_option = if ordered_values_element_raw.is_empty() { None } else { Some(ordered_values_element_raw) };
1200 let ordered_values_element_option_unwrapped = ordered_values_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1201 let ordered_values_element_option_unwrapped_primitive = extract_primitive_from_field(ordered_values_element_option_unwrapped, &arguments)?;
1202 let ordered_values_element = extract_int_from_primitive(ordered_values_element_option_unwrapped_primitive, &arguments)?;
1203 ordered_values.push(ordered_values_element);
1204 }
1205 Ok(highlevel::Success::CindRead {
1206 ordered_values,
1207 })
1208 },
1209 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1210 name == "CLCC"
1211 && delimiter == &Some(String::from(":"))
1212 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1213 => {
1214 let arg_vec = extract_vec_from_args(&arguments)?;
1215 let index_option = arg_vec.get(0);
1216 let index_option_unwrapped = index_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1217 let index_option_unwrapped_primitive = extract_primitive_from_field(index_option_unwrapped, &arguments)?;
1218 let index = extract_int_from_primitive(index_option_unwrapped_primitive, &arguments)?;
1219 let direction_option = arg_vec.get(1);
1220 let direction_option_unwrapped = direction_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1221 let direction_option_unwrapped_primitive = extract_primitive_from_field(direction_option_unwrapped, &arguments)?;
1222 let direction = extract_int_from_primitive(direction_option_unwrapped_primitive, &arguments)?;
1223 let status_option = arg_vec.get(2);
1224 let status_option_unwrapped = status_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1225 let status_option_unwrapped_primitive = extract_primitive_from_field(status_option_unwrapped, &arguments)?;
1226 let status = extract_int_from_primitive(status_option_unwrapped_primitive, &arguments)?;
1227 let mode_option = arg_vec.get(3);
1228 let mode_option_unwrapped = mode_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1229 let mode_option_unwrapped_primitive = extract_primitive_from_field(mode_option_unwrapped, &arguments)?;
1230 let mode = extract_int_from_primitive(mode_option_unwrapped_primitive, &arguments)?;
1231 let multiparty_option = arg_vec.get(4);
1232 let multiparty_option_unwrapped = multiparty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1233 let multiparty_option_unwrapped_primitive = extract_primitive_from_field(multiparty_option_unwrapped, &arguments)?;
1234 let multiparty = extract_int_from_primitive(multiparty_option_unwrapped_primitive, &arguments)?;
1235 let number_option = arg_vec.get(5);
1236 let number = match number_option {
1237 Some(number_option_unwrapped) if !number_option_unwrapped.is_empty() => {
1238 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1239 let number_unwrapped = number_option_unwrapped_primitive.clone();
1240 Some(number_unwrapped)
1241 }
1242 _ => None,
1243 };
1244 let ty_option = arg_vec.get(6);
1245 let ty = match ty_option {
1246 Some(ty_option_unwrapped) if !ty_option_unwrapped.is_empty() => {
1247 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1248 let ty_unwrapped = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1249 Some(ty_unwrapped)
1250 }
1251 _ => None,
1252 };
1253 let alpha_option = arg_vec.get(7);
1254 let alpha = match alpha_option {
1255 Some(alpha_option_unwrapped) if !alpha_option_unwrapped.is_empty() => {
1256 let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1257 let alpha_unwrapped = alpha_option_unwrapped_primitive.clone();
1258 Some(alpha_unwrapped)
1259 }
1260 _ => None,
1261 };
1262 let priority_option = arg_vec.get(8);
1263 let priority = match priority_option {
1264 Some(priority_option_unwrapped) if !priority_option_unwrapped.is_empty() => {
1265 let priority_option_unwrapped_primitive = extract_primitive_from_field(priority_option_unwrapped, &arguments)?;
1266 let priority_unwrapped = extract_int_from_primitive(priority_option_unwrapped_primitive, &arguments)?;
1267 Some(priority_unwrapped)
1268 }
1269 _ => None,
1270 };
1271 Ok(highlevel::Success::Clcc {
1272 index,
1273 direction,
1274 status,
1275 mode,
1276 multiparty,
1277 number,
1278 ty,
1279 alpha,
1280 priority,
1281 })
1282 },
1283 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1284 name == "BCS"
1285 && delimiter == &Some(String::from(":"))
1286 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1287 => {
1288 let arg_vec = extract_vec_from_args(&arguments)?;
1289 let codec_option = arg_vec.get(0);
1290 let codec_option_unwrapped = codec_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1291 let codec_option_unwrapped_primitive = extract_primitive_from_field(codec_option_unwrapped, &arguments)?;
1292 let codec = extract_int_from_primitive(codec_option_unwrapped_primitive, &arguments)?;
1293 Ok(highlevel::Success::Bcs {
1294 codec,
1295 })
1296 },
1297 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1298 name == "BIND"
1299 && delimiter == &Some(String::from(":"))
1300 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1301 => {
1302 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1303 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1304 let mut indicators = Vec::new();
1305 for indicators_element_raw in arg_vec[0..].iter() {
1306 let indicators_element_option = if indicators_element_raw.is_empty() { None } else { Some(indicators_element_raw) };
1307 let indicators_element_option_unwrapped = indicators_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1308 let indicators_element_option_unwrapped_primitive = extract_primitive_from_field(indicators_element_option_unwrapped, &arguments)?;
1309 let indicators_element_option_unwrapped_int = extract_int_from_primitive(indicators_element_option_unwrapped_primitive, &arguments)?;
1310 let indicators_element = super::types::BluetoothHFIndicator::from_i64(indicators_element_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1311 indicators.push(indicators_element);
1312 }
1313 Ok(highlevel::Success::BindList {
1314 indicators,
1315 })
1316 },
1317 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1318 name == "BIND"
1319 && delimiter == &Some(String::from(":"))
1320 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1321 => {
1322 let arg_vec = extract_vec_from_args(&arguments)?;
1323 let anum_option = arg_vec.get(0);
1324 let anum_option_unwrapped = anum_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1325 let anum_option_unwrapped_primitive = extract_primitive_from_field(anum_option_unwrapped, &arguments)?;
1326 let anum_option_unwrapped_int = extract_int_from_primitive(anum_option_unwrapped_primitive, &arguments)?;
1327 let anum = super::types::BluetoothHFIndicator::from_i64(anum_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1328 let state_option = arg_vec.get(1);
1329 let state_option_unwrapped = state_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1330 let state_option_unwrapped_primitive = extract_primitive_from_field(state_option_unwrapped, &arguments)?;
1331 let state_option_unwrapped_int = extract_int_from_primitive(state_option_unwrapped_primitive, &arguments)?;
1332 let state = state_option_unwrapped_int != 0;
1333 Ok(highlevel::Success::BindStatus {
1334 anum,
1335 state,
1336 })
1337 },
1338 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1339 name == "CHLD"
1340 && delimiter == &Some(String::from(":"))
1341 && matches!(arguments, lowlevel::Arguments::ParenthesisDelimitedArgumentLists(_))
1342 => {
1343 let arg_vec_vec = extract_vec_vec_from_args(&arguments)?;
1344 let arg_vec = arg_vec_vec.get(0).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1345 let mut commands = Vec::new();
1346 for commands_element_raw in arg_vec[0..].iter() {
1347 let commands_element_option = if commands_element_raw.is_empty() { None } else { Some(commands_element_raw) };
1348 let commands_element_option_unwrapped = commands_element_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1349 let commands_element_option_unwrapped_primitive = extract_primitive_from_field(commands_element_option_unwrapped, &arguments)?;
1350 let commands_element = commands_element_option_unwrapped_primitive.clone();
1351 commands.push(commands_element);
1352 }
1353 Ok(highlevel::Success::Chld {
1354 commands,
1355 })
1356 },
1357 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1358 name == "COPS"
1359 && delimiter == &Some(String::from(":"))
1360 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1361 => {
1362 let arg_vec = extract_vec_from_args(&arguments)?;
1363 let format_option = arg_vec.get(0);
1364 let format_option_unwrapped = format_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1365 let format_option_unwrapped_primitive = extract_primitive_from_field(format_option_unwrapped, &arguments)?;
1366 let format_option_unwrapped_int = extract_int_from_primitive(format_option_unwrapped_primitive, &arguments)?;
1367 let format = super::types::NetworkOperatorNameFormat::from_i64(format_option_unwrapped_int).ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1368 let zero_option = arg_vec.get(1);
1369 let zero_option_unwrapped = zero_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1370 let zero_option_unwrapped_primitive = extract_primitive_from_field(zero_option_unwrapped, &arguments)?;
1371 let zero = extract_int_from_primitive(zero_option_unwrapped_primitive, &arguments)?;
1372 let operator_option = arg_vec.get(2);
1373 let operator_option_unwrapped = operator_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1374 let operator_option_unwrapped_primitive = extract_primitive_from_field(operator_option_unwrapped, &arguments)?;
1375 let operator = operator_option_unwrapped_primitive.clone();
1376 Ok(highlevel::Success::Cops {
1377 format,
1378 zero,
1379 operator,
1380 })
1381 },
1382 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1383 name == "CLIP"
1384 && delimiter == &Some(String::from(":"))
1385 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1386 => {
1387 let arg_vec = extract_vec_from_args(&arguments)?;
1388 let number_option = arg_vec.get(0);
1389 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1390 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1391 let number = number_option_unwrapped_primitive.clone();
1392 let ty_option = arg_vec.get(1);
1393 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1394 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1395 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1396 Ok(highlevel::Success::Clip {
1397 number,
1398 ty,
1399 })
1400 },
1401 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1402 name == "CNUM"
1403 && delimiter == &Some(String::from(":"))
1404 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1405 => {
1406 let arg_vec = extract_vec_from_args(&arguments)?;
1407 let alpha_option = arg_vec.get(0);
1408 let alpha_option_unwrapped = alpha_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1409 let alpha_option_unwrapped_primitive = extract_primitive_from_field(alpha_option_unwrapped, &arguments)?;
1410 let alpha = alpha_option_unwrapped_primitive.clone();
1411 let number_option = arg_vec.get(1);
1412 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1413 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1414 let number = number_option_unwrapped_primitive.clone();
1415 let ty_option = arg_vec.get(2);
1416 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1417 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1418 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1419 let speed_option = arg_vec.get(3);
1420 let speed_option_unwrapped = speed_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1421 let speed_option_unwrapped_primitive = extract_primitive_from_field(speed_option_unwrapped, &arguments)?;
1422 let speed = speed_option_unwrapped_primitive.clone();
1423 let service_option = arg_vec.get(4);
1424 let service_option_unwrapped = service_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1425 let service_option_unwrapped_primitive = extract_primitive_from_field(service_option_unwrapped, &arguments)?;
1426 let service = extract_int_from_primitive(service_option_unwrapped_primitive, &arguments)?;
1427 Ok(highlevel::Success::Cnum {
1428 alpha,
1429 number,
1430 ty,
1431 speed,
1432 service,
1433 })
1434 },
1435 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1436 name == "VGS"
1437 && delimiter == &Some(String::from(":"))
1438 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1439 => {
1440 let arg_vec = extract_vec_from_args(&arguments)?;
1441 let level_option = arg_vec.get(0);
1442 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1443 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1444 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1445 Ok(highlevel::Success::Vgs {
1446 level,
1447 })
1448 },
1449 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1450 name == "VGM"
1451 && delimiter == &Some(String::from(":"))
1452 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1453 => {
1454 let arg_vec = extract_vec_from_args(&arguments)?;
1455 let level_option = arg_vec.get(0);
1456 let level_option_unwrapped = level_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1457 let level_option_unwrapped_primitive = extract_primitive_from_field(level_option_unwrapped, &arguments)?;
1458 let level = extract_int_from_primitive(level_option_unwrapped_primitive, &arguments)?;
1459 Ok(highlevel::Success::Vgm {
1460 level,
1461 })
1462 },
1463 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1464 name == "CIEV"
1465 && delimiter == &Some(String::from(":"))
1466 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1467 => {
1468 let arg_vec = extract_vec_from_args(&arguments)?;
1469 let ind_option = arg_vec.get(0);
1470 let ind_option_unwrapped = ind_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1471 let ind_option_unwrapped_primitive = extract_primitive_from_field(ind_option_unwrapped, &arguments)?;
1472 let ind = extract_int_from_primitive(ind_option_unwrapped_primitive, &arguments)?;
1473 let value_option = arg_vec.get(1);
1474 let value_option_unwrapped = value_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1475 let value_option_unwrapped_primitive = extract_primitive_from_field(value_option_unwrapped, &arguments)?;
1476 let value = extract_int_from_primitive(value_option_unwrapped_primitive, &arguments)?;
1477 Ok(highlevel::Success::Ciev {
1478 ind,
1479 value,
1480 })
1481 },
1482 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1483 name == "CCWA"
1484 && delimiter == &Some(String::from(":"))
1485 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1486 => {
1487 let arg_vec = extract_vec_from_args(&arguments)?;
1488 let number_option = arg_vec.get(0);
1489 let number_option_unwrapped = number_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1490 let number_option_unwrapped_primitive = extract_primitive_from_field(number_option_unwrapped, &arguments)?;
1491 let number = number_option_unwrapped_primitive.clone();
1492 let ty_option = arg_vec.get(1);
1493 let ty_option_unwrapped = ty_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1494 let ty_option_unwrapped_primitive = extract_primitive_from_field(ty_option_unwrapped, &arguments)?;
1495 let ty = extract_int_from_primitive(ty_option_unwrapped_primitive, &arguments)?;
1496 Ok(highlevel::Success::Ccwa {
1497 number,
1498 ty,
1499 })
1500 },
1501 lowlevel::Response::Success { name, is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter, .. }} if
1502 name == "RING"
1503 && delimiter == &None
1504 => {
1505 Ok(highlevel::Success::Ring {
1506 })
1507 },
1508 lowlevel::Response::Success { name, is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter, arguments, .. }} if
1509 name == "BSIR"
1510 && delimiter == &Some(String::from(":"))
1511 && matches!(arguments, lowlevel::Arguments::ArgumentList(_))
1512 => {
1513 let arg_vec = extract_vec_from_args(&arguments)?;
1514 let enable_option = arg_vec.get(0);
1515 let enable_option_unwrapped = enable_option.ok_or_else(|| DeserializeErrorCause::UnknownArguments(arguments.clone()))?;
1516 let enable_option_unwrapped_primitive = extract_primitive_from_field(enable_option_unwrapped, &arguments)?;
1517 let enable_option_unwrapped_int = extract_int_from_primitive(enable_option_unwrapped_primitive, &arguments)?;
1518 let enable = enable_option_unwrapped_int != 0;
1519 Ok(highlevel::Success::Bsir {
1520 enable,
1521 })
1522 },
1523 _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1524 }
1525}
1526
1527pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1528 match highlevel {
1529 highlevel::Command::Testex { } => {
1530 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1531 lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1532 },
1533 highlevel::Command::Testexext { } => {
1534 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1535 lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1536 },
1537 highlevel::Command::TestCommand { } => {
1538 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1539 lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1540 },
1541 highlevel::Command::Testexextfi {
1542 field,
1543 } => {
1544 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1545 let field_string = i64::to_string(&field);
1546 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1547 raw_arguments.push(field_primitive);
1548 while let Some(arg) = raw_arguments.last() {
1549 if arg.is_empty() {
1550 let _ = raw_arguments.pop();
1551 } else {
1552 break;
1553 }
1554 }
1555 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1556 lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1557 },
1558 highlevel::Command::Testexextfic {
1559 field,
1560 } => {
1561 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1562 let field_string = i64::to_string(&field);
1563 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1564 raw_arguments.push(field_primitive);
1565 while let Some(arg) = raw_arguments.last() {
1566 if arg.is_empty() {
1567 let _ = raw_arguments.pop();
1568 } else {
1569 break;
1570 }
1571 }
1572 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1573 lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1574 },
1575 highlevel::Command::Testnsd {
1576 field,
1577 } => {
1578 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1579 let field_string = i64::to_string(&field);
1580 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1581 raw_arguments.push(field_primitive);
1582 while let Some(arg) = raw_arguments.last() {
1583 if arg.is_empty() {
1584 let _ = raw_arguments.pop();
1585 } else {
1586 break;
1587 }
1588 }
1589 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1590 lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1591 },
1592 highlevel::Command::Testnst {
1593 field,
1594 } => {
1595 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1596 let field_string = i64::to_string(&field);
1597 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1598 raw_arguments.push(field_primitive);
1599 while let Some(arg) = raw_arguments.last() {
1600 if arg.is_empty() {
1601 let _ = raw_arguments.pop();
1602 } else {
1603 break;
1604 }
1605 }
1606 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1607 lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1608 },
1609 highlevel::Command::Testnsdnst {
1610 field,
1611 } => {
1612 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1613 let field_string = i64::to_string(&field);
1614 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1615 raw_arguments.push(field_primitive);
1616 while let Some(arg) = raw_arguments.last() {
1617 if arg.is_empty() {
1618 let _ = raw_arguments.pop();
1619 } else {
1620 break;
1621 }
1622 }
1623 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1624 lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1625 },
1626 highlevel::Command::Testnod {
1627 field,
1628 } => {
1629 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1630 let field_string = i64::to_string(&field);
1631 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1632 raw_arguments.push(field_primitive);
1633 while let Some(arg) = raw_arguments.last() {
1634 if arg.is_empty() {
1635 let _ = raw_arguments.pop();
1636 } else {
1637 break;
1638 }
1639 }
1640 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1641 lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1642 },
1643 highlevel::Command::Testexextfs {
1644 field,
1645 } => {
1646 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1647 let field_string = field.clone();
1648 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1649 raw_arguments.push(field_primitive);
1650 while let Some(arg) = raw_arguments.last() {
1651 if arg.is_empty() {
1652 let _ = raw_arguments.pop();
1653 } else {
1654 break;
1655 }
1656 }
1657 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1658 lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1659 },
1660 highlevel::Command::Testexextfsi {
1661 field1,
1662 field2,
1663 } => {
1664 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1665 let field1_string = field1.clone();
1666 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1667 raw_arguments.push(field1_primitive);
1668 let field2_string = i64::to_string(&field2);
1669 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1670 raw_arguments.push(field2_primitive);
1671 while let Some(arg) = raw_arguments.last() {
1672 if arg.is_empty() {
1673 let _ = raw_arguments.pop();
1674 } else {
1675 break;
1676 }
1677 }
1678 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1679 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1680 },
1681 highlevel::Command::Testexextfsic {
1682 field1,
1683 field2,
1684 } => {
1685 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1686 let field1_string = field1.clone();
1687 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1688 raw_arguments.push(field1_primitive);
1689 let field2_string = i64::to_string(&field2);
1690 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1691 raw_arguments.push(field2_primitive);
1692 while let Some(arg) = raw_arguments.last() {
1693 if arg.is_empty() {
1694 let _ = raw_arguments.pop();
1695 } else {
1696 break;
1697 }
1698 }
1699 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1700 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1701 },
1702 highlevel::Command::Testio {
1703 field1,
1704 field2,
1705 } => {
1706 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1707 let field1_string = i64::to_string(&field1);
1708 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1709 raw_arguments.push(field1_primitive);
1710 match field2 {
1711 None => {
1712 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1713 }
1714 Some(field2_unwrapped) => {
1715 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1716 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1717 raw_arguments.push(field2_primitive);
1718 }
1719 }
1720 while let Some(arg) = raw_arguments.last() {
1721 if arg.is_empty() {
1722 let _ = raw_arguments.pop();
1723 } else {
1724 break;
1725 }
1726 }
1727 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1728 lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1729 },
1730 highlevel::Command::Testallopt {
1731 field1,
1732 field2,
1733 field3,
1734 } => {
1735 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1736 match field1 {
1737 None => {
1738 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1739 }
1740 Some(field1_unwrapped) => {
1741 let field1_unwrapped_string = i64::to_string(&field1_unwrapped);
1742 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_unwrapped_string);
1743 raw_arguments.push(field1_primitive);
1744 }
1745 }
1746 match field2 {
1747 None => {
1748 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1749 }
1750 Some(field2_unwrapped) => {
1751 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1752 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1753 raw_arguments.push(field2_primitive);
1754 }
1755 }
1756 match field3 {
1757 None => {
1758 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1759 }
1760 Some(field3_unwrapped) => {
1761 let field3_unwrapped_string = i64::to_string(&field3_unwrapped);
1762 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
1763 raw_arguments.push(field3_primitive);
1764 }
1765 }
1766 while let Some(arg) = raw_arguments.last() {
1767 if arg.is_empty() {
1768 let _ = raw_arguments.pop();
1769 } else {
1770 break;
1771 }
1772 }
1773 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1774 lowlevel::Command::Execute { name: String::from("TESTALLOPT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1775 },
1776 highlevel::Command::Testl {
1777 field,
1778 } => {
1779 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1780 for field_element in field.iter() {
1781 let field_element_string = i64::to_string(&field_element);
1782 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1783 raw_arguments.push(field_element_primitive);
1784 }
1785 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1786 lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1787 },
1788 highlevel::Command::Testol {
1789 field,
1790 } => {
1791 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1792 for field_element in field.iter() {
1793 match field_element {
1794 None => {
1795 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1796 }
1797 Some(field_element_unwrapped) => {
1798 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1799 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1800 raw_arguments.push(field_element_primitive);
1801 }
1802 }
1803 }
1804 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1805 lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1806 },
1807 highlevel::Command::Testm {
1808 field,
1809 } => {
1810 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1811 for (field_typed_key, field_typed_value) in field {
1812 let field_primitive_key = i64::to_string(&field_typed_key);
1813 let field_primitive_value = field_typed_value.clone();
1814 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1815 raw_arguments.push(field_untyped_pair);
1816 }
1817 while let Some(arg) = raw_arguments.last() {
1818 if arg.is_empty() {
1819 let _ = raw_arguments.pop();
1820 } else {
1821 break;
1822 }
1823 }
1824 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1825 lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1826 },
1827 highlevel::Command::Testp {
1828 field,
1829 } => {
1830 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1831 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1832 let field_string = i64::to_string(&field);
1833 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1834 raw_arguments_inner.push(field_primitive);
1835 raw_arguments_outer.push(raw_arguments_inner);
1836 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1837 lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1838 },
1839 highlevel::Command::Testpp {
1840 field1,
1841 field2,
1842 field3,
1843 } => {
1844 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1845 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1846 let field1_string = i64::to_string(&field1);
1847 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1848 raw_arguments_inner.push(field1_primitive);
1849 raw_arguments_outer.push(raw_arguments_inner);
1850 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1851 let field2_string = i64::to_string(&field2);
1852 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1853 raw_arguments_inner.push(field2_primitive);
1854 let field3_string = field3.clone();
1855 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1856 raw_arguments_inner.push(field3_primitive);
1857 raw_arguments_outer.push(raw_arguments_inner);
1858 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1859 lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1860 },
1861 highlevel::Command::Testpmpil {
1862 field1,
1863 field2,
1864 field3,
1865 } => {
1866 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1867 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1868 for (field1_typed_key, field1_typed_value) in field1 {
1869 let field1_primitive_key = i64::to_string(&field1_typed_key);
1870 let field1_primitive_value = field1_typed_value.clone();
1871 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1872 raw_arguments_inner.push(field1_untyped_pair);
1873 }
1874 raw_arguments_outer.push(raw_arguments_inner);
1875 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1876 let field2_string = i64::to_string(&field2);
1877 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1878 raw_arguments_inner.push(field2_primitive);
1879 for field3_element in field3.iter() {
1880 let field3_element_string = i64::to_string(&field3_element);
1881 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1882 raw_arguments_inner.push(field3_element_primitive);
1883 }
1884 raw_arguments_outer.push(raw_arguments_inner);
1885 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1886 lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1887 },
1888 highlevel::Command::TestrRead {} => {
1889 lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1890 },
1891 highlevel::Command::TestrexRead {} => {
1892 lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1893 },
1894 highlevel::Command::TesttTest {} => {
1895 lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1896 },
1897 highlevel::Command::TesttexTest {} => {
1898 lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1899 },
1900 highlevel::Command::Testenum {
1901 field,
1902 } => {
1903 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1904 let field_string_int = *field as i64;
1905 let field_string = i64::to_string(&field_string_int);
1906 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1907 raw_arguments.push(field_primitive);
1908 while let Some(arg) = raw_arguments.last() {
1909 if arg.is_empty() {
1910 let _ = raw_arguments.pop();
1911 } else {
1912 break;
1913 }
1914 }
1915 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1916 lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1917 },
1918 highlevel::Command::Testbool {
1919 field,
1920 } => {
1921 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1922 let field_string_int = if *field { 1 } else { 0 };
1923 let field_string = i64::to_string(&field_string_int);
1924 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1925 raw_arguments.push(field_primitive);
1926 while let Some(arg) = raw_arguments.last() {
1927 if arg.is_empty() {
1928 let _ = raw_arguments.pop();
1929 } else {
1930 break;
1931 }
1932 }
1933 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1934 lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1935 },
1936 highlevel::Command::Testotherfile { } => {
1937 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1938 lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1939 },
1940 highlevel::Command::Brsf {
1941 features,
1942 } => {
1943 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1944 let features_string = i64::to_string(&features);
1945 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1946 raw_arguments.push(features_primitive);
1947 while let Some(arg) = raw_arguments.last() {
1948 if arg.is_empty() {
1949 let _ = raw_arguments.pop();
1950 } else {
1951 break;
1952 }
1953 }
1954 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1955 lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1956 },
1957 highlevel::Command::CindTest {} => {
1958 lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1959 },
1960 highlevel::Command::CindRead {} => {
1961 lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1962 },
1963 highlevel::Command::Clcc { } => {
1964 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1965 lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1966 },
1967 highlevel::Command::Bcc { } => {
1968 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1969 lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1970 },
1971 highlevel::Command::Bcs {
1972 codec,
1973 } => {
1974 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1975 let codec_string = i64::to_string(&codec);
1976 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1977 raw_arguments.push(codec_primitive);
1978 while let Some(arg) = raw_arguments.last() {
1979 if arg.is_empty() {
1980 let _ = raw_arguments.pop();
1981 } else {
1982 break;
1983 }
1984 }
1985 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1986 lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1987 },
1988 highlevel::Command::Bac {
1989 codecs,
1990 } => {
1991 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1992 for codecs_element in codecs.iter() {
1993 let codecs_element_string = i64::to_string(&codecs_element);
1994 let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1995 raw_arguments.push(codecs_element_primitive);
1996 }
1997 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1998 lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1999 },
2000 highlevel::Command::Bind {
2001 indicators,
2002 } => {
2003 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2004 for indicators_element in indicators.iter() {
2005 let indicators_element_string = i64::to_string(&indicators_element);
2006 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2007 raw_arguments.push(indicators_element_primitive);
2008 }
2009 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2010 lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2011 },
2012 highlevel::Command::BindTest {} => {
2013 lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
2014 },
2015 highlevel::Command::BindRead {} => {
2016 lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
2017 },
2018 highlevel::Command::Biev {
2019 anum,
2020 value,
2021 } => {
2022 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2023 let anum_string_int = *anum as i64;
2024 let anum_string = i64::to_string(&anum_string_int);
2025 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2026 raw_arguments.push(anum_primitive);
2027 let value_string = i64::to_string(&value);
2028 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2029 raw_arguments.push(value_primitive);
2030 while let Some(arg) = raw_arguments.last() {
2031 if arg.is_empty() {
2032 let _ = raw_arguments.pop();
2033 } else {
2034 break;
2035 }
2036 }
2037 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2038 lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2039 },
2040 highlevel::Command::ChldTest {} => {
2041 lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
2042 },
2043 highlevel::Command::Cmer {
2044 mode,
2045 keyp,
2046 disp,
2047 ind,
2048 } => {
2049 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2050 match mode {
2051 None => {
2052 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2053 }
2054 Some(mode_unwrapped) => {
2055 let mode_unwrapped_string = i64::to_string(&mode_unwrapped);
2056 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_unwrapped_string);
2057 raw_arguments.push(mode_primitive);
2058 }
2059 }
2060 match keyp {
2061 None => {
2062 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2063 }
2064 Some(keyp_unwrapped) => {
2065 let keyp_unwrapped_string = i64::to_string(&keyp_unwrapped);
2066 let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_unwrapped_string);
2067 raw_arguments.push(keyp_primitive);
2068 }
2069 }
2070 match disp {
2071 None => {
2072 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2073 }
2074 Some(disp_unwrapped) => {
2075 let disp_unwrapped_string = i64::to_string(&disp_unwrapped);
2076 let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_unwrapped_string);
2077 raw_arguments.push(disp_primitive);
2078 }
2079 }
2080 match ind {
2081 None => {
2082 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2083 }
2084 Some(ind_unwrapped) => {
2085 let ind_unwrapped_string = i64::to_string(&ind_unwrapped);
2086 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_unwrapped_string);
2087 raw_arguments.push(ind_primitive);
2088 }
2089 }
2090 while let Some(arg) = raw_arguments.last() {
2091 if arg.is_empty() {
2092 let _ = raw_arguments.pop();
2093 } else {
2094 break;
2095 }
2096 }
2097 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2098 lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2099 },
2100 highlevel::Command::Nrec {
2101 nrec,
2102 } => {
2103 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2104 let nrec_string_int = if *nrec { 1 } else { 0 };
2105 let nrec_string = i64::to_string(&nrec_string_int);
2106 let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
2107 raw_arguments.push(nrec_primitive);
2108 while let Some(arg) = raw_arguments.last() {
2109 if arg.is_empty() {
2110 let _ = raw_arguments.pop();
2111 } else {
2112 break;
2113 }
2114 }
2115 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2116 lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2117 },
2118 highlevel::Command::Cops {
2119 three,
2120 format,
2121 } => {
2122 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2123 let three_string = i64::to_string(&three);
2124 let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
2125 raw_arguments.push(three_primitive);
2126 let format_string_int = *format as i64;
2127 let format_string = i64::to_string(&format_string_int);
2128 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2129 raw_arguments.push(format_primitive);
2130 while let Some(arg) = raw_arguments.last() {
2131 if arg.is_empty() {
2132 let _ = raw_arguments.pop();
2133 } else {
2134 break;
2135 }
2136 }
2137 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2138 lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2139 },
2140 highlevel::Command::CopsRead {} => {
2141 lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
2142 },
2143 highlevel::Command::Cmee {
2144 enable,
2145 } => {
2146 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2147 let enable_string_int = if *enable { 1 } else { 0 };
2148 let enable_string = i64::to_string(&enable_string_int);
2149 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2150 raw_arguments.push(enable_primitive);
2151 while let Some(arg) = raw_arguments.last() {
2152 if arg.is_empty() {
2153 let _ = raw_arguments.pop();
2154 } else {
2155 break;
2156 }
2157 }
2158 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2159 lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2160 },
2161 highlevel::Command::Ccwa {
2162 enable,
2163 } => {
2164 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2165 let enable_string_int = if *enable { 1 } else { 0 };
2166 let enable_string = i64::to_string(&enable_string_int);
2167 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2168 raw_arguments.push(enable_primitive);
2169 while let Some(arg) = raw_arguments.last() {
2170 if arg.is_empty() {
2171 let _ = raw_arguments.pop();
2172 } else {
2173 break;
2174 }
2175 }
2176 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2177 lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2178 },
2179 highlevel::Command::Clip {
2180 enable,
2181 } => {
2182 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2183 let enable_string_int = if *enable { 1 } else { 0 };
2184 let enable_string = i64::to_string(&enable_string_int);
2185 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2186 raw_arguments.push(enable_primitive);
2187 while let Some(arg) = raw_arguments.last() {
2188 if arg.is_empty() {
2189 let _ = raw_arguments.pop();
2190 } else {
2191 break;
2192 }
2193 }
2194 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2195 lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2196 },
2197 highlevel::Command::Cnum { } => {
2198 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2199 lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2200 },
2201 highlevel::Command::Vts {
2202 code,
2203 } => {
2204 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2205 let code_string = code.clone();
2206 let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
2207 raw_arguments.push(code_primitive);
2208 while let Some(arg) = raw_arguments.last() {
2209 if arg.is_empty() {
2210 let _ = raw_arguments.pop();
2211 } else {
2212 break;
2213 }
2214 }
2215 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2216 lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2217 },
2218 highlevel::Command::Vgs {
2219 level,
2220 } => {
2221 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2222 let level_string = i64::to_string(&level);
2223 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2224 raw_arguments.push(level_primitive);
2225 while let Some(arg) = raw_arguments.last() {
2226 if arg.is_empty() {
2227 let _ = raw_arguments.pop();
2228 } else {
2229 break;
2230 }
2231 }
2232 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2233 lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2234 },
2235 highlevel::Command::Vgm {
2236 level,
2237 } => {
2238 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2239 let level_string = i64::to_string(&level);
2240 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2241 raw_arguments.push(level_primitive);
2242 while let Some(arg) = raw_arguments.last() {
2243 if arg.is_empty() {
2244 let _ = raw_arguments.pop();
2245 } else {
2246 break;
2247 }
2248 }
2249 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2250 lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2251 },
2252 highlevel::Command::Bia {
2253 indrep,
2254 } => {
2255 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2256 for indrep_element in indrep.iter() {
2257 match indrep_element {
2258 None => {
2259 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2260 }
2261 Some(indrep_element_unwrapped) => {
2262 let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
2263 let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
2264 let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
2265 raw_arguments.push(indrep_element_primitive);
2266 }
2267 }
2268 }
2269 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2270 lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2271 },
2272 highlevel::Command::Answer { } => {
2273 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2274 lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2275 },
2276 highlevel::Command::Chup { } => {
2277 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2278 lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2279 },
2280 highlevel::Command::Chld {
2281 command,
2282 } => {
2283 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2284 let command_string = command.clone();
2285 let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
2286 raw_arguments.push(command_primitive);
2287 while let Some(arg) = raw_arguments.last() {
2288 if arg.is_empty() {
2289 let _ = raw_arguments.pop();
2290 } else {
2291 break;
2292 }
2293 }
2294 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2295 lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2296 },
2297 highlevel::Command::AtdNumber {
2298 number,
2299 } => {
2300 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2301 let number_string = number.clone();
2302 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2303 raw_arguments.push(number_primitive);
2304 while let Some(arg) = raw_arguments.last() {
2305 if arg.is_empty() {
2306 let _ = raw_arguments.pop();
2307 } else {
2308 break;
2309 }
2310 }
2311 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2312 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
2313 },
2314 highlevel::Command::AtdMemory {
2315 location,
2316 } => {
2317 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2318 let location_string = location.clone();
2319 let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
2320 raw_arguments.push(location_primitive);
2321 while let Some(arg) = raw_arguments.last() {
2322 if arg.is_empty() {
2323 let _ = raw_arguments.pop();
2324 } else {
2325 break;
2326 }
2327 }
2328 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2329 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
2330 },
2331 highlevel::Command::Bldn { } => {
2332 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2333 lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2334 },
2335 }
2336}
2337
2338pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
2339 match highlevel {
2340 highlevel::Success::Test { } => {
2341 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2342 lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2343 },
2344 highlevel::Success::Testnod { } => {
2345 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2346 lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2347 },
2348 highlevel::Success::TestResponse { } => {
2349 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2350 lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2351 },
2352 highlevel::Success::Testext { } => {
2353 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2354 lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2355 },
2356 highlevel::Success::Testextnod { } => {
2357 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2358 lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2359 },
2360 highlevel::Success::Testi {
2361 field,
2362 } => {
2363 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2364 let field_string = i64::to_string(&field);
2365 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2366 raw_arguments.push(field_primitive);
2367 while let Some(arg) = raw_arguments.last() {
2368 if arg.is_empty() {
2369 let _ = raw_arguments.pop();
2370 } else {
2371 break;
2372 }
2373 }
2374 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2375 lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2376 },
2377 highlevel::Success::Testinod {
2378 field,
2379 } => {
2380 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2381 let field_string = i64::to_string(&field);
2382 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2383 raw_arguments.push(field_primitive);
2384 while let Some(arg) = raw_arguments.last() {
2385 if arg.is_empty() {
2386 let _ = raw_arguments.pop();
2387 } else {
2388 break;
2389 }
2390 }
2391 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2392 lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2393 },
2394 highlevel::Success::Testic {
2395 field,
2396 } => {
2397 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2398 let field_string = i64::to_string(&field);
2399 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2400 raw_arguments.push(field_primitive);
2401 while let Some(arg) = raw_arguments.last() {
2402 if arg.is_empty() {
2403 let _ = raw_arguments.pop();
2404 } else {
2405 break;
2406 }
2407 }
2408 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2409 lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2410 },
2411 highlevel::Success::Tests {
2412 field,
2413 } => {
2414 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2415 let field_string = field.clone();
2416 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2417 raw_arguments.push(field_primitive);
2418 while let Some(arg) = raw_arguments.last() {
2419 if arg.is_empty() {
2420 let _ = raw_arguments.pop();
2421 } else {
2422 break;
2423 }
2424 }
2425 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2426 lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2427 },
2428 highlevel::Success::Testsi {
2429 field1,
2430 field2,
2431 } => {
2432 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2433 let field1_string = field1.clone();
2434 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2435 raw_arguments.push(field1_primitive);
2436 let field2_string = i64::to_string(&field2);
2437 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2438 raw_arguments.push(field2_primitive);
2439 while let Some(arg) = raw_arguments.last() {
2440 if arg.is_empty() {
2441 let _ = raw_arguments.pop();
2442 } else {
2443 break;
2444 }
2445 }
2446 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2447 lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2448 },
2449 highlevel::Success::Testsic {
2450 field1,
2451 field2,
2452 } => {
2453 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2454 let field1_string = field1.clone();
2455 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2456 raw_arguments.push(field1_primitive);
2457 let field2_string = i64::to_string(&field2);
2458 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2459 raw_arguments.push(field2_primitive);
2460 while let Some(arg) = raw_arguments.last() {
2461 if arg.is_empty() {
2462 let _ = raw_arguments.pop();
2463 } else {
2464 break;
2465 }
2466 }
2467 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2468 lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2469 },
2470 highlevel::Success::Testio {
2471 field1,
2472 field2,
2473 } => {
2474 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2475 let field1_string = i64::to_string(&field1);
2476 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2477 raw_arguments.push(field1_primitive);
2478 match field2 {
2479 None => {
2480 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2481 }
2482 Some(field2_unwrapped) => {
2483 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2484 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2485 raw_arguments.push(field2_primitive);
2486 }
2487 }
2488 while let Some(arg) = raw_arguments.last() {
2489 if arg.is_empty() {
2490 let _ = raw_arguments.pop();
2491 } else {
2492 break;
2493 }
2494 }
2495 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2496 lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2497 },
2498 highlevel::Success::Testioo {
2499 field1,
2500 field2,
2501 field3,
2502 } => {
2503 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2504 let field1_string = i64::to_string(&field1);
2505 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2506 raw_arguments.push(field1_primitive);
2507 match field2 {
2508 None => {
2509 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2510 }
2511 Some(field2_unwrapped) => {
2512 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2513 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2514 raw_arguments.push(field2_primitive);
2515 }
2516 }
2517 match field3 {
2518 None => {
2519 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2520 }
2521 Some(field3_unwrapped) => {
2522 let field3_unwrapped_string = field3_unwrapped.clone();
2523 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2524 raw_arguments.push(field3_primitive);
2525 }
2526 }
2527 while let Some(arg) = raw_arguments.last() {
2528 if arg.is_empty() {
2529 let _ = raw_arguments.pop();
2530 } else {
2531 break;
2532 }
2533 }
2534 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2535 lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2536 },
2537 highlevel::Success::Testl {
2538 field,
2539 } => {
2540 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2541 for field_element in field.iter() {
2542 let field_element_string = i64::to_string(&field_element);
2543 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2544 raw_arguments.push(field_element_primitive);
2545 }
2546 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2547 lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2548 },
2549 highlevel::Success::Testol {
2550 field,
2551 } => {
2552 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2553 for field_element in field.iter() {
2554 match field_element {
2555 None => {
2556 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2557 }
2558 Some(field_element_unwrapped) => {
2559 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2560 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2561 raw_arguments.push(field_element_primitive);
2562 }
2563 }
2564 }
2565 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2566 lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2567 },
2568 highlevel::Success::Testm {
2569 field,
2570 } => {
2571 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2572 for (field_typed_key, field_typed_value) in field {
2573 let field_primitive_key = i64::to_string(&field_typed_key);
2574 let field_primitive_value = field_typed_value.clone();
2575 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2576 raw_arguments.push(field_untyped_pair);
2577 }
2578 while let Some(arg) = raw_arguments.last() {
2579 if arg.is_empty() {
2580 let _ = raw_arguments.pop();
2581 } else {
2582 break;
2583 }
2584 }
2585 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2586 lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2587 },
2588 highlevel::Success::Testp {
2589 field,
2590 } => {
2591 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2592 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2593 let field_string = i64::to_string(&field);
2594 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2595 raw_arguments_inner.push(field_primitive);
2596 raw_arguments_outer.push(raw_arguments_inner);
2597 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2598 lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2599 },
2600 highlevel::Success::Testpp {
2601 field1,
2602 field2,
2603 field3,
2604 } => {
2605 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2606 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2607 let field1_string = i64::to_string(&field1);
2608 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2609 raw_arguments_inner.push(field1_primitive);
2610 raw_arguments_outer.push(raw_arguments_inner);
2611 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2612 let field2_string = i64::to_string(&field2);
2613 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2614 raw_arguments_inner.push(field2_primitive);
2615 let field3_string = field3.clone();
2616 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2617 raw_arguments_inner.push(field3_primitive);
2618 raw_arguments_outer.push(raw_arguments_inner);
2619 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2620 lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2621 },
2622 highlevel::Success::Testpmpil {
2623 field1,
2624 field2,
2625 field3,
2626 } => {
2627 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2628 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2629 for (field1_typed_key, field1_typed_value) in field1 {
2630 let field1_primitive_key = i64::to_string(&field1_typed_key);
2631 let field1_primitive_value = field1_typed_value.clone();
2632 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2633 raw_arguments_inner.push(field1_untyped_pair);
2634 }
2635 raw_arguments_outer.push(raw_arguments_inner);
2636 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2637 let field2_string = i64::to_string(&field2);
2638 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2639 raw_arguments_inner.push(field2_primitive);
2640 for field3_element in field3.iter() {
2641 let field3_element_string = i64::to_string(&field3_element);
2642 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2643 raw_arguments_inner.push(field3_element_primitive);
2644 }
2645 raw_arguments_outer.push(raw_arguments_inner);
2646 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2647 lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2648 },
2649 highlevel::Success::SameOne {
2650 field,
2651 } => {
2652 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2653 let field_string = i64::to_string(&field);
2654 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2655 raw_arguments.push(field_primitive);
2656 while let Some(arg) = raw_arguments.last() {
2657 if arg.is_empty() {
2658 let _ = raw_arguments.pop();
2659 } else {
2660 break;
2661 }
2662 }
2663 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2664 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2665 },
2666 highlevel::Success::SameTwo {
2667 field,
2668 } => {
2669 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2670 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2671 let field_string = i64::to_string(&field);
2672 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2673 raw_arguments_inner.push(field_primitive);
2674 raw_arguments_outer.push(raw_arguments_inner);
2675 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2676 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2677 },
2678 highlevel::Success::Brsf {
2679 features,
2680 } => {
2681 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2682 let features_string = i64::to_string(&features);
2683 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2684 raw_arguments.push(features_primitive);
2685 while let Some(arg) = raw_arguments.last() {
2686 if arg.is_empty() {
2687 let _ = raw_arguments.pop();
2688 } else {
2689 break;
2690 }
2691 }
2692 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2693 lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2694 },
2695 highlevel::Success::CindRead {
2696 ordered_values,
2697 } => {
2698 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2699 for ordered_values_element in ordered_values.iter() {
2700 let ordered_values_element_string = i64::to_string(&ordered_values_element);
2701 let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2702 raw_arguments.push(ordered_values_element_primitive);
2703 }
2704 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2705 lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2706 },
2707 highlevel::Success::Clcc {
2708 index,
2709 direction,
2710 status,
2711 mode,
2712 multiparty,
2713 number,
2714 ty,
2715 alpha,
2716 priority,
2717 } => {
2718 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2719 let index_string = i64::to_string(&index);
2720 let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2721 raw_arguments.push(index_primitive);
2722 let direction_string = i64::to_string(&direction);
2723 let direction_primitive = lowlevel::Argument::PrimitiveArgument(direction_string);
2724 raw_arguments.push(direction_primitive);
2725 let status_string = i64::to_string(&status);
2726 let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2727 raw_arguments.push(status_primitive);
2728 let mode_string = i64::to_string(&mode);
2729 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2730 raw_arguments.push(mode_primitive);
2731 let multiparty_string = i64::to_string(&multiparty);
2732 let multiparty_primitive = lowlevel::Argument::PrimitiveArgument(multiparty_string);
2733 raw_arguments.push(multiparty_primitive);
2734 match number {
2735 None => {
2736 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2737 }
2738 Some(number_unwrapped) => {
2739 let number_unwrapped_string = number_unwrapped.clone();
2740 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2741 raw_arguments.push(number_primitive);
2742 }
2743 }
2744 match ty {
2745 None => {
2746 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2747 }
2748 Some(ty_unwrapped) => {
2749 let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2750 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2751 raw_arguments.push(ty_primitive);
2752 }
2753 }
2754 match alpha {
2755 None => {
2756 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2757 }
2758 Some(alpha_unwrapped) => {
2759 let alpha_unwrapped_string = alpha_unwrapped.clone();
2760 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_unwrapped_string);
2761 raw_arguments.push(alpha_primitive);
2762 }
2763 }
2764 match priority {
2765 None => {
2766 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2767 }
2768 Some(priority_unwrapped) => {
2769 let priority_unwrapped_string = i64::to_string(&priority_unwrapped);
2770 let priority_primitive = lowlevel::Argument::PrimitiveArgument(priority_unwrapped_string);
2771 raw_arguments.push(priority_primitive);
2772 }
2773 }
2774 while let Some(arg) = raw_arguments.last() {
2775 if arg.is_empty() {
2776 let _ = raw_arguments.pop();
2777 } else {
2778 break;
2779 }
2780 }
2781 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2782 lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2783 },
2784 highlevel::Success::Bcs {
2785 codec,
2786 } => {
2787 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2788 let codec_string = i64::to_string(&codec);
2789 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2790 raw_arguments.push(codec_primitive);
2791 while let Some(arg) = raw_arguments.last() {
2792 if arg.is_empty() {
2793 let _ = raw_arguments.pop();
2794 } else {
2795 break;
2796 }
2797 }
2798 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2799 lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2800 },
2801 highlevel::Success::BindList {
2802 indicators,
2803 } => {
2804 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2805 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2806 for indicators_element in indicators.iter() {
2807 let indicators_element_string_int = *indicators_element as i64;
2808 let indicators_element_string = i64::to_string(&indicators_element_string_int);
2809 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2810 raw_arguments_inner.push(indicators_element_primitive);
2811 }
2812 raw_arguments_outer.push(raw_arguments_inner);
2813 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2814 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2815 },
2816 highlevel::Success::BindStatus {
2817 anum,
2818 state,
2819 } => {
2820 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2821 let anum_string_int = *anum as i64;
2822 let anum_string = i64::to_string(&anum_string_int);
2823 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2824 raw_arguments.push(anum_primitive);
2825 let state_string_int = if *state { 1 } else { 0 };
2826 let state_string = i64::to_string(&state_string_int);
2827 let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2828 raw_arguments.push(state_primitive);
2829 while let Some(arg) = raw_arguments.last() {
2830 if arg.is_empty() {
2831 let _ = raw_arguments.pop();
2832 } else {
2833 break;
2834 }
2835 }
2836 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2837 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2838 },
2839 highlevel::Success::Chld {
2840 commands,
2841 } => {
2842 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2843 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2844 for commands_element in commands.iter() {
2845 let commands_element_string = commands_element.clone();
2846 let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2847 raw_arguments_inner.push(commands_element_primitive);
2848 }
2849 raw_arguments_outer.push(raw_arguments_inner);
2850 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2851 lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2852 },
2853 highlevel::Success::Cops {
2854 format,
2855 zero,
2856 operator,
2857 } => {
2858 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2859 let format_string_int = *format as i64;
2860 let format_string = i64::to_string(&format_string_int);
2861 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2862 raw_arguments.push(format_primitive);
2863 let zero_string = i64::to_string(&zero);
2864 let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2865 raw_arguments.push(zero_primitive);
2866 let operator_string = operator.clone();
2867 let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2868 raw_arguments.push(operator_primitive);
2869 while let Some(arg) = raw_arguments.last() {
2870 if arg.is_empty() {
2871 let _ = raw_arguments.pop();
2872 } else {
2873 break;
2874 }
2875 }
2876 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2877 lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2878 },
2879 highlevel::Success::Clip {
2880 number,
2881 ty,
2882 } => {
2883 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2884 let number_string = number.clone();
2885 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2886 raw_arguments.push(number_primitive);
2887 let ty_string = i64::to_string(&ty);
2888 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2889 raw_arguments.push(ty_primitive);
2890 while let Some(arg) = raw_arguments.last() {
2891 if arg.is_empty() {
2892 let _ = raw_arguments.pop();
2893 } else {
2894 break;
2895 }
2896 }
2897 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2898 lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2899 },
2900 highlevel::Success::Cnum {
2901 alpha,
2902 number,
2903 ty,
2904 speed,
2905 service,
2906 } => {
2907 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2908 let alpha_string = alpha.clone();
2909 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2910 raw_arguments.push(alpha_primitive);
2911 let number_string = number.clone();
2912 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2913 raw_arguments.push(number_primitive);
2914 let ty_string = i64::to_string(&ty);
2915 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2916 raw_arguments.push(ty_primitive);
2917 let speed_string = speed.clone();
2918 let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2919 raw_arguments.push(speed_primitive);
2920 let service_string = i64::to_string(&service);
2921 let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2922 raw_arguments.push(service_primitive);
2923 while let Some(arg) = raw_arguments.last() {
2924 if arg.is_empty() {
2925 let _ = raw_arguments.pop();
2926 } else {
2927 break;
2928 }
2929 }
2930 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2931 lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2932 },
2933 highlevel::Success::Vgs {
2934 level,
2935 } => {
2936 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2937 let level_string = i64::to_string(&level);
2938 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2939 raw_arguments.push(level_primitive);
2940 while let Some(arg) = raw_arguments.last() {
2941 if arg.is_empty() {
2942 let _ = raw_arguments.pop();
2943 } else {
2944 break;
2945 }
2946 }
2947 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2948 lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2949 },
2950 highlevel::Success::Vgm {
2951 level,
2952 } => {
2953 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2954 let level_string = i64::to_string(&level);
2955 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2956 raw_arguments.push(level_primitive);
2957 while let Some(arg) = raw_arguments.last() {
2958 if arg.is_empty() {
2959 let _ = raw_arguments.pop();
2960 } else {
2961 break;
2962 }
2963 }
2964 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2965 lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2966 },
2967 highlevel::Success::Ciev {
2968 ind,
2969 value,
2970 } => {
2971 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2972 let ind_string = i64::to_string(&ind);
2973 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2974 raw_arguments.push(ind_primitive);
2975 let value_string = i64::to_string(&value);
2976 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2977 raw_arguments.push(value_primitive);
2978 while let Some(arg) = raw_arguments.last() {
2979 if arg.is_empty() {
2980 let _ = raw_arguments.pop();
2981 } else {
2982 break;
2983 }
2984 }
2985 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2986 lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2987 },
2988 highlevel::Success::Ccwa {
2989 number,
2990 ty,
2991 } => {
2992 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2993 let number_string = number.clone();
2994 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2995 raw_arguments.push(number_primitive);
2996 let ty_string = i64::to_string(&ty);
2997 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2998 raw_arguments.push(ty_primitive);
2999 while let Some(arg) = raw_arguments.last() {
3000 if arg.is_empty() {
3001 let _ = raw_arguments.pop();
3002 } else {
3003 break;
3004 }
3005 }
3006 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
3007 lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
3008 },
3009 highlevel::Success::Ring { } => {
3010 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
3011 lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
3012 },
3013 highlevel::Success::Bsir {
3014 enable,
3015 } => {
3016 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
3017 let enable_string_int = if *enable { 1 } else { 0 };
3018 let enable_string = i64::to_string(&enable_string_int);
3019 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
3020 raw_arguments.push(enable_primitive);
3021 while let Some(arg) = raw_arguments.last() {
3022 if arg.is_empty() {
3023 let _ = raw_arguments.pop();
3024 } else {
3025 break;
3026 }
3027 }
3028 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
3029 lowlevel::Response::Success { name: String::from("BSIR"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
3030 },
3031 }
3032}
3033