aboutsummaryrefslogtreecommitdiff
path: root/src/phonemes/phonemes.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/phonemes/phonemes.rs')
-rw-r--r--src/phonemes/phonemes.rs30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/phonemes/phonemes.rs b/src/phonemes/phonemes.rs
index 9313c21..3ec5e56 100644
--- a/src/phonemes/phonemes.rs
+++ b/src/phonemes/phonemes.rs
@@ -1,6 +1,32 @@
-#[derive(Debug, PartialEq, Eq)]
+use super::consonant::Consonant;
+use super::digit::Digit;
+use super::digraph::Digraph;
+use super::vowel::VowelPhoneme;
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Phoneme {
-
+ Vowel(VowelPhoneme),
+ Consonant(Consonant),
+ Digit(Digit),
+ Digraph(Digraph),
+ Silent,
+ Raw(u8),
}
+impl Phoneme {
+ pub const fn code(self) -> u8 {
+ match self {
+ Phoneme::Vowel(v) => v.code(),
+ Phoneme::Consonant(c) => c.code(),
+ Phoneme::Digit(d) => d.code(),
+ Phoneme::Digraph(d) => d.code(),
+ Phoneme::Silent => 0x00,
+ Phoneme::Raw(n) => n,
+ }
+ }
+ pub const fn plays(self) -> bool {
+ let n = self.code();
+ n != 0 && n <= 0x77
+ }
+}