control_code/csi/
qualification.rs

1//            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2//                    Version 2, December 2004
3//
4// Copyleft (ↄ) meh. <meh@schizofreni.co> | http://meh.schizofreni.co
5//
6// Everyone is permitted to copy and distribute verbatim or modified
7// copies of this license document, and changing it is allowed as long
8// as the name is changed.
9//
10//            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11//   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12//
13//  0. You just DO WHAT THE FUCK YOU WANT TO.
14
15use nom;
16
17#[derive(Eq, PartialEq, Copy, Clone, Debug)]
18pub enum Qualification {
19	UnprotectedUnguarded,
20	ProtectedGuarded,
21	GraphicCharacterInput,
22	NumericInput,
23	AlphabeticInput,
24	AlignLast,
25	ZeroFill,
26	FieldStart,
27	ProtectedUnguarded,
28	SpaceFill,
29	AlignFirst,
30	Reverse,
31}
32
33impl Qualification {
34	#[inline]
35	pub fn parse<'a>(value: u32) -> Result<Self, nom::ErrorKind> {
36		match value {
37			0  => Ok(Qualification::UnprotectedUnguarded),
38			1  => Ok(Qualification::ProtectedGuarded),
39			2  => Ok(Qualification::GraphicCharacterInput),
40			3  => Ok(Qualification::NumericInput),
41			4  => Ok(Qualification::AlphabeticInput),
42			5  => Ok(Qualification::AlignLast),
43			6  => Ok(Qualification::ZeroFill),
44			7  => Ok(Qualification::FieldStart),
45			8  => Ok(Qualification::ProtectedUnguarded),
46			9  => Ok(Qualification::SpaceFill),
47			10 => Ok(Qualification::AlignFirst),
48			11 => Ok(Qualification::Reverse),
49			_  => Err(nom::ErrorKind::Custom(9004)),
50		}
51	}
52}
53
54impl Into<u32> for Qualification {
55	#[inline]
56	fn into(self) -> u32 {
57		match self {
58			Qualification::UnprotectedUnguarded  => 0,
59			Qualification::ProtectedGuarded      => 1,
60			Qualification::GraphicCharacterInput => 2,
61			Qualification::NumericInput          => 3,
62			Qualification::AlphabeticInput       => 4,
63			Qualification::AlignLast             => 5,
64			Qualification::ZeroFill              => 6,
65			Qualification::FieldStart            => 7,
66			Qualification::ProtectedUnguarded    => 8,
67			Qualification::SpaceFill             => 9,
68			Qualification::AlignFirst            => 10,
69			Qualification::Reverse               => 11,
70		}
71	}
72}