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
|
#[derive(Debug, PartialEq, Eq)]
pub enum ControlCode {
Melody, // 0x80
Space, // 0x81
Question, // 0x82
Bang, // 0x83
Newline, // 0x84
Punct, // 0x85
Bebe, // 0x86,
Control, // -1
}
#[derive(Debug, PartialEq, Eq)]
pub enum Letter {
A, // 0x5D
B, // 0x5E
C, // 0x5F
D, // 0x60
E, // 0x61
F, // 0x62
G, // 0x63
H, // 0x64
I, // 0x65
J, // 0x66
K, // 0x67
L, // 0x68
M, // 0x69
N, // 0x6A
O, // 0x6B
P, // 0x6C
Q, // 0x6D
R, // 0x6E
S, // 0x6F
T, // 0x70
U, // 0x71
V, // 0x72
W, // 0x73
X, // 0x74
Y, // 0x75
Z, // 0x76
}
#[derive(Debug, PartialEq, Eq)]
pub enum Digit {
D0, // 0x53
D1, // 0x54
D2, // 0x55
D3, // 0x56
D4, // 0x57
D5, // 0x58
D6, // 0x59
D7, // 0x5A
D8, // 0x5B
D9, // 0x5C
}
#[derive(Debug)]
pub enum VoiceCode {
Letter(Letter),
ControlCode(ControlCode),
Digit(Digit)
}
impl Letter {
fn is_shiin(&self) -> bool {
!self.is_boin()
}
fn is_boin(&self) -> bool {
use Letter::*;
[A, E, I, O, U, N].contains(&self)
}
}
|