|
1 | 1 | //! Determinization and minimization of an NFA into the final DFA used by the engines.
|
2 | 2 |
|
3 |
| -#[cfg(not(feature = "multithread"))] |
4 |
| -use std::rc::Rc; |
5 |
| -#[cfg(feature = "multithread")] |
6 |
| -use std::sync::Arc as Rc; |
| 3 | +use std::sync::Arc; |
7 | 4 |
|
8 | 5 | // NOTE: Some comments in this module are outdated, because the minimizer doesn't
|
9 | 6 | // actually produce minimal automata as of now - see #91.
|
@@ -53,7 +50,7 @@ pub(super) struct Minimizer {
|
53 | 50 | #[derive(Debug)]
|
54 | 51 | struct SuperstateTransitionTable {
|
55 | 52 | array: ArrayTransitionSet,
|
56 |
| - member: VecMap<Rc<StringPattern>, SmallSet256>, |
| 53 | + member: VecMap<Arc<StringPattern>, SmallSet256>, |
57 | 54 | wildcard: SmallSet256,
|
58 | 55 | }
|
59 | 56 |
|
@@ -180,7 +177,7 @@ impl Minimizer {
|
180 | 177 | &self,
|
181 | 178 | id: DfaStateId,
|
182 | 179 | array_transitions: &[ArrayTransition],
|
183 |
| - member_transitions: &[(Rc<StringPattern>, DfaStateId)], |
| 180 | + member_transitions: &[(Arc<StringPattern>, DfaStateId)], |
184 | 181 | fallback: DfaStateId,
|
185 | 182 | ) -> StateAttributes {
|
186 | 183 | let mut attrs = StateAttributesBuilder::new();
|
@@ -557,8 +554,8 @@ mod tests {
|
557 | 554 | #[test]
|
558 | 555 | fn interstitial_descendant_wildcard() {
|
559 | 556 | // Query = $..a.b..*.a..b
|
560 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
561 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
| 557 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 558 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
562 | 559 |
|
563 | 560 | let nfa = NondeterministicAutomaton {
|
564 | 561 | ordered_states: vec![
|
@@ -626,8 +623,8 @@ mod tests {
|
626 | 623 | #[test]
|
627 | 624 | fn interstitial_nondescendant_wildcard() {
|
628 | 625 | // Query = $..a.b.*.a..b
|
629 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
630 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
| 626 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 627 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
631 | 628 |
|
632 | 629 | let nfa = NondeterministicAutomaton {
|
633 | 630 | ordered_states: vec![
|
@@ -701,7 +698,7 @@ mod tests {
|
701 | 698 | #[test]
|
702 | 699 | fn simple_multi_accepting() {
|
703 | 700 | // Query = $..a.*
|
704 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 701 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
705 | 702 |
|
706 | 703 | let nfa = NondeterministicAutomaton {
|
707 | 704 | ordered_states: vec![
|
@@ -799,7 +796,7 @@ mod tests {
|
799 | 796 | #[test]
|
800 | 797 | fn chained_wildcard_children() {
|
801 | 798 | // Query = $.a.*.*.*
|
802 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 799 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
803 | 800 |
|
804 | 801 | let nfa = NondeterministicAutomaton {
|
805 | 802 | ordered_states: vec![
|
@@ -860,7 +857,7 @@ mod tests {
|
860 | 857 | #[test]
|
861 | 858 | fn chained_wildcard_children_after_descendant() {
|
862 | 859 | // Query = $..a.*.*
|
863 |
| - let label = Rc::new(StringPattern::new(&JsonString::new("a"))); |
| 860 | + let label = Arc::new(StringPattern::new(&JsonString::new("a"))); |
864 | 861 |
|
865 | 862 | let nfa = NondeterministicAutomaton {
|
866 | 863 | ordered_states: vec![
|
@@ -938,11 +935,11 @@ mod tests {
|
938 | 935 | #[test]
|
939 | 936 | fn child_and_descendant() {
|
940 | 937 | // Query = $.x..a.b.a.b.c..d
|
941 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
942 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
943 |
| - let label_c = Rc::new(StringPattern::new(&JsonString::new("c"))); |
944 |
| - let label_d = Rc::new(StringPattern::new(&JsonString::new("d"))); |
945 |
| - let label_x = Rc::new(StringPattern::new(&JsonString::new("x"))); |
| 938 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 939 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 940 | + let label_c = Arc::new(StringPattern::new(&JsonString::new("c"))); |
| 941 | + let label_d = Arc::new(StringPattern::new(&JsonString::new("d"))); |
| 942 | + let label_x = Arc::new(StringPattern::new(&JsonString::new("x"))); |
946 | 943 |
|
947 | 944 | let nfa = NondeterministicAutomaton {
|
948 | 945 | ordered_states: vec![
|
@@ -1024,9 +1021,9 @@ mod tests {
|
1024 | 1021 | #[test]
|
1025 | 1022 | fn child_descendant_and_child_wildcard() {
|
1026 | 1023 | // Query = $.x.*..a.*.b
|
1027 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
1028 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
1029 |
| - let label_x = Rc::new(StringPattern::new(&JsonString::new("x"))); |
| 1024 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 1025 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 1026 | + let label_x = Arc::new(StringPattern::new(&JsonString::new("x"))); |
1030 | 1027 |
|
1031 | 1028 | let nfa = NondeterministicAutomaton {
|
1032 | 1029 | ordered_states: vec![
|
@@ -1106,10 +1103,10 @@ mod tests {
|
1106 | 1103 | #[test]
|
1107 | 1104 | fn all_name_and_wildcard_selectors() {
|
1108 | 1105 | // Query = $.a.b..c..d.*..*
|
1109 |
| - let label_a = Rc::new(StringPattern::new(&JsonString::new("a"))); |
1110 |
| - let label_b = Rc::new(StringPattern::new(&JsonString::new("b"))); |
1111 |
| - let label_c = Rc::new(StringPattern::new(&JsonString::new("c"))); |
1112 |
| - let label_d = Rc::new(StringPattern::new(&JsonString::new("d"))); |
| 1106 | + let label_a = Arc::new(StringPattern::new(&JsonString::new("a"))); |
| 1107 | + let label_b = Arc::new(StringPattern::new(&JsonString::new("b"))); |
| 1108 | + let label_c = Arc::new(StringPattern::new(&JsonString::new("c"))); |
| 1109 | + let label_d = Arc::new(StringPattern::new(&JsonString::new("d"))); |
1113 | 1110 |
|
1114 | 1111 | let nfa = NondeterministicAutomaton {
|
1115 | 1112 | ordered_states: vec![
|
|
0 commit comments