summaryrefslogtreecommitdiff
path: root/chain/src/archive.txt
diff options
context:
space:
mode:
Diffstat (limited to 'chain/src/archive.txt')
-rw-r--r--chain/src/archive.txt103
1 files changed, 103 insertions, 0 deletions
diff --git a/chain/src/archive.txt b/chain/src/archive.txt
index 79fe6d8..c93b4fe 100644
--- a/chain/src/archive.txt
+++ b/chain/src/archive.txt
@@ -638,3 +638,106 @@
// }
// Ok(())
+
+// let parents: Vec<_> = {
+// if old_label.clone_index().is_some() {
+// let mut parents = self.parents_of(node)?;
+// assert_eq!(parents.len(), 1);
+// node = parents.next().unwrap().node();
+// }
+
+// let parents: Vec<_> = self.parents_of(node)?.collect();
+
+// let mut result: Vec<(Parent, usize)> = Vec::with_capacity(
+// parents
+// .iter()
+// .map(|parent| {
+// self.parents_of(parent.node())
+// .map(|iter| iter.len())
+// .unwrap_or(0)
+// })
+// .sum(),
+// );
+
+// for parent in parents {
+// let mut parent_label = self
+// .vertex_label(parent.node())?
+// .ok_or_else(|| Error::NodeNoLabel(parent.node()))?
+// .label();
+
+// assert!(get_rule_label(parent_label).is_some());
+
+// if self.degree(parent.node())? != 1 {
+// dbg!(parent);
+// self.print_viz("dbg forest.gv").unwrap();
+
+// panic!("assumption fails");
+// }
+
+// parent_label.set_end_option(end);
+
+// let parent_label = ForestLabel::from(parent_label);
+
+// let mut builder = PLGBuilderMut::from_graph_mut(&mut self.graph);
+
+// let new_parent = builder.add_vertex(parent_label);
+
+// if let Some(packed) = new_packed {
+// builder.add_edge(new_parent, packed, new_label)?;
+// } else {
+// builder.add_edge(new_parent, new_node, new_label)?;
+// }
+
+// result.extend(
+// self.parents_of(parent.node())?
+// .map(|parent_parent| (parent_parent, new_parent)),
+// );
+// }
+
+// result
+// };
+
+// for (parent, new_child) in parents {
+// if !completingp {
+// if self.has_same_children_until(
+// parent.node(),
+// parent.node(),
+// parent.edge(),
+// new_child,
+// )? {
+// continue;
+// }
+
+// // we don't add a child to parent.edge() here.
+// let cloned = self.clone_node(parent.node(), parent.edge(), false)?;
+
+// let mut builder = PLGBuilderMut::from_graph_mut(&mut self.graph);
+
+// builder.add_edge(cloned, new_child, new_label)?;
+// } else {
+// if self.has_same_children_except(
+// parent.node(),
+// parent.node(),
+// parent.edge(),
+// new_child,
+// )? {
+// continue;
+// }
+
+// // we don't add a child to parent.edge() here.
+// let cloned = self.clone_node(parent.node(), parent.edge(), false)?;
+
+// let mut builder = PLGBuilderMut::from_graph_mut(&mut self.graph);
+
+// builder.add_edge(cloned, new_child, new_label)?;
+
+// let children_to_add: Vec<_> = builder
+// .children_of(parent.node())?
+// .skip(parent.edge() + 1)
+// .collect();
+
+// for child in children_to_add {
+// builder.add_edge(cloned, child, new_label)?;
+// }
+// }
+// }