divvunspell/transducer/
symbol_transition.rs1use crate::types::{SymbolNumber, TransitionTableIndex, Weight};
2
3#[derive(Debug, Clone)]
4pub struct SymbolTransition {
5 target: Option<TransitionTableIndex>,
6 symbol: Option<SymbolNumber>,
7 weight: Option<Weight>,
8}
9
10impl SymbolTransition {
11 pub fn new(
12 target: Option<TransitionTableIndex>,
13 symbol: Option<SymbolNumber>,
14 weight: Option<Weight>,
15 ) -> SymbolTransition {
16 SymbolTransition {
17 target,
18 symbol,
19 weight,
20 }
21 }
22
23 #[inline(always)]
24 pub fn target(&self) -> Option<TransitionTableIndex> {
25 self.target
26 }
27
28 #[inline(always)]
29 pub fn symbol(&self) -> Option<SymbolNumber> {
30 self.symbol
31 }
32
33 #[inline(always)]
34 pub fn weight(&self) -> Option<Weight> {
35 self.weight
36 }
37
38 #[inline(always)]
39 pub fn clone_with_epsilon_symbol(&self) -> SymbolTransition {
40 SymbolTransition {
41 target: self.target,
42 symbol: Some(0),
43 weight: self.weight,
44 }
45 }
46}