summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-04-18 08:38:24 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-04-18 08:38:24 -0400
commit7c12fd8fe169944152ca73f0da4e8fe8e280f648 (patch)
tree87a0cc6a430b0647b2daebcbec62101cfd67bbae /BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java
parentbada13a2ccedd860dfd7a45683e8e8f4ba8a038d (diff)
Added new option to top-down travers
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java21
1 files changed, 20 insertions, 1 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java b/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java
index 03a1f93..cd43df7 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java
@@ -60,7 +60,15 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
}
}
- private Tree(ContainedType leafToken,
+ /**
+ * Create a new tree node with the specified children
+ *
+ * @param leafToken
+ * The data to hold in this node
+ * @param childrn
+ * A list of children for this node
+ */
+ public Tree(ContainedType leafToken,
IFunctionalList<ITree<ContainedType>> childrn) {
data = leafToken;
@@ -286,6 +294,17 @@ public class Tree<ContainedType> implements ITree<ContainedType> {
return this;
case TRANSFORM:
return transformer.apply(this);
+ case PUSHDOWN:
+ result = new Tree<>(data);
+
+ if (hasChildren) {
+ children.forEach((child) -> {
+ result.addChild(child.topDownTransform(
+ transformPicker, transformer));
+ });
+ }
+
+ return transformer.apply(result);
default:
throw new IllegalArgumentException(
"Recieved unknown transform result "