1use core::{convert::TryFrom, fmt};
5
6#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
8#[allow(non_camel_case_types)]
9pub enum ArgType {
10 Word = 0,
12 Opcode = 1,
14 Coordi = 2,
16 Coordq = 3,
18 Pal = 4,
20 Tlut = 5,
22 Timg = 6,
24 Tmem = 7,
26 Tile = 8,
28 Fmt = 9,
30 Siz = 10,
32 Dim = 11,
34 Cm = 12,
36 Tm = 13,
38 Ts = 14,
40 Dxt = 15,
42 Tag = 16,
44 Pm = 17,
46 Colorpart = 18,
48 Color = 19,
50 Lodfrac = 20,
52 Cimg = 21,
54 Zimg = 22,
56 Ac = 23,
58 Ad = 24,
60 Cd = 25,
62 Ccpre = 26,
64 Ccmuxa = 27,
66 Ccmuxb = 28,
68 Ccmuxc = 29,
70 Ccmuxd = 30,
72 Acmuxabd = 31,
74 Acmuxc = 32,
76 Cv = 33,
78 Tc = 34,
80 Cyc = 35,
82 Zs = 36,
84 Ck = 37,
86 Keyscale = 38,
88 Keywidth = 39,
90 Zi = 40,
92 Rm1 = 41,
94 Rm2 = 42,
96 Sc = 43,
98 Td = 44,
100 Tf = 45,
102 Tl = 46,
104 Tt = 47,
106 Tp = 48,
108 Line = 49,
110 Vtx = 50,
112 Vtxflag = 51,
114 Dl = 52,
116 Zraw = 53,
118 Dlflag = 54,
120 Cr = 55,
122 Num = 56,
124 Fogz = 57,
126 Fogp = 58,
128 Mtxptr = 59,
130 Gm = 60,
132 Mwo_matrix = 61,
134 Linewd = 62,
136 Uctext = 63,
138 Ucdata = 64,
140 Size = 65,
142 Lookatptr = 66,
144 Mtxparam = 67,
146 Mtxstack = 68,
148 Mwo_point = 69,
150 Wscale = 70,
152 Seg = 71,
154 Segptr = 72,
156 Lightsn = 73,
158 Numlights = 74,
160 Lightnum = 75,
162 Lightptr = 76,
164 Tcscale = 77,
166 Switch = 78,
168 St = 79,
170 Stdelta = 80,
172 Vtxptr = 81,
174 Vpptr = 82,
176 Dram = 83,
178 Sftlo = 84,
180 Othermodelo = 85,
182 Sfthi = 86,
184 Othermodehi = 87,
186 Mw = 88,
188 Mwo = 89,
190 Mwo_clip = 90,
192 Mwo_lightcol = 91,
194 Mv = 92,
196 Mvo = 93,
198 Dmem = 94,
200 Dmaflag = 95,
202}
203
204impl ArgType {
205 #[must_use]
207 pub const fn as_str(&self) -> &'static str {
208 match self {
209 Self::Word => "Word",
210 Self::Opcode => "Opcode",
211 Self::Coordi => "Coordi",
212 Self::Coordq => "Coordq",
213 Self::Pal => "Pal",
214 Self::Tlut => "Tlut",
215 Self::Timg => "Timg",
216 Self::Tmem => "Tmem",
217 Self::Tile => "Tile",
218 Self::Fmt => "Fmt",
219 Self::Siz => "Siz",
220 Self::Dim => "Dim",
221 Self::Cm => "Cm",
222 Self::Tm => "Tm",
223 Self::Ts => "Ts",
224 Self::Dxt => "Dxt",
225 Self::Tag => "Tag",
226 Self::Pm => "Pm",
227 Self::Colorpart => "Colorpart",
228 Self::Color => "Color",
229 Self::Lodfrac => "Lodfrac",
230 Self::Cimg => "Cimg",
231 Self::Zimg => "Zimg",
232 Self::Ac => "Ac",
233 Self::Ad => "Ad",
234 Self::Cd => "Cd",
235 Self::Ccpre => "Ccpre",
236 Self::Ccmuxa => "Ccmuxa",
237 Self::Ccmuxb => "Ccmuxb",
238 Self::Ccmuxc => "Ccmuxc",
239 Self::Ccmuxd => "Ccmuxd",
240 Self::Acmuxabd => "Acmuxabd",
241 Self::Acmuxc => "Acmuxc",
242 Self::Cv => "Cv",
243 Self::Tc => "Tc",
244 Self::Cyc => "Cyc",
245 Self::Zs => "Zs",
246 Self::Ck => "Ck",
247 Self::Keyscale => "Keyscale",
248 Self::Keywidth => "Keywidth",
249 Self::Zi => "Zi",
250 Self::Rm1 => "Rm1",
251 Self::Rm2 => "Rm2",
252 Self::Sc => "Sc",
253 Self::Td => "Td",
254 Self::Tf => "Tf",
255 Self::Tl => "Tl",
256 Self::Tt => "Tt",
257 Self::Tp => "Tp",
258 Self::Line => "Line",
259 Self::Vtx => "Vtx",
260 Self::Vtxflag => "Vtxflag",
261 Self::Dl => "Dl",
262 Self::Zraw => "Zraw",
263 Self::Dlflag => "Dlflag",
264 Self::Cr => "Cr",
265 Self::Num => "Num",
266 Self::Fogz => "Fogz",
267 Self::Fogp => "Fogp",
268 Self::Mtxptr => "Mtxptr",
269 Self::Gm => "Gm",
270 Self::Mwo_matrix => "Mwo_matrix",
271 Self::Linewd => "Linewd",
272 Self::Uctext => "Uctext",
273 Self::Ucdata => "Ucdata",
274 Self::Size => "Size",
275 Self::Lookatptr => "Lookatptr",
276 Self::Mtxparam => "Mtxparam",
277 Self::Mtxstack => "Mtxstack",
278 Self::Mwo_point => "Mwo_point",
279 Self::Wscale => "Wscale",
280 Self::Seg => "Seg",
281 Self::Segptr => "Segptr",
282 Self::Lightsn => "Lightsn",
283 Self::Numlights => "Numlights",
284 Self::Lightnum => "Lightnum",
285 Self::Lightptr => "Lightptr",
286 Self::Tcscale => "Tcscale",
287 Self::Switch => "Switch",
288 Self::St => "St",
289 Self::Stdelta => "Stdelta",
290 Self::Vtxptr => "Vtxptr",
291 Self::Vpptr => "Vpptr",
292 Self::Dram => "Dram",
293 Self::Sftlo => "Sftlo",
294 Self::Othermodelo => "Othermodelo",
295 Self::Sfthi => "Sfthi",
296 Self::Othermodehi => "Othermodehi",
297 Self::Mw => "Mw",
298 Self::Mwo => "Mwo",
299 Self::Mwo_clip => "Mwo_clip",
300 Self::Mwo_lightcol => "Mwo_lightcol",
301 Self::Mv => "Mv",
302 Self::Mvo => "Mvo",
303 Self::Dmem => "Dmem",
304 Self::Dmaflag => "Dmaflag",
305 }
306 }
307
308 #[must_use]
310 pub const fn from_u32(value: u32) -> Option<Self> {
311 match value {
312 0 => Some(Self::Word),
313 1 => Some(Self::Opcode),
314 2 => Some(Self::Coordi),
315 3 => Some(Self::Coordq),
316 4 => Some(Self::Pal),
317 5 => Some(Self::Tlut),
318 6 => Some(Self::Timg),
319 7 => Some(Self::Tmem),
320 8 => Some(Self::Tile),
321 9 => Some(Self::Fmt),
322 10 => Some(Self::Siz),
323 11 => Some(Self::Dim),
324 12 => Some(Self::Cm),
325 13 => Some(Self::Tm),
326 14 => Some(Self::Ts),
327 15 => Some(Self::Dxt),
328 16 => Some(Self::Tag),
329 17 => Some(Self::Pm),
330 18 => Some(Self::Colorpart),
331 19 => Some(Self::Color),
332 20 => Some(Self::Lodfrac),
333 21 => Some(Self::Cimg),
334 22 => Some(Self::Zimg),
335 23 => Some(Self::Ac),
336 24 => Some(Self::Ad),
337 25 => Some(Self::Cd),
338 26 => Some(Self::Ccpre),
339 27 => Some(Self::Ccmuxa),
340 28 => Some(Self::Ccmuxb),
341 29 => Some(Self::Ccmuxc),
342 30 => Some(Self::Ccmuxd),
343 31 => Some(Self::Acmuxabd),
344 32 => Some(Self::Acmuxc),
345 33 => Some(Self::Cv),
346 34 => Some(Self::Tc),
347 35 => Some(Self::Cyc),
348 36 => Some(Self::Zs),
349 37 => Some(Self::Ck),
350 38 => Some(Self::Keyscale),
351 39 => Some(Self::Keywidth),
352 40 => Some(Self::Zi),
353 41 => Some(Self::Rm1),
354 42 => Some(Self::Rm2),
355 43 => Some(Self::Sc),
356 44 => Some(Self::Td),
357 45 => Some(Self::Tf),
358 46 => Some(Self::Tl),
359 47 => Some(Self::Tt),
360 48 => Some(Self::Tp),
361 49 => Some(Self::Line),
362 50 => Some(Self::Vtx),
363 51 => Some(Self::Vtxflag),
364 52 => Some(Self::Dl),
365 53 => Some(Self::Zraw),
366 54 => Some(Self::Dlflag),
367 55 => Some(Self::Cr),
368 56 => Some(Self::Num),
369 57 => Some(Self::Fogz),
370 58 => Some(Self::Fogp),
371 59 => Some(Self::Mtxptr),
372 60 => Some(Self::Gm),
373 61 => Some(Self::Mwo_matrix),
374 62 => Some(Self::Linewd),
375 63 => Some(Self::Uctext),
376 64 => Some(Self::Ucdata),
377 65 => Some(Self::Size),
378 66 => Some(Self::Lookatptr),
379 67 => Some(Self::Mtxparam),
380 68 => Some(Self::Mtxstack),
381 69 => Some(Self::Mwo_point),
382 70 => Some(Self::Wscale),
383 71 => Some(Self::Seg),
384 72 => Some(Self::Segptr),
385 73 => Some(Self::Lightsn),
386 74 => Some(Self::Numlights),
387 75 => Some(Self::Lightnum),
388 76 => Some(Self::Lightptr),
389 77 => Some(Self::Tcscale),
390 78 => Some(Self::Switch),
391 79 => Some(Self::St),
392 80 => Some(Self::Stdelta),
393 81 => Some(Self::Vtxptr),
394 82 => Some(Self::Vpptr),
395 83 => Some(Self::Dram),
396 84 => Some(Self::Sftlo),
397 85 => Some(Self::Othermodelo),
398 86 => Some(Self::Sfthi),
399 87 => Some(Self::Othermodehi),
400 88 => Some(Self::Mw),
401 89 => Some(Self::Mwo),
402 90 => Some(Self::Mwo_clip),
403 91 => Some(Self::Mwo_lightcol),
404 92 => Some(Self::Mv),
405 93 => Some(Self::Mvo),
406 94 => Some(Self::Dmem),
407 95 => Some(Self::Dmaflag),
408 _ => None,
409 }
410 }
411
412 #[must_use]
414 pub const fn to_u32(&self) -> u32 {
415 match self {
416 Self::Word => 0,
417 Self::Opcode => 1,
418 Self::Coordi => 2,
419 Self::Coordq => 3,
420 Self::Pal => 4,
421 Self::Tlut => 5,
422 Self::Timg => 6,
423 Self::Tmem => 7,
424 Self::Tile => 8,
425 Self::Fmt => 9,
426 Self::Siz => 10,
427 Self::Dim => 11,
428 Self::Cm => 12,
429 Self::Tm => 13,
430 Self::Ts => 14,
431 Self::Dxt => 15,
432 Self::Tag => 16,
433 Self::Pm => 17,
434 Self::Colorpart => 18,
435 Self::Color => 19,
436 Self::Lodfrac => 20,
437 Self::Cimg => 21,
438 Self::Zimg => 22,
439 Self::Ac => 23,
440 Self::Ad => 24,
441 Self::Cd => 25,
442 Self::Ccpre => 26,
443 Self::Ccmuxa => 27,
444 Self::Ccmuxb => 28,
445 Self::Ccmuxc => 29,
446 Self::Ccmuxd => 30,
447 Self::Acmuxabd => 31,
448 Self::Acmuxc => 32,
449 Self::Cv => 33,
450 Self::Tc => 34,
451 Self::Cyc => 35,
452 Self::Zs => 36,
453 Self::Ck => 37,
454 Self::Keyscale => 38,
455 Self::Keywidth => 39,
456 Self::Zi => 40,
457 Self::Rm1 => 41,
458 Self::Rm2 => 42,
459 Self::Sc => 43,
460 Self::Td => 44,
461 Self::Tf => 45,
462 Self::Tl => 46,
463 Self::Tt => 47,
464 Self::Tp => 48,
465 Self::Line => 49,
466 Self::Vtx => 50,
467 Self::Vtxflag => 51,
468 Self::Dl => 52,
469 Self::Zraw => 53,
470 Self::Dlflag => 54,
471 Self::Cr => 55,
472 Self::Num => 56,
473 Self::Fogz => 57,
474 Self::Fogp => 58,
475 Self::Mtxptr => 59,
476 Self::Gm => 60,
477 Self::Mwo_matrix => 61,
478 Self::Linewd => 62,
479 Self::Uctext => 63,
480 Self::Ucdata => 64,
481 Self::Size => 65,
482 Self::Lookatptr => 66,
483 Self::Mtxparam => 67,
484 Self::Mtxstack => 68,
485 Self::Mwo_point => 69,
486 Self::Wscale => 70,
487 Self::Seg => 71,
488 Self::Segptr => 72,
489 Self::Lightsn => 73,
490 Self::Numlights => 74,
491 Self::Lightnum => 75,
492 Self::Lightptr => 76,
493 Self::Tcscale => 77,
494 Self::Switch => 78,
495 Self::St => 79,
496 Self::Stdelta => 80,
497 Self::Vtxptr => 81,
498 Self::Vpptr => 82,
499 Self::Dram => 83,
500 Self::Sftlo => 84,
501 Self::Othermodelo => 85,
502 Self::Sfthi => 86,
503 Self::Othermodehi => 87,
504 Self::Mw => 88,
505 Self::Mwo => 89,
506 Self::Mwo_clip => 90,
507 Self::Mwo_lightcol => 91,
508 Self::Mv => 92,
509 Self::Mvo => 93,
510 Self::Dmem => 94,
511 Self::Dmaflag => 95,
512 }
513 }
514}
515
516impl fmt::Display for ArgType {
517 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
518 write!(f, "{}", self.as_str())
519 }
520}
521
522impl From<gfxd_sys::arg_type::ArgType> for ArgType {
523 fn from(value: gfxd_sys::arg_type::ArgType) -> Self {
524 match value {
525 gfxd_sys::arg_type::gfxd_Word => Self::Word,
526 gfxd_sys::arg_type::gfxd_Opcode => Self::Opcode,
527 gfxd_sys::arg_type::gfxd_Coordi => Self::Coordi,
528 gfxd_sys::arg_type::gfxd_Coordq => Self::Coordq,
529 gfxd_sys::arg_type::gfxd_Pal => Self::Pal,
530 gfxd_sys::arg_type::gfxd_Tlut => Self::Tlut,
531 gfxd_sys::arg_type::gfxd_Timg => Self::Timg,
532 gfxd_sys::arg_type::gfxd_Tmem => Self::Tmem,
533 gfxd_sys::arg_type::gfxd_Tile => Self::Tile,
534 gfxd_sys::arg_type::gfxd_Fmt => Self::Fmt,
535 gfxd_sys::arg_type::gfxd_Siz => Self::Siz,
536 gfxd_sys::arg_type::gfxd_Dim => Self::Dim,
537 gfxd_sys::arg_type::gfxd_Cm => Self::Cm,
538 gfxd_sys::arg_type::gfxd_Tm => Self::Tm,
539 gfxd_sys::arg_type::gfxd_Ts => Self::Ts,
540 gfxd_sys::arg_type::gfxd_Dxt => Self::Dxt,
541 gfxd_sys::arg_type::gfxd_Tag => Self::Tag,
542 gfxd_sys::arg_type::gfxd_Pm => Self::Pm,
543 gfxd_sys::arg_type::gfxd_Colorpart => Self::Colorpart,
544 gfxd_sys::arg_type::gfxd_Color => Self::Color,
545 gfxd_sys::arg_type::gfxd_Lodfrac => Self::Lodfrac,
546 gfxd_sys::arg_type::gfxd_Cimg => Self::Cimg,
547 gfxd_sys::arg_type::gfxd_Zimg => Self::Zimg,
548 gfxd_sys::arg_type::gfxd_Ac => Self::Ac,
549 gfxd_sys::arg_type::gfxd_Ad => Self::Ad,
550 gfxd_sys::arg_type::gfxd_Cd => Self::Cd,
551 gfxd_sys::arg_type::gfxd_Ccpre => Self::Ccpre,
552 gfxd_sys::arg_type::gfxd_Ccmuxa => Self::Ccmuxa,
553 gfxd_sys::arg_type::gfxd_Ccmuxb => Self::Ccmuxb,
554 gfxd_sys::arg_type::gfxd_Ccmuxc => Self::Ccmuxc,
555 gfxd_sys::arg_type::gfxd_Ccmuxd => Self::Ccmuxd,
556 gfxd_sys::arg_type::gfxd_Acmuxabd => Self::Acmuxabd,
557 gfxd_sys::arg_type::gfxd_Acmuxc => Self::Acmuxc,
558 gfxd_sys::arg_type::gfxd_Cv => Self::Cv,
559 gfxd_sys::arg_type::gfxd_Tc => Self::Tc,
560 gfxd_sys::arg_type::gfxd_Cyc => Self::Cyc,
561 gfxd_sys::arg_type::gfxd_Zs => Self::Zs,
562 gfxd_sys::arg_type::gfxd_Ck => Self::Ck,
563 gfxd_sys::arg_type::gfxd_Keyscale => Self::Keyscale,
564 gfxd_sys::arg_type::gfxd_Keywidth => Self::Keywidth,
565 gfxd_sys::arg_type::gfxd_Zi => Self::Zi,
566 gfxd_sys::arg_type::gfxd_Rm1 => Self::Rm1,
567 gfxd_sys::arg_type::gfxd_Rm2 => Self::Rm2,
568 gfxd_sys::arg_type::gfxd_Sc => Self::Sc,
569 gfxd_sys::arg_type::gfxd_Td => Self::Td,
570 gfxd_sys::arg_type::gfxd_Tf => Self::Tf,
571 gfxd_sys::arg_type::gfxd_Tl => Self::Tl,
572 gfxd_sys::arg_type::gfxd_Tt => Self::Tt,
573 gfxd_sys::arg_type::gfxd_Tp => Self::Tp,
574 gfxd_sys::arg_type::gfxd_Line => Self::Line,
575 gfxd_sys::arg_type::gfxd_Vtx => Self::Vtx,
576 gfxd_sys::arg_type::gfxd_Vtxflag => Self::Vtxflag,
577 gfxd_sys::arg_type::gfxd_Dl => Self::Dl,
578 gfxd_sys::arg_type::gfxd_Zraw => Self::Zraw,
579 gfxd_sys::arg_type::gfxd_Dlflag => Self::Dlflag,
580 gfxd_sys::arg_type::gfxd_Cr => Self::Cr,
581 gfxd_sys::arg_type::gfxd_Num => Self::Num,
582 gfxd_sys::arg_type::gfxd_Fogz => Self::Fogz,
583 gfxd_sys::arg_type::gfxd_Fogp => Self::Fogp,
584 gfxd_sys::arg_type::gfxd_Mtxptr => Self::Mtxptr,
585 gfxd_sys::arg_type::gfxd_Gm => Self::Gm,
586 gfxd_sys::arg_type::gfxd_Mwo_matrix => Self::Mwo_matrix,
587 gfxd_sys::arg_type::gfxd_Linewd => Self::Linewd,
588 gfxd_sys::arg_type::gfxd_Uctext => Self::Uctext,
589 gfxd_sys::arg_type::gfxd_Ucdata => Self::Ucdata,
590 gfxd_sys::arg_type::gfxd_Size => Self::Size,
591 gfxd_sys::arg_type::gfxd_Lookatptr => Self::Lookatptr,
592 gfxd_sys::arg_type::gfxd_Mtxparam => Self::Mtxparam,
593 gfxd_sys::arg_type::gfxd_Mtxstack => Self::Mtxstack,
594 gfxd_sys::arg_type::gfxd_Mwo_point => Self::Mwo_point,
595 gfxd_sys::arg_type::gfxd_Wscale => Self::Wscale,
596 gfxd_sys::arg_type::gfxd_Seg => Self::Seg,
597 gfxd_sys::arg_type::gfxd_Segptr => Self::Segptr,
598 gfxd_sys::arg_type::gfxd_Lightsn => Self::Lightsn,
599 gfxd_sys::arg_type::gfxd_Numlights => Self::Numlights,
600 gfxd_sys::arg_type::gfxd_Lightnum => Self::Lightnum,
601 gfxd_sys::arg_type::gfxd_Lightptr => Self::Lightptr,
602 gfxd_sys::arg_type::gfxd_Tcscale => Self::Tcscale,
603 gfxd_sys::arg_type::gfxd_Switch => Self::Switch,
604 gfxd_sys::arg_type::gfxd_St => Self::St,
605 gfxd_sys::arg_type::gfxd_Stdelta => Self::Stdelta,
606 gfxd_sys::arg_type::gfxd_Vtxptr => Self::Vtxptr,
607 gfxd_sys::arg_type::gfxd_Vpptr => Self::Vpptr,
608 gfxd_sys::arg_type::gfxd_Dram => Self::Dram,
609 gfxd_sys::arg_type::gfxd_Sftlo => Self::Sftlo,
610 gfxd_sys::arg_type::gfxd_Othermodelo => Self::Othermodelo,
611 gfxd_sys::arg_type::gfxd_Sfthi => Self::Sfthi,
612 gfxd_sys::arg_type::gfxd_Othermodehi => Self::Othermodehi,
613 gfxd_sys::arg_type::gfxd_Mw => Self::Mw,
614 gfxd_sys::arg_type::gfxd_Mwo => Self::Mwo,
615 gfxd_sys::arg_type::gfxd_Mwo_clip => Self::Mwo_clip,
616 gfxd_sys::arg_type::gfxd_Mwo_lightcol => Self::Mwo_lightcol,
617 gfxd_sys::arg_type::gfxd_Mv => Self::Mv,
618 gfxd_sys::arg_type::gfxd_Mvo => Self::Mvo,
619 gfxd_sys::arg_type::gfxd_Dmem => Self::Dmem,
620 gfxd_sys::arg_type::gfxd_Dmaflag => Self::Dmaflag,
621 }
622 }
623}
624
625impl From<ArgType> for gfxd_sys::arg_type::ArgType {
626 fn from(value: ArgType) -> gfxd_sys::arg_type::ArgType {
627 match value {
628 ArgType::Word => gfxd_sys::arg_type::gfxd_Word,
629 ArgType::Opcode => gfxd_sys::arg_type::gfxd_Opcode,
630 ArgType::Coordi => gfxd_sys::arg_type::gfxd_Coordi,
631 ArgType::Coordq => gfxd_sys::arg_type::gfxd_Coordq,
632 ArgType::Pal => gfxd_sys::arg_type::gfxd_Pal,
633 ArgType::Tlut => gfxd_sys::arg_type::gfxd_Tlut,
634 ArgType::Timg => gfxd_sys::arg_type::gfxd_Timg,
635 ArgType::Tmem => gfxd_sys::arg_type::gfxd_Tmem,
636 ArgType::Tile => gfxd_sys::arg_type::gfxd_Tile,
637 ArgType::Fmt => gfxd_sys::arg_type::gfxd_Fmt,
638 ArgType::Siz => gfxd_sys::arg_type::gfxd_Siz,
639 ArgType::Dim => gfxd_sys::arg_type::gfxd_Dim,
640 ArgType::Cm => gfxd_sys::arg_type::gfxd_Cm,
641 ArgType::Tm => gfxd_sys::arg_type::gfxd_Tm,
642 ArgType::Ts => gfxd_sys::arg_type::gfxd_Ts,
643 ArgType::Dxt => gfxd_sys::arg_type::gfxd_Dxt,
644 ArgType::Tag => gfxd_sys::arg_type::gfxd_Tag,
645 ArgType::Pm => gfxd_sys::arg_type::gfxd_Pm,
646 ArgType::Colorpart => gfxd_sys::arg_type::gfxd_Colorpart,
647 ArgType::Color => gfxd_sys::arg_type::gfxd_Color,
648 ArgType::Lodfrac => gfxd_sys::arg_type::gfxd_Lodfrac,
649 ArgType::Cimg => gfxd_sys::arg_type::gfxd_Cimg,
650 ArgType::Zimg => gfxd_sys::arg_type::gfxd_Zimg,
651 ArgType::Ac => gfxd_sys::arg_type::gfxd_Ac,
652 ArgType::Ad => gfxd_sys::arg_type::gfxd_Ad,
653 ArgType::Cd => gfxd_sys::arg_type::gfxd_Cd,
654 ArgType::Ccpre => gfxd_sys::arg_type::gfxd_Ccpre,
655 ArgType::Ccmuxa => gfxd_sys::arg_type::gfxd_Ccmuxa,
656 ArgType::Ccmuxb => gfxd_sys::arg_type::gfxd_Ccmuxb,
657 ArgType::Ccmuxc => gfxd_sys::arg_type::gfxd_Ccmuxc,
658 ArgType::Ccmuxd => gfxd_sys::arg_type::gfxd_Ccmuxd,
659 ArgType::Acmuxabd => gfxd_sys::arg_type::gfxd_Acmuxabd,
660 ArgType::Acmuxc => gfxd_sys::arg_type::gfxd_Acmuxc,
661 ArgType::Cv => gfxd_sys::arg_type::gfxd_Cv,
662 ArgType::Tc => gfxd_sys::arg_type::gfxd_Tc,
663 ArgType::Cyc => gfxd_sys::arg_type::gfxd_Cyc,
664 ArgType::Zs => gfxd_sys::arg_type::gfxd_Zs,
665 ArgType::Ck => gfxd_sys::arg_type::gfxd_Ck,
666 ArgType::Keyscale => gfxd_sys::arg_type::gfxd_Keyscale,
667 ArgType::Keywidth => gfxd_sys::arg_type::gfxd_Keywidth,
668 ArgType::Zi => gfxd_sys::arg_type::gfxd_Zi,
669 ArgType::Rm1 => gfxd_sys::arg_type::gfxd_Rm1,
670 ArgType::Rm2 => gfxd_sys::arg_type::gfxd_Rm2,
671 ArgType::Sc => gfxd_sys::arg_type::gfxd_Sc,
672 ArgType::Td => gfxd_sys::arg_type::gfxd_Td,
673 ArgType::Tf => gfxd_sys::arg_type::gfxd_Tf,
674 ArgType::Tl => gfxd_sys::arg_type::gfxd_Tl,
675 ArgType::Tt => gfxd_sys::arg_type::gfxd_Tt,
676 ArgType::Tp => gfxd_sys::arg_type::gfxd_Tp,
677 ArgType::Line => gfxd_sys::arg_type::gfxd_Line,
678 ArgType::Vtx => gfxd_sys::arg_type::gfxd_Vtx,
679 ArgType::Vtxflag => gfxd_sys::arg_type::gfxd_Vtxflag,
680 ArgType::Dl => gfxd_sys::arg_type::gfxd_Dl,
681 ArgType::Zraw => gfxd_sys::arg_type::gfxd_Zraw,
682 ArgType::Dlflag => gfxd_sys::arg_type::gfxd_Dlflag,
683 ArgType::Cr => gfxd_sys::arg_type::gfxd_Cr,
684 ArgType::Num => gfxd_sys::arg_type::gfxd_Num,
685 ArgType::Fogz => gfxd_sys::arg_type::gfxd_Fogz,
686 ArgType::Fogp => gfxd_sys::arg_type::gfxd_Fogp,
687 ArgType::Mtxptr => gfxd_sys::arg_type::gfxd_Mtxptr,
688 ArgType::Gm => gfxd_sys::arg_type::gfxd_Gm,
689 ArgType::Mwo_matrix => gfxd_sys::arg_type::gfxd_Mwo_matrix,
690 ArgType::Linewd => gfxd_sys::arg_type::gfxd_Linewd,
691 ArgType::Uctext => gfxd_sys::arg_type::gfxd_Uctext,
692 ArgType::Ucdata => gfxd_sys::arg_type::gfxd_Ucdata,
693 ArgType::Size => gfxd_sys::arg_type::gfxd_Size,
694 ArgType::Lookatptr => gfxd_sys::arg_type::gfxd_Lookatptr,
695 ArgType::Mtxparam => gfxd_sys::arg_type::gfxd_Mtxparam,
696 ArgType::Mtxstack => gfxd_sys::arg_type::gfxd_Mtxstack,
697 ArgType::Mwo_point => gfxd_sys::arg_type::gfxd_Mwo_point,
698 ArgType::Wscale => gfxd_sys::arg_type::gfxd_Wscale,
699 ArgType::Seg => gfxd_sys::arg_type::gfxd_Seg,
700 ArgType::Segptr => gfxd_sys::arg_type::gfxd_Segptr,
701 ArgType::Lightsn => gfxd_sys::arg_type::gfxd_Lightsn,
702 ArgType::Numlights => gfxd_sys::arg_type::gfxd_Numlights,
703 ArgType::Lightnum => gfxd_sys::arg_type::gfxd_Lightnum,
704 ArgType::Lightptr => gfxd_sys::arg_type::gfxd_Lightptr,
705 ArgType::Tcscale => gfxd_sys::arg_type::gfxd_Tcscale,
706 ArgType::Switch => gfxd_sys::arg_type::gfxd_Switch,
707 ArgType::St => gfxd_sys::arg_type::gfxd_St,
708 ArgType::Stdelta => gfxd_sys::arg_type::gfxd_Stdelta,
709 ArgType::Vtxptr => gfxd_sys::arg_type::gfxd_Vtxptr,
710 ArgType::Vpptr => gfxd_sys::arg_type::gfxd_Vpptr,
711 ArgType::Dram => gfxd_sys::arg_type::gfxd_Dram,
712 ArgType::Sftlo => gfxd_sys::arg_type::gfxd_Sftlo,
713 ArgType::Othermodelo => gfxd_sys::arg_type::gfxd_Othermodelo,
714 ArgType::Sfthi => gfxd_sys::arg_type::gfxd_Sfthi,
715 ArgType::Othermodehi => gfxd_sys::arg_type::gfxd_Othermodehi,
716 ArgType::Mw => gfxd_sys::arg_type::gfxd_Mw,
717 ArgType::Mwo => gfxd_sys::arg_type::gfxd_Mwo,
718 ArgType::Mwo_clip => gfxd_sys::arg_type::gfxd_Mwo_clip,
719 ArgType::Mwo_lightcol => gfxd_sys::arg_type::gfxd_Mwo_lightcol,
720 ArgType::Mv => gfxd_sys::arg_type::gfxd_Mv,
721 ArgType::Mvo => gfxd_sys::arg_type::gfxd_Mvo,
722 ArgType::Dmem => gfxd_sys::arg_type::gfxd_Dmem,
723 ArgType::Dmaflag => gfxd_sys::arg_type::gfxd_Dmaflag,
724 }
725 }
726}
727
728pub struct IntoArgTypeError;
729
730impl TryFrom<u32> for ArgType {
731 type Error = IntoArgTypeError;
732
733 fn try_from(value: u32) -> Result<Self, Self::Error> {
734 Self::from_u32(value).ok_or(IntoArgTypeError)
735 }
736}
737
738impl From<ArgType> for u32 {
739 fn from(value: ArgType) -> Self {
740 value.to_u32()
741 }
742}