aboutsummaryrefslogtreecommitdiff
path: root/src/corpus.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/corpus.rs')
-rw-r--r--src/corpus.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/corpus.rs b/src/corpus.rs
index 9b522e0..e1c903b 100644
--- a/src/corpus.rs
+++ b/src/corpus.rs
@@ -1,11 +1,21 @@
use std::fmt;
use std::fs;
-use crate::config::*;
use crate::layout::*;
-const NUM_BIGRAMS: usize = NUM_KEYS * NUM_KEYS;
+const fn build_lookup_table() -> [usize; 128] {
+ let mut result = [0; 128];
+ let mut i = 0;
+
+ while i < NUM_KEYS {
+ result[KEY_CHARS[i] as usize] = i;
+ i += 1;
+ }
+ return result;
+}
+const CHAR_TO_INDEX: [usize; 128] = build_lookup_table();
+const NUM_BIGRAMS: usize = NUM_KEYS * NUM_KEYS;
pub struct Corpus {
bigram_count: [u32; NUM_BIGRAMS],
character_count: [u32; 256],
@@ -20,6 +30,10 @@ fn pair_to_index(x: char, y: char) -> usize {
}
impl Corpus {
+ pub fn get_character_count(&self, c: char) -> u32 {
+ self.character_count[c as usize]
+ }
+
pub fn load(path: &str) -> Result<Corpus, std::io::Error> {
let contents = fs::read_to_string(path)?;