diff options
Diffstat (limited to 'forest/src/archive_default.txt')
| -rw-r--r-- | forest/src/archive_default.txt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/forest/src/archive_default.txt b/forest/src/archive_default.txt index 5572ecc..d6e4e2e 100644 --- a/forest/src/archive_default.txt +++ b/forest/src/archive_default.txt @@ -523,3 +523,84 @@ mod forest_test { Ok(()) } } + +// #[derive(Debug, Clone, Copy)] +// enum Item<T: Copy + Clone + std::fmt::Debug> { +// Seen(T), +// Unseen(T), +// } + +// use Item::*; + +// impl<T: Copy + Clone + std::fmt::Debug> Item<T> { +// fn is_seen(self) -> bool { +// matches!(self, Self::Seen(_)) +// } + +// fn value(&self) -> T { +// match self { +// Seen(v) => *v, +// Unseen(v) => *v, +// } +// } +// } + +// let query_len = self.query.nodes_len(); + +// let forest_len = forest.nodes_len(); + +// let mut stack: Vec<(SkipState, usize)> = Vec::with_capacity(forest_len); + +// stack.push((SkipState::Any, root)); + +// let mut query_stack: Vec<usize> = Vec::with_capacity(query_len); + +// query_stack.push(query_root); + +// let mut match_result = false; + +// 'search: while let Some(item) = stack.pop() { +// // if item.is_seen() { +// // if match_result { +// // continue; +// // } + +// // // fallback +// // } + +// let (state, top) = item; + +// let qtop = if let Some(qtop) = query_stack.last() { +// *qtop +// } else { +// panic!("Query stack becomes empty"); +// }; + +// let top_label = forest.vertex_label(top)?.ok_or(QRError::NodeNoLabel(top))?; + +// // let top_status = top_label.status(); + +// if top_label.is_packed() { +// self.packs.push((top, 0)); + +// stack.try_reserve(forest.degree(top)?)?; + +// stack.extend(forest.children_of(top)?.map(|child| (state, child))); + +// continue 'search; +// } + +// let query_label = self.query.label_of_vertex(qtop)?; + +// if query_label.matches(top_label.label(), top_label.status()) { +// // Success branch + +// match_result = true; + +// // TODO: Deal with captures later +// } else { +// // Failure branch + +// match_result = false; +// } +// } |
