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 _ => Err(DeserializeErrorCause::UnknownResponse(lowlevel.clone())),
1509 }
1510}
1511
1512pub fn lower_command(highlevel: &highlevel::Command) -> lowlevel::Command {
1513 match highlevel {
1514 highlevel::Command::Testex { } => {
1515 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1516 lowlevel::Command::Execute { name: String::from("TESTEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1517 },
1518 highlevel::Command::Testexext { } => {
1519 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1520 lowlevel::Command::Execute { name: String::from("TESTEXEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1521 },
1522 highlevel::Command::TestCommand { } => {
1523 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1524 lowlevel::Command::Execute { name: String::from("TESTNEX"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1525 },
1526 highlevel::Command::Testexextfi {
1527 field,
1528 } => {
1529 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1530 let field_string = i64::to_string(&field);
1531 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1532 raw_arguments.push(field_primitive);
1533 while let Some(arg) = raw_arguments.last() {
1534 if arg.is_empty() {
1535 let _ = raw_arguments.pop();
1536 } else {
1537 break;
1538 }
1539 }
1540 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1541 lowlevel::Command::Execute { name: String::from("TESTEXEXTFI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1542 },
1543 highlevel::Command::Testexextfic {
1544 field,
1545 } => {
1546 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1547 let field_string = i64::to_string(&field);
1548 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1549 raw_arguments.push(field_primitive);
1550 while let Some(arg) = raw_arguments.last() {
1551 if arg.is_empty() {
1552 let _ = raw_arguments.pop();
1553 } else {
1554 break;
1555 }
1556 }
1557 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1558 lowlevel::Command::Execute { name: String::from("TESTEXEXTFIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1559 },
1560 highlevel::Command::Testnsd {
1561 field,
1562 } => {
1563 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1564 let field_string = i64::to_string(&field);
1565 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1566 raw_arguments.push(field_primitive);
1567 while let Some(arg) = raw_arguments.last() {
1568 if arg.is_empty() {
1569 let _ = raw_arguments.pop();
1570 } else {
1571 break;
1572 }
1573 }
1574 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1575 lowlevel::Command::Execute { name: String::from("TESTNSD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: None } }
1576 },
1577 highlevel::Command::Testnst {
1578 field,
1579 } => {
1580 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1581 let field_string = i64::to_string(&field);
1582 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1583 raw_arguments.push(field_primitive);
1584 while let Some(arg) = raw_arguments.last() {
1585 if arg.is_empty() {
1586 let _ = raw_arguments.pop();
1587 } else {
1588 break;
1589 }
1590 }
1591 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1592 lowlevel::Command::Execute { name: String::from("TESTNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: Some(String::from(";")) } }
1593 },
1594 highlevel::Command::Testnsdnst {
1595 field,
1596 } => {
1597 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1598 let field_string = i64::to_string(&field);
1599 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1600 raw_arguments.push(field_primitive);
1601 while let Some(arg) = raw_arguments.last() {
1602 if arg.is_empty() {
1603 let _ = raw_arguments.pop();
1604 } else {
1605 break;
1606 }
1607 }
1608 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1609 lowlevel::Command::Execute { name: String::from("TESTNSDNST"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
1610 },
1611 highlevel::Command::Testnod {
1612 field,
1613 } => {
1614 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1615 let field_string = i64::to_string(&field);
1616 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1617 raw_arguments.push(field_primitive);
1618 while let Some(arg) = raw_arguments.last() {
1619 if arg.is_empty() {
1620 let _ = raw_arguments.pop();
1621 } else {
1622 break;
1623 }
1624 }
1625 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1626 lowlevel::Command::Execute { name: String::from("TESTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1627 },
1628 highlevel::Command::Testexextfs {
1629 field,
1630 } => {
1631 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1632 let field_string = field.clone();
1633 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1634 raw_arguments.push(field_primitive);
1635 while let Some(arg) = raw_arguments.last() {
1636 if arg.is_empty() {
1637 let _ = raw_arguments.pop();
1638 } else {
1639 break;
1640 }
1641 }
1642 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1643 lowlevel::Command::Execute { name: String::from("TESTEXEXTFS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1644 },
1645 highlevel::Command::Testexextfsi {
1646 field1,
1647 field2,
1648 } => {
1649 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1650 let field1_string = field1.clone();
1651 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1652 raw_arguments.push(field1_primitive);
1653 let field2_string = i64::to_string(&field2);
1654 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1655 raw_arguments.push(field2_primitive);
1656 while let Some(arg) = raw_arguments.last() {
1657 if arg.is_empty() {
1658 let _ = raw_arguments.pop();
1659 } else {
1660 break;
1661 }
1662 }
1663 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1664 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1665 },
1666 highlevel::Command::Testexextfsic {
1667 field1,
1668 field2,
1669 } => {
1670 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1671 let field1_string = field1.clone();
1672 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1673 raw_arguments.push(field1_primitive);
1674 let field2_string = i64::to_string(&field2);
1675 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1676 raw_arguments.push(field2_primitive);
1677 while let Some(arg) = raw_arguments.last() {
1678 if arg.is_empty() {
1679 let _ = raw_arguments.pop();
1680 } else {
1681 break;
1682 }
1683 }
1684 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1685 lowlevel::Command::Execute { name: String::from("TESTEXEXTFSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1686 },
1687 highlevel::Command::Testio {
1688 field1,
1689 field2,
1690 } => {
1691 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1692 let field1_string = i64::to_string(&field1);
1693 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1694 raw_arguments.push(field1_primitive);
1695 match field2 {
1696 None => {
1697 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1698 }
1699 Some(field2_unwrapped) => {
1700 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1701 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1702 raw_arguments.push(field2_primitive);
1703 }
1704 }
1705 while let Some(arg) = raw_arguments.last() {
1706 if arg.is_empty() {
1707 let _ = raw_arguments.pop();
1708 } else {
1709 break;
1710 }
1711 }
1712 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1713 lowlevel::Command::Execute { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1714 },
1715 highlevel::Command::Testallopt {
1716 field1,
1717 field2,
1718 field3,
1719 } => {
1720 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1721 match field1 {
1722 None => {
1723 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1724 }
1725 Some(field1_unwrapped) => {
1726 let field1_unwrapped_string = i64::to_string(&field1_unwrapped);
1727 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_unwrapped_string);
1728 raw_arguments.push(field1_primitive);
1729 }
1730 }
1731 match field2 {
1732 None => {
1733 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1734 }
1735 Some(field2_unwrapped) => {
1736 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
1737 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
1738 raw_arguments.push(field2_primitive);
1739 }
1740 }
1741 match field3 {
1742 None => {
1743 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1744 }
1745 Some(field3_unwrapped) => {
1746 let field3_unwrapped_string = i64::to_string(&field3_unwrapped);
1747 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
1748 raw_arguments.push(field3_primitive);
1749 }
1750 }
1751 while let Some(arg) = raw_arguments.last() {
1752 if arg.is_empty() {
1753 let _ = raw_arguments.pop();
1754 } else {
1755 break;
1756 }
1757 }
1758 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1759 lowlevel::Command::Execute { name: String::from("TESTALLOPT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1760 },
1761 highlevel::Command::Testl {
1762 field,
1763 } => {
1764 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1765 for field_element in field.iter() {
1766 let field_element_string = i64::to_string(&field_element);
1767 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
1768 raw_arguments.push(field_element_primitive);
1769 }
1770 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1771 lowlevel::Command::Execute { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1772 },
1773 highlevel::Command::Testol {
1774 field,
1775 } => {
1776 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1777 for field_element in field.iter() {
1778 match field_element {
1779 None => {
1780 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
1781 }
1782 Some(field_element_unwrapped) => {
1783 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
1784 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
1785 raw_arguments.push(field_element_primitive);
1786 }
1787 }
1788 }
1789 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1790 lowlevel::Command::Execute { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1791 },
1792 highlevel::Command::Testm {
1793 field,
1794 } => {
1795 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1796 for (field_typed_key, field_typed_value) in field {
1797 let field_primitive_key = i64::to_string(&field_typed_key);
1798 let field_primitive_value = field_typed_value.clone();
1799 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
1800 raw_arguments.push(field_untyped_pair);
1801 }
1802 while let Some(arg) = raw_arguments.last() {
1803 if arg.is_empty() {
1804 let _ = raw_arguments.pop();
1805 } else {
1806 break;
1807 }
1808 }
1809 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1810 lowlevel::Command::Execute { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1811 },
1812 highlevel::Command::Testp {
1813 field,
1814 } => {
1815 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1816 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1817 let field_string = i64::to_string(&field);
1818 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1819 raw_arguments_inner.push(field_primitive);
1820 raw_arguments_outer.push(raw_arguments_inner);
1821 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1822 lowlevel::Command::Execute { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1823 },
1824 highlevel::Command::Testpp {
1825 field1,
1826 field2,
1827 field3,
1828 } => {
1829 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1830 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1831 let field1_string = i64::to_string(&field1);
1832 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
1833 raw_arguments_inner.push(field1_primitive);
1834 raw_arguments_outer.push(raw_arguments_inner);
1835 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1836 let field2_string = i64::to_string(&field2);
1837 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1838 raw_arguments_inner.push(field2_primitive);
1839 let field3_string = field3.clone();
1840 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
1841 raw_arguments_inner.push(field3_primitive);
1842 raw_arguments_outer.push(raw_arguments_inner);
1843 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1844 lowlevel::Command::Execute { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1845 },
1846 highlevel::Command::Testpmpil {
1847 field1,
1848 field2,
1849 field3,
1850 } => {
1851 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
1852 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1853 for (field1_typed_key, field1_typed_value) in field1 {
1854 let field1_primitive_key = i64::to_string(&field1_typed_key);
1855 let field1_primitive_value = field1_typed_value.clone();
1856 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
1857 raw_arguments_inner.push(field1_untyped_pair);
1858 }
1859 raw_arguments_outer.push(raw_arguments_inner);
1860 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
1861 let field2_string = i64::to_string(&field2);
1862 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
1863 raw_arguments_inner.push(field2_primitive);
1864 for field3_element in field3.iter() {
1865 let field3_element_string = i64::to_string(&field3_element);
1866 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
1867 raw_arguments_inner.push(field3_element_primitive);
1868 }
1869 raw_arguments_outer.push(raw_arguments_inner);
1870 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
1871 lowlevel::Command::Execute { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1872 },
1873 highlevel::Command::TestrRead {} => {
1874 lowlevel::Command::Read { name: String::from("TESTR"), is_extension: false }
1875 },
1876 highlevel::Command::TestrexRead {} => {
1877 lowlevel::Command::Read { name: String::from("TESTREX"), is_extension: true }
1878 },
1879 highlevel::Command::TesttTest {} => {
1880 lowlevel::Command::Test { name: String::from("TESTT"), is_extension: false }
1881 },
1882 highlevel::Command::TesttexTest {} => {
1883 lowlevel::Command::Test { name: String::from("TESTTEX"), is_extension: true }
1884 },
1885 highlevel::Command::Testenum {
1886 field,
1887 } => {
1888 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1889 let field_string_int = *field as i64;
1890 let field_string = i64::to_string(&field_string_int);
1891 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1892 raw_arguments.push(field_primitive);
1893 while let Some(arg) = raw_arguments.last() {
1894 if arg.is_empty() {
1895 let _ = raw_arguments.pop();
1896 } else {
1897 break;
1898 }
1899 }
1900 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1901 lowlevel::Command::Execute { name: String::from("TESTENUM"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1902 },
1903 highlevel::Command::Testbool {
1904 field,
1905 } => {
1906 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1907 let field_string_int = if *field { 1 } else { 0 };
1908 let field_string = i64::to_string(&field_string_int);
1909 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
1910 raw_arguments.push(field_primitive);
1911 while let Some(arg) = raw_arguments.last() {
1912 if arg.is_empty() {
1913 let _ = raw_arguments.pop();
1914 } else {
1915 break;
1916 }
1917 }
1918 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1919 lowlevel::Command::Execute { name: String::from("TESTBOOL"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1920 },
1921 highlevel::Command::Testotherfile { } => {
1922 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1923 lowlevel::Command::Execute { name: String::from("TESTOTHERFILE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1924 },
1925 highlevel::Command::Brsf {
1926 features,
1927 } => {
1928 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1929 let features_string = i64::to_string(&features);
1930 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
1931 raw_arguments.push(features_primitive);
1932 while let Some(arg) = raw_arguments.last() {
1933 if arg.is_empty() {
1934 let _ = raw_arguments.pop();
1935 } else {
1936 break;
1937 }
1938 }
1939 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1940 lowlevel::Command::Execute { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1941 },
1942 highlevel::Command::CindTest {} => {
1943 lowlevel::Command::Test { name: String::from("CIND"), is_extension: true }
1944 },
1945 highlevel::Command::CindRead {} => {
1946 lowlevel::Command::Read { name: String::from("CIND"), is_extension: true }
1947 },
1948 highlevel::Command::Clcc { } => {
1949 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1950 lowlevel::Command::Execute { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1951 },
1952 highlevel::Command::Bcc { } => {
1953 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
1954 lowlevel::Command::Execute { name: String::from("BCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
1955 },
1956 highlevel::Command::Bcs {
1957 codec,
1958 } => {
1959 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1960 let codec_string = i64::to_string(&codec);
1961 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
1962 raw_arguments.push(codec_primitive);
1963 while let Some(arg) = raw_arguments.last() {
1964 if arg.is_empty() {
1965 let _ = raw_arguments.pop();
1966 } else {
1967 break;
1968 }
1969 }
1970 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1971 lowlevel::Command::Execute { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1972 },
1973 highlevel::Command::Bac {
1974 codecs,
1975 } => {
1976 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1977 for codecs_element in codecs.iter() {
1978 let codecs_element_string = i64::to_string(&codecs_element);
1979 let codecs_element_primitive = lowlevel::Argument::PrimitiveArgument(codecs_element_string);
1980 raw_arguments.push(codecs_element_primitive);
1981 }
1982 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1983 lowlevel::Command::Execute { name: String::from("BAC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1984 },
1985 highlevel::Command::Bind {
1986 indicators,
1987 } => {
1988 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
1989 for indicators_element in indicators.iter() {
1990 let indicators_element_string = i64::to_string(&indicators_element);
1991 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
1992 raw_arguments.push(indicators_element_primitive);
1993 }
1994 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
1995 lowlevel::Command::Execute { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
1996 },
1997 highlevel::Command::BindTest {} => {
1998 lowlevel::Command::Test { name: String::from("BIND"), is_extension: true }
1999 },
2000 highlevel::Command::BindRead {} => {
2001 lowlevel::Command::Read { name: String::from("BIND"), is_extension: true }
2002 },
2003 highlevel::Command::Biev {
2004 anum,
2005 value,
2006 } => {
2007 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2008 let anum_string_int = *anum as i64;
2009 let anum_string = i64::to_string(&anum_string_int);
2010 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2011 raw_arguments.push(anum_primitive);
2012 let value_string = i64::to_string(&value);
2013 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2014 raw_arguments.push(value_primitive);
2015 while let Some(arg) = raw_arguments.last() {
2016 if arg.is_empty() {
2017 let _ = raw_arguments.pop();
2018 } else {
2019 break;
2020 }
2021 }
2022 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2023 lowlevel::Command::Execute { name: String::from("BIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2024 },
2025 highlevel::Command::ChldTest {} => {
2026 lowlevel::Command::Test { name: String::from("CHLD"), is_extension: true }
2027 },
2028 highlevel::Command::Cmer {
2029 mode,
2030 keyp,
2031 disp,
2032 ind,
2033 } => {
2034 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2035 match mode {
2036 None => {
2037 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2038 }
2039 Some(mode_unwrapped) => {
2040 let mode_unwrapped_string = i64::to_string(&mode_unwrapped);
2041 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_unwrapped_string);
2042 raw_arguments.push(mode_primitive);
2043 }
2044 }
2045 match keyp {
2046 None => {
2047 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2048 }
2049 Some(keyp_unwrapped) => {
2050 let keyp_unwrapped_string = i64::to_string(&keyp_unwrapped);
2051 let keyp_primitive = lowlevel::Argument::PrimitiveArgument(keyp_unwrapped_string);
2052 raw_arguments.push(keyp_primitive);
2053 }
2054 }
2055 match disp {
2056 None => {
2057 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2058 }
2059 Some(disp_unwrapped) => {
2060 let disp_unwrapped_string = i64::to_string(&disp_unwrapped);
2061 let disp_primitive = lowlevel::Argument::PrimitiveArgument(disp_unwrapped_string);
2062 raw_arguments.push(disp_primitive);
2063 }
2064 }
2065 match ind {
2066 None => {
2067 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2068 }
2069 Some(ind_unwrapped) => {
2070 let ind_unwrapped_string = i64::to_string(&ind_unwrapped);
2071 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_unwrapped_string);
2072 raw_arguments.push(ind_primitive);
2073 }
2074 }
2075 while let Some(arg) = raw_arguments.last() {
2076 if arg.is_empty() {
2077 let _ = raw_arguments.pop();
2078 } else {
2079 break;
2080 }
2081 }
2082 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2083 lowlevel::Command::Execute { name: String::from("CMER"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2084 },
2085 highlevel::Command::Nrec {
2086 nrec,
2087 } => {
2088 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2089 let nrec_string_int = if *nrec { 1 } else { 0 };
2090 let nrec_string = i64::to_string(&nrec_string_int);
2091 let nrec_primitive = lowlevel::Argument::PrimitiveArgument(nrec_string);
2092 raw_arguments.push(nrec_primitive);
2093 while let Some(arg) = raw_arguments.last() {
2094 if arg.is_empty() {
2095 let _ = raw_arguments.pop();
2096 } else {
2097 break;
2098 }
2099 }
2100 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2101 lowlevel::Command::Execute { name: String::from("NREC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2102 },
2103 highlevel::Command::Cops {
2104 three,
2105 format,
2106 } => {
2107 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2108 let three_string = i64::to_string(&three);
2109 let three_primitive = lowlevel::Argument::PrimitiveArgument(three_string);
2110 raw_arguments.push(three_primitive);
2111 let format_string_int = *format as i64;
2112 let format_string = i64::to_string(&format_string_int);
2113 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2114 raw_arguments.push(format_primitive);
2115 while let Some(arg) = raw_arguments.last() {
2116 if arg.is_empty() {
2117 let _ = raw_arguments.pop();
2118 } else {
2119 break;
2120 }
2121 }
2122 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2123 lowlevel::Command::Execute { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2124 },
2125 highlevel::Command::CopsRead {} => {
2126 lowlevel::Command::Read { name: String::from("COPS"), is_extension: true }
2127 },
2128 highlevel::Command::Cmee {
2129 enable,
2130 } => {
2131 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2132 let enable_string_int = if *enable { 1 } else { 0 };
2133 let enable_string = i64::to_string(&enable_string_int);
2134 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2135 raw_arguments.push(enable_primitive);
2136 while let Some(arg) = raw_arguments.last() {
2137 if arg.is_empty() {
2138 let _ = raw_arguments.pop();
2139 } else {
2140 break;
2141 }
2142 }
2143 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2144 lowlevel::Command::Execute { name: String::from("CMEE"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2145 },
2146 highlevel::Command::Ccwa {
2147 enable,
2148 } => {
2149 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2150 let enable_string_int = if *enable { 1 } else { 0 };
2151 let enable_string = i64::to_string(&enable_string_int);
2152 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2153 raw_arguments.push(enable_primitive);
2154 while let Some(arg) = raw_arguments.last() {
2155 if arg.is_empty() {
2156 let _ = raw_arguments.pop();
2157 } else {
2158 break;
2159 }
2160 }
2161 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2162 lowlevel::Command::Execute { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2163 },
2164 highlevel::Command::Clip {
2165 enable,
2166 } => {
2167 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2168 let enable_string_int = if *enable { 1 } else { 0 };
2169 let enable_string = i64::to_string(&enable_string_int);
2170 let enable_primitive = lowlevel::Argument::PrimitiveArgument(enable_string);
2171 raw_arguments.push(enable_primitive);
2172 while let Some(arg) = raw_arguments.last() {
2173 if arg.is_empty() {
2174 let _ = raw_arguments.pop();
2175 } else {
2176 break;
2177 }
2178 }
2179 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2180 lowlevel::Command::Execute { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2181 },
2182 highlevel::Command::Cnum { } => {
2183 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2184 lowlevel::Command::Execute { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2185 },
2186 highlevel::Command::Vts {
2187 code,
2188 } => {
2189 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2190 let code_string = code.clone();
2191 let code_primitive = lowlevel::Argument::PrimitiveArgument(code_string);
2192 raw_arguments.push(code_primitive);
2193 while let Some(arg) = raw_arguments.last() {
2194 if arg.is_empty() {
2195 let _ = raw_arguments.pop();
2196 } else {
2197 break;
2198 }
2199 }
2200 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2201 lowlevel::Command::Execute { name: String::from("VTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2202 },
2203 highlevel::Command::Vgs {
2204 level,
2205 } => {
2206 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2207 let level_string = i64::to_string(&level);
2208 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2209 raw_arguments.push(level_primitive);
2210 while let Some(arg) = raw_arguments.last() {
2211 if arg.is_empty() {
2212 let _ = raw_arguments.pop();
2213 } else {
2214 break;
2215 }
2216 }
2217 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2218 lowlevel::Command::Execute { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2219 },
2220 highlevel::Command::Vgm {
2221 level,
2222 } => {
2223 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2224 let level_string = i64::to_string(&level);
2225 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2226 raw_arguments.push(level_primitive);
2227 while let Some(arg) = raw_arguments.last() {
2228 if arg.is_empty() {
2229 let _ = raw_arguments.pop();
2230 } else {
2231 break;
2232 }
2233 }
2234 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2235 lowlevel::Command::Execute { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2236 },
2237 highlevel::Command::Bia {
2238 indrep,
2239 } => {
2240 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2241 for indrep_element in indrep.iter() {
2242 match indrep_element {
2243 None => {
2244 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2245 }
2246 Some(indrep_element_unwrapped) => {
2247 let indrep_element_unwrapped_string_int = if *indrep_element_unwrapped { 1 } else { 0 };
2248 let indrep_element_unwrapped_string = i64::to_string(&indrep_element_unwrapped_string_int);
2249 let indrep_element_primitive = lowlevel::Argument::PrimitiveArgument(indrep_element_unwrapped_string);
2250 raw_arguments.push(indrep_element_primitive);
2251 }
2252 }
2253 }
2254 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2255 lowlevel::Command::Execute { name: String::from("BIA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2256 },
2257 highlevel::Command::Answer { } => {
2258 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2259 lowlevel::Command::Execute { name: String::from("A"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2260 },
2261 highlevel::Command::Chup { } => {
2262 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2263 lowlevel::Command::Execute { name: String::from("CHUP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2264 },
2265 highlevel::Command::Chld {
2266 command,
2267 } => {
2268 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2269 let command_string = command.clone();
2270 let command_primitive = lowlevel::Argument::PrimitiveArgument(command_string);
2271 raw_arguments.push(command_primitive);
2272 while let Some(arg) = raw_arguments.last() {
2273 if arg.is_empty() {
2274 let _ = raw_arguments.pop();
2275 } else {
2276 break;
2277 }
2278 }
2279 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2280 lowlevel::Command::Execute { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from("=")), arguments, terminator: None } }
2281 },
2282 highlevel::Command::AtdNumber {
2283 number,
2284 } => {
2285 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2286 let number_string = number.clone();
2287 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2288 raw_arguments.push(number_primitive);
2289 while let Some(arg) = raw_arguments.last() {
2290 if arg.is_empty() {
2291 let _ = raw_arguments.pop();
2292 } else {
2293 break;
2294 }
2295 }
2296 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2297 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: Some(String::from(";")) } }
2298 },
2299 highlevel::Command::AtdMemory {
2300 location,
2301 } => {
2302 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2303 let location_string = location.clone();
2304 let location_primitive = lowlevel::Argument::PrimitiveArgument(location_string);
2305 raw_arguments.push(location_primitive);
2306 while let Some(arg) = raw_arguments.last() {
2307 if arg.is_empty() {
2308 let _ = raw_arguments.pop();
2309 } else {
2310 break;
2311 }
2312 }
2313 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2314 lowlevel::Command::Execute { name: String::from("D"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(">")), arguments, terminator: Some(String::from(";")) } }
2315 },
2316 highlevel::Command::Bldn { } => {
2317 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2318 lowlevel::Command::Execute { name: String::from("BLDN"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2319 },
2320 }
2321}
2322
2323pub fn lower_success(highlevel: &highlevel::Success) -> lowlevel::Response {
2324 match highlevel {
2325 highlevel::Success::Test { } => {
2326 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2327 lowlevel::Response::Success { name: String::from("TEST"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2328 },
2329 highlevel::Success::Testnod { } => {
2330 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2331 lowlevel::Response::Success { name: String::from("TESTNOD"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2332 },
2333 highlevel::Success::TestResponse { } => {
2334 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2335 lowlevel::Response::Success { name: String::from("TESTN"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2336 },
2337 highlevel::Success::Testext { } => {
2338 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2339 lowlevel::Response::Success { name: String::from("TESTEXT"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2340 },
2341 highlevel::Success::Testextnod { } => {
2342 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2343 lowlevel::Response::Success { name: String::from("TESTEXTNOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2344 },
2345 highlevel::Success::Testi {
2346 field,
2347 } => {
2348 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2349 let field_string = i64::to_string(&field);
2350 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2351 raw_arguments.push(field_primitive);
2352 while let Some(arg) = raw_arguments.last() {
2353 if arg.is_empty() {
2354 let _ = raw_arguments.pop();
2355 } else {
2356 break;
2357 }
2358 }
2359 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2360 lowlevel::Response::Success { name: String::from("TESTI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2361 },
2362 highlevel::Success::Testinod {
2363 field,
2364 } => {
2365 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2366 let field_string = i64::to_string(&field);
2367 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2368 raw_arguments.push(field_primitive);
2369 while let Some(arg) = raw_arguments.last() {
2370 if arg.is_empty() {
2371 let _ = raw_arguments.pop();
2372 } else {
2373 break;
2374 }
2375 }
2376 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2377 lowlevel::Response::Success { name: String::from("TESTINOD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2378 },
2379 highlevel::Success::Testic {
2380 field,
2381 } => {
2382 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2383 let field_string = i64::to_string(&field);
2384 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2385 raw_arguments.push(field_primitive);
2386 while let Some(arg) = raw_arguments.last() {
2387 if arg.is_empty() {
2388 let _ = raw_arguments.pop();
2389 } else {
2390 break;
2391 }
2392 }
2393 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2394 lowlevel::Response::Success { name: String::from("TESTIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2395 },
2396 highlevel::Success::Tests {
2397 field,
2398 } => {
2399 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2400 let field_string = field.clone();
2401 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2402 raw_arguments.push(field_primitive);
2403 while let Some(arg) = raw_arguments.last() {
2404 if arg.is_empty() {
2405 let _ = raw_arguments.pop();
2406 } else {
2407 break;
2408 }
2409 }
2410 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2411 lowlevel::Response::Success { name: String::from("TESTS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2412 },
2413 highlevel::Success::Testsi {
2414 field1,
2415 field2,
2416 } => {
2417 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2418 let field1_string = field1.clone();
2419 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2420 raw_arguments.push(field1_primitive);
2421 let field2_string = i64::to_string(&field2);
2422 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2423 raw_arguments.push(field2_primitive);
2424 while let Some(arg) = raw_arguments.last() {
2425 if arg.is_empty() {
2426 let _ = raw_arguments.pop();
2427 } else {
2428 break;
2429 }
2430 }
2431 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2432 lowlevel::Response::Success { name: String::from("TESTSI"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2433 },
2434 highlevel::Success::Testsic {
2435 field1,
2436 field2,
2437 } => {
2438 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2439 let field1_string = field1.clone();
2440 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2441 raw_arguments.push(field1_primitive);
2442 let field2_string = i64::to_string(&field2);
2443 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2444 raw_arguments.push(field2_primitive);
2445 while let Some(arg) = raw_arguments.last() {
2446 if arg.is_empty() {
2447 let _ = raw_arguments.pop();
2448 } else {
2449 break;
2450 }
2451 }
2452 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2453 lowlevel::Response::Success { name: String::from("TESTSIC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2454 },
2455 highlevel::Success::Testio {
2456 field1,
2457 field2,
2458 } => {
2459 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2460 let field1_string = i64::to_string(&field1);
2461 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2462 raw_arguments.push(field1_primitive);
2463 match field2 {
2464 None => {
2465 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2466 }
2467 Some(field2_unwrapped) => {
2468 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2469 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2470 raw_arguments.push(field2_primitive);
2471 }
2472 }
2473 while let Some(arg) = raw_arguments.last() {
2474 if arg.is_empty() {
2475 let _ = raw_arguments.pop();
2476 } else {
2477 break;
2478 }
2479 }
2480 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2481 lowlevel::Response::Success { name: String::from("TESTIO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2482 },
2483 highlevel::Success::Testioo {
2484 field1,
2485 field2,
2486 field3,
2487 } => {
2488 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2489 let field1_string = i64::to_string(&field1);
2490 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2491 raw_arguments.push(field1_primitive);
2492 match field2 {
2493 None => {
2494 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2495 }
2496 Some(field2_unwrapped) => {
2497 let field2_unwrapped_string = i64::to_string(&field2_unwrapped);
2498 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_unwrapped_string);
2499 raw_arguments.push(field2_primitive);
2500 }
2501 }
2502 match field3 {
2503 None => {
2504 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2505 }
2506 Some(field3_unwrapped) => {
2507 let field3_unwrapped_string = field3_unwrapped.clone();
2508 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_unwrapped_string);
2509 raw_arguments.push(field3_primitive);
2510 }
2511 }
2512 while let Some(arg) = raw_arguments.last() {
2513 if arg.is_empty() {
2514 let _ = raw_arguments.pop();
2515 } else {
2516 break;
2517 }
2518 }
2519 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2520 lowlevel::Response::Success { name: String::from("TESTIOO"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2521 },
2522 highlevel::Success::Testl {
2523 field,
2524 } => {
2525 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2526 for field_element in field.iter() {
2527 let field_element_string = i64::to_string(&field_element);
2528 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_string);
2529 raw_arguments.push(field_element_primitive);
2530 }
2531 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2532 lowlevel::Response::Success { name: String::from("TESTL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2533 },
2534 highlevel::Success::Testol {
2535 field,
2536 } => {
2537 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2538 for field_element in field.iter() {
2539 match field_element {
2540 None => {
2541 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2542 }
2543 Some(field_element_unwrapped) => {
2544 let field_element_unwrapped_string = i64::to_string(&field_element_unwrapped);
2545 let field_element_primitive = lowlevel::Argument::PrimitiveArgument(field_element_unwrapped_string);
2546 raw_arguments.push(field_element_primitive);
2547 }
2548 }
2549 }
2550 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2551 lowlevel::Response::Success { name: String::from("TESTOL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2552 },
2553 highlevel::Success::Testm {
2554 field,
2555 } => {
2556 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2557 for (field_typed_key, field_typed_value) in field {
2558 let field_primitive_key = i64::to_string(&field_typed_key);
2559 let field_primitive_value = field_typed_value.clone();
2560 let field_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field_primitive_key, value: field_primitive_value };
2561 raw_arguments.push(field_untyped_pair);
2562 }
2563 while let Some(arg) = raw_arguments.last() {
2564 if arg.is_empty() {
2565 let _ = raw_arguments.pop();
2566 } else {
2567 break;
2568 }
2569 }
2570 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2571 lowlevel::Response::Success { name: String::from("TESTM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2572 },
2573 highlevel::Success::Testp {
2574 field,
2575 } => {
2576 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2577 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2578 let field_string = i64::to_string(&field);
2579 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2580 raw_arguments_inner.push(field_primitive);
2581 raw_arguments_outer.push(raw_arguments_inner);
2582 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2583 lowlevel::Response::Success { name: String::from("TESTP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2584 },
2585 highlevel::Success::Testpp {
2586 field1,
2587 field2,
2588 field3,
2589 } => {
2590 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2591 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2592 let field1_string = i64::to_string(&field1);
2593 let field1_primitive = lowlevel::Argument::PrimitiveArgument(field1_string);
2594 raw_arguments_inner.push(field1_primitive);
2595 raw_arguments_outer.push(raw_arguments_inner);
2596 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2597 let field2_string = i64::to_string(&field2);
2598 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2599 raw_arguments_inner.push(field2_primitive);
2600 let field3_string = field3.clone();
2601 let field3_primitive = lowlevel::Argument::PrimitiveArgument(field3_string);
2602 raw_arguments_inner.push(field3_primitive);
2603 raw_arguments_outer.push(raw_arguments_inner);
2604 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2605 lowlevel::Response::Success { name: String::from("TESTPP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2606 },
2607 highlevel::Success::Testpmpil {
2608 field1,
2609 field2,
2610 field3,
2611 } => {
2612 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2613 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2614 for (field1_typed_key, field1_typed_value) in field1 {
2615 let field1_primitive_key = i64::to_string(&field1_typed_key);
2616 let field1_primitive_value = field1_typed_value.clone();
2617 let field1_untyped_pair = lowlevel::Argument::KeyValueArgument { key: field1_primitive_key, value: field1_primitive_value };
2618 raw_arguments_inner.push(field1_untyped_pair);
2619 }
2620 raw_arguments_outer.push(raw_arguments_inner);
2621 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2622 let field2_string = i64::to_string(&field2);
2623 let field2_primitive = lowlevel::Argument::PrimitiveArgument(field2_string);
2624 raw_arguments_inner.push(field2_primitive);
2625 for field3_element in field3.iter() {
2626 let field3_element_string = i64::to_string(&field3_element);
2627 let field3_element_primitive = lowlevel::Argument::PrimitiveArgument(field3_element_string);
2628 raw_arguments_inner.push(field3_element_primitive);
2629 }
2630 raw_arguments_outer.push(raw_arguments_inner);
2631 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2632 lowlevel::Response::Success { name: String::from("TESTPMPIL"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2633 },
2634 highlevel::Success::SameOne {
2635 field,
2636 } => {
2637 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2638 let field_string = i64::to_string(&field);
2639 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2640 raw_arguments.push(field_primitive);
2641 while let Some(arg) = raw_arguments.last() {
2642 if arg.is_empty() {
2643 let _ = raw_arguments.pop();
2644 } else {
2645 break;
2646 }
2647 }
2648 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2649 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2650 },
2651 highlevel::Success::SameTwo {
2652 field,
2653 } => {
2654 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2655 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2656 let field_string = i64::to_string(&field);
2657 let field_primitive = lowlevel::Argument::PrimitiveArgument(field_string);
2658 raw_arguments_inner.push(field_primitive);
2659 raw_arguments_outer.push(raw_arguments_inner);
2660 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2661 lowlevel::Response::Success { name: String::from("SAME"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2662 },
2663 highlevel::Success::Brsf {
2664 features,
2665 } => {
2666 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2667 let features_string = i64::to_string(&features);
2668 let features_primitive = lowlevel::Argument::PrimitiveArgument(features_string);
2669 raw_arguments.push(features_primitive);
2670 while let Some(arg) = raw_arguments.last() {
2671 if arg.is_empty() {
2672 let _ = raw_arguments.pop();
2673 } else {
2674 break;
2675 }
2676 }
2677 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2678 lowlevel::Response::Success { name: String::from("BRSF"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2679 },
2680 highlevel::Success::CindRead {
2681 ordered_values,
2682 } => {
2683 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2684 for ordered_values_element in ordered_values.iter() {
2685 let ordered_values_element_string = i64::to_string(&ordered_values_element);
2686 let ordered_values_element_primitive = lowlevel::Argument::PrimitiveArgument(ordered_values_element_string);
2687 raw_arguments.push(ordered_values_element_primitive);
2688 }
2689 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2690 lowlevel::Response::Success { name: String::from("CIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2691 },
2692 highlevel::Success::Clcc {
2693 index,
2694 direction,
2695 status,
2696 mode,
2697 multiparty,
2698 number,
2699 ty,
2700 alpha,
2701 priority,
2702 } => {
2703 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2704 let index_string = i64::to_string(&index);
2705 let index_primitive = lowlevel::Argument::PrimitiveArgument(index_string);
2706 raw_arguments.push(index_primitive);
2707 let direction_string = i64::to_string(&direction);
2708 let direction_primitive = lowlevel::Argument::PrimitiveArgument(direction_string);
2709 raw_arguments.push(direction_primitive);
2710 let status_string = i64::to_string(&status);
2711 let status_primitive = lowlevel::Argument::PrimitiveArgument(status_string);
2712 raw_arguments.push(status_primitive);
2713 let mode_string = i64::to_string(&mode);
2714 let mode_primitive = lowlevel::Argument::PrimitiveArgument(mode_string);
2715 raw_arguments.push(mode_primitive);
2716 let multiparty_string = i64::to_string(&multiparty);
2717 let multiparty_primitive = lowlevel::Argument::PrimitiveArgument(multiparty_string);
2718 raw_arguments.push(multiparty_primitive);
2719 match number {
2720 None => {
2721 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2722 }
2723 Some(number_unwrapped) => {
2724 let number_unwrapped_string = number_unwrapped.clone();
2725 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_unwrapped_string);
2726 raw_arguments.push(number_primitive);
2727 }
2728 }
2729 match ty {
2730 None => {
2731 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2732 }
2733 Some(ty_unwrapped) => {
2734 let ty_unwrapped_string = i64::to_string(&ty_unwrapped);
2735 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_unwrapped_string);
2736 raw_arguments.push(ty_primitive);
2737 }
2738 }
2739 match alpha {
2740 None => {
2741 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2742 }
2743 Some(alpha_unwrapped) => {
2744 let alpha_unwrapped_string = alpha_unwrapped.clone();
2745 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_unwrapped_string);
2746 raw_arguments.push(alpha_primitive);
2747 }
2748 }
2749 match priority {
2750 None => {
2751 raw_arguments.push(lowlevel::Argument::PrimitiveArgument(String::new()));
2752 }
2753 Some(priority_unwrapped) => {
2754 let priority_unwrapped_string = i64::to_string(&priority_unwrapped);
2755 let priority_primitive = lowlevel::Argument::PrimitiveArgument(priority_unwrapped_string);
2756 raw_arguments.push(priority_primitive);
2757 }
2758 }
2759 while let Some(arg) = raw_arguments.last() {
2760 if arg.is_empty() {
2761 let _ = raw_arguments.pop();
2762 } else {
2763 break;
2764 }
2765 }
2766 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2767 lowlevel::Response::Success { name: String::from("CLCC"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2768 },
2769 highlevel::Success::Bcs {
2770 codec,
2771 } => {
2772 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2773 let codec_string = i64::to_string(&codec);
2774 let codec_primitive = lowlevel::Argument::PrimitiveArgument(codec_string);
2775 raw_arguments.push(codec_primitive);
2776 while let Some(arg) = raw_arguments.last() {
2777 if arg.is_empty() {
2778 let _ = raw_arguments.pop();
2779 } else {
2780 break;
2781 }
2782 }
2783 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2784 lowlevel::Response::Success { name: String::from("BCS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2785 },
2786 highlevel::Success::BindList {
2787 indicators,
2788 } => {
2789 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2790 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2791 for indicators_element in indicators.iter() {
2792 let indicators_element_string_int = *indicators_element as i64;
2793 let indicators_element_string = i64::to_string(&indicators_element_string_int);
2794 let indicators_element_primitive = lowlevel::Argument::PrimitiveArgument(indicators_element_string);
2795 raw_arguments_inner.push(indicators_element_primitive);
2796 }
2797 raw_arguments_outer.push(raw_arguments_inner);
2798 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2799 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2800 },
2801 highlevel::Success::BindStatus {
2802 anum,
2803 state,
2804 } => {
2805 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2806 let anum_string_int = *anum as i64;
2807 let anum_string = i64::to_string(&anum_string_int);
2808 let anum_primitive = lowlevel::Argument::PrimitiveArgument(anum_string);
2809 raw_arguments.push(anum_primitive);
2810 let state_string_int = if *state { 1 } else { 0 };
2811 let state_string = i64::to_string(&state_string_int);
2812 let state_primitive = lowlevel::Argument::PrimitiveArgument(state_string);
2813 raw_arguments.push(state_primitive);
2814 while let Some(arg) = raw_arguments.last() {
2815 if arg.is_empty() {
2816 let _ = raw_arguments.pop();
2817 } else {
2818 break;
2819 }
2820 }
2821 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2822 lowlevel::Response::Success { name: String::from("BIND"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2823 },
2824 highlevel::Success::Chld {
2825 commands,
2826 } => {
2827 let mut raw_arguments_outer = Vec::<Vec<lowlevel::Argument>>::new();
2828 let mut raw_arguments_inner = Vec::<lowlevel::Argument>::new();
2829 for commands_element in commands.iter() {
2830 let commands_element_string = commands_element.clone();
2831 let commands_element_primitive = lowlevel::Argument::PrimitiveArgument(commands_element_string);
2832 raw_arguments_inner.push(commands_element_primitive);
2833 }
2834 raw_arguments_outer.push(raw_arguments_inner);
2835 let arguments = lowlevel::Arguments::ParenthesisDelimitedArgumentLists(raw_arguments_outer);
2836 lowlevel::Response::Success { name: String::from("CHLD"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2837 },
2838 highlevel::Success::Cops {
2839 format,
2840 zero,
2841 operator,
2842 } => {
2843 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2844 let format_string_int = *format as i64;
2845 let format_string = i64::to_string(&format_string_int);
2846 let format_primitive = lowlevel::Argument::PrimitiveArgument(format_string);
2847 raw_arguments.push(format_primitive);
2848 let zero_string = i64::to_string(&zero);
2849 let zero_primitive = lowlevel::Argument::PrimitiveArgument(zero_string);
2850 raw_arguments.push(zero_primitive);
2851 let operator_string = operator.clone();
2852 let operator_primitive = lowlevel::Argument::PrimitiveArgument(operator_string);
2853 raw_arguments.push(operator_primitive);
2854 while let Some(arg) = raw_arguments.last() {
2855 if arg.is_empty() {
2856 let _ = raw_arguments.pop();
2857 } else {
2858 break;
2859 }
2860 }
2861 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2862 lowlevel::Response::Success { name: String::from("COPS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2863 },
2864 highlevel::Success::Clip {
2865 number,
2866 ty,
2867 } => {
2868 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2869 let number_string = number.clone();
2870 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2871 raw_arguments.push(number_primitive);
2872 let ty_string = i64::to_string(&ty);
2873 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2874 raw_arguments.push(ty_primitive);
2875 while let Some(arg) = raw_arguments.last() {
2876 if arg.is_empty() {
2877 let _ = raw_arguments.pop();
2878 } else {
2879 break;
2880 }
2881 }
2882 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2883 lowlevel::Response::Success { name: String::from("CLIP"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2884 },
2885 highlevel::Success::Cnum {
2886 alpha,
2887 number,
2888 ty,
2889 speed,
2890 service,
2891 } => {
2892 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2893 let alpha_string = alpha.clone();
2894 let alpha_primitive = lowlevel::Argument::PrimitiveArgument(alpha_string);
2895 raw_arguments.push(alpha_primitive);
2896 let number_string = number.clone();
2897 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2898 raw_arguments.push(number_primitive);
2899 let ty_string = i64::to_string(&ty);
2900 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2901 raw_arguments.push(ty_primitive);
2902 let speed_string = speed.clone();
2903 let speed_primitive = lowlevel::Argument::PrimitiveArgument(speed_string);
2904 raw_arguments.push(speed_primitive);
2905 let service_string = i64::to_string(&service);
2906 let service_primitive = lowlevel::Argument::PrimitiveArgument(service_string);
2907 raw_arguments.push(service_primitive);
2908 while let Some(arg) = raw_arguments.last() {
2909 if arg.is_empty() {
2910 let _ = raw_arguments.pop();
2911 } else {
2912 break;
2913 }
2914 }
2915 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2916 lowlevel::Response::Success { name: String::from("CNUM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2917 },
2918 highlevel::Success::Vgs {
2919 level,
2920 } => {
2921 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2922 let level_string = i64::to_string(&level);
2923 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2924 raw_arguments.push(level_primitive);
2925 while let Some(arg) = raw_arguments.last() {
2926 if arg.is_empty() {
2927 let _ = raw_arguments.pop();
2928 } else {
2929 break;
2930 }
2931 }
2932 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2933 lowlevel::Response::Success { name: String::from("VGS"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2934 },
2935 highlevel::Success::Vgm {
2936 level,
2937 } => {
2938 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2939 let level_string = i64::to_string(&level);
2940 let level_primitive = lowlevel::Argument::PrimitiveArgument(level_string);
2941 raw_arguments.push(level_primitive);
2942 while let Some(arg) = raw_arguments.last() {
2943 if arg.is_empty() {
2944 let _ = raw_arguments.pop();
2945 } else {
2946 break;
2947 }
2948 }
2949 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2950 lowlevel::Response::Success { name: String::from("VGM"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2951 },
2952 highlevel::Success::Ciev {
2953 ind,
2954 value,
2955 } => {
2956 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2957 let ind_string = i64::to_string(&ind);
2958 let ind_primitive = lowlevel::Argument::PrimitiveArgument(ind_string);
2959 raw_arguments.push(ind_primitive);
2960 let value_string = i64::to_string(&value);
2961 let value_primitive = lowlevel::Argument::PrimitiveArgument(value_string);
2962 raw_arguments.push(value_primitive);
2963 while let Some(arg) = raw_arguments.last() {
2964 if arg.is_empty() {
2965 let _ = raw_arguments.pop();
2966 } else {
2967 break;
2968 }
2969 }
2970 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2971 lowlevel::Response::Success { name: String::from("CIEV"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2972 },
2973 highlevel::Success::Ccwa {
2974 number,
2975 ty,
2976 } => {
2977 let mut raw_arguments = Vec::<lowlevel::Argument>::new();
2978 let number_string = number.clone();
2979 let number_primitive = lowlevel::Argument::PrimitiveArgument(number_string);
2980 raw_arguments.push(number_primitive);
2981 let ty_string = i64::to_string(&ty);
2982 let ty_primitive = lowlevel::Argument::PrimitiveArgument(ty_string);
2983 raw_arguments.push(ty_primitive);
2984 while let Some(arg) = raw_arguments.last() {
2985 if arg.is_empty() {
2986 let _ = raw_arguments.pop();
2987 } else {
2988 break;
2989 }
2990 }
2991 let arguments = lowlevel::Arguments::ArgumentList(raw_arguments);
2992 lowlevel::Response::Success { name: String::from("CCWA"), is_extension: true, arguments: lowlevel::DelimitedArguments { delimiter: Some(String::from(":")), arguments, terminator: None } }
2993 },
2994 highlevel::Success::Ring { } => {
2995 let arguments = lowlevel::Arguments::ArgumentList(Vec::new());
2996 lowlevel::Response::Success { name: String::from("RING"), is_extension: false, arguments: lowlevel::DelimitedArguments { delimiter: None, arguments, terminator: None } }
2997 },
2998 }
2999}
3000