1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
use nom;
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
pub enum Mode {
	ApplicationCursor,
	Ansi,
	SmallFont,
	SmoothScroll,
	ReverseVideo,
	Origin,
	AutoWrap,
	AutoRepeat,
	FormFeed,
	PrintComplete,
	CursorVisible,
	CursorRTL,
	HebrewKeyboard,
	HebrewEncoding,
	Ascii,
	NorthAmericanKeyboard,
	ProPrinterEmulation,
	VerticalCoupling,
	PageCoupling,
	ApplicationKeypad,
	Backspace,
	DataProcessing,
	SetMargins,
	LimitedTransmission,
	KeyPosition,
	Saver,
	NoClear,
	CopyRTL,
	AutoResize,
	Modem,
	AutoAnswerback,
	ConcealAnswerback,
	IgnoreNull,
	HalfDuplex,
	SecondaryKeyboard,
	Overscan,
	NumLock,
	CapsLock,
	HostIndicatorLed,
}
impl Mode {
	#[inline]
	pub fn parse<'a>(value: u32) -> Result<Self, nom::ErrorKind> {
		match value {
			1   => Ok(Mode::ApplicationCursor),
			2   => Ok(Mode::Ansi),
			3   => Ok(Mode::SmallFont),
			4   => Ok(Mode::SmoothScroll),
			5   => Ok(Mode::ReverseVideo),
			6   => Ok(Mode::Origin),
			7   => Ok(Mode::AutoWrap),
			8   => Ok(Mode::AutoRepeat),
			18  => Ok(Mode::FormFeed),
			19  => Ok(Mode::PrintComplete),
			25  => Ok(Mode::CursorVisible),
			34  => Ok(Mode::CursorRTL),
			35  => Ok(Mode::HebrewKeyboard),
			36  => Ok(Mode::HebrewEncoding),
			42  => Ok(Mode::Ascii),
			57  => Ok(Mode::NorthAmericanKeyboard),
			58  => Ok(Mode::ProPrinterEmulation),
			61  => Ok(Mode::VerticalCoupling),
			64  => Ok(Mode::PageCoupling),
			66  => Ok(Mode::ApplicationKeypad),
			67  => Ok(Mode::Backspace),
			68  => Ok(Mode::DataProcessing),
			69  => Ok(Mode::SetMargins),
			73  => Ok(Mode::LimitedTransmission),
			81  => Ok(Mode::KeyPosition),
			97  => Ok(Mode::Saver),
			95  => Ok(Mode::NoClear),
			96  => Ok(Mode::CopyRTL),
			98  => Ok(Mode::AutoResize),
			99  => Ok(Mode::Modem),
			100 => Ok(Mode::AutoAnswerback),
			101 => Ok(Mode::ConcealAnswerback),
			102 => Ok(Mode::IgnoreNull),
			103 => Ok(Mode::HalfDuplex),
			104 => Ok(Mode::SecondaryKeyboard),
			106 => Ok(Mode::Overscan),
			108 => Ok(Mode::NumLock),
			109 => Ok(Mode::CapsLock),
			110 => Ok(Mode::HostIndicatorLed),
			_ => Err(nom::ErrorKind::Custom(9004)),
		}
	}
}
impl Into<u32> for Mode {
	#[inline]
	fn into(self) -> u32 {
		match self {
			Mode::ApplicationCursor     => 1,
			Mode::Ansi                  => 2,
			Mode::SmallFont             => 3,
			Mode::SmoothScroll          => 4,
			Mode::ReverseVideo          => 5,
			Mode::Origin                => 6,
			Mode::AutoWrap              => 7,
			Mode::AutoRepeat            => 8,
			Mode::FormFeed              => 18,
			Mode::PrintComplete         => 19,
			Mode::CursorVisible         => 25,
			Mode::CursorRTL             => 34,
			Mode::HebrewKeyboard        => 35,
			Mode::HebrewEncoding        => 36,
			Mode::Ascii                 => 42,
			Mode::NorthAmericanKeyboard => 57,
			Mode::ProPrinterEmulation   => 58,
			Mode::VerticalCoupling      => 61,
			Mode::PageCoupling          => 64,
			Mode::ApplicationKeypad     => 66,
			Mode::Backspace             => 67,
			Mode::DataProcessing        => 68,
			Mode::SetMargins            => 69,
			Mode::LimitedTransmission   => 73,
			Mode::KeyPosition           => 81,
			Mode::NoClear               => 95,
			Mode::CopyRTL               => 96,
			Mode::Saver                 => 97,
			Mode::AutoResize            => 98,
			Mode::Modem                 => 99,
			Mode::AutoAnswerback        => 100,
			Mode::ConcealAnswerback     => 101,
			Mode::IgnoreNull            => 102,
			Mode::HalfDuplex            => 103,
			Mode::SecondaryKeyboard     => 104,
			Mode::Overscan              => 106,
			Mode::NumLock               => 108,
			Mode::CapsLock              => 109,
			Mode::HostIndicatorLed      => 110,
		}
	}
}