diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-17 20:51:38 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-04-17 20:51:38 -0400 |
| commit | bada13a2ccedd860dfd7a45683e8e8f4ba8a038d (patch) | |
| tree | 23d978588cb10ba28e42bd4a23834ec41c501452 /BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java | |
| parent | 77fcc58d1facffbc3af50be8c05985350e9f1355 (diff) | |
Added new tree traversal option, and some minor changes
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.java | 31 |
1 files changed, 31 insertions, 0 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 5ee4200..03a1f93 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java +++ b/BJC-Utils2/src/main/java/bjc/utils/funcdata/Tree.java @@ -262,4 +262,35 @@ public class Tree<ContainedType> implements ITree<ContainedType> { }); } } + + @Override + public ITree<ContainedType> topDownTransform( + Function<ContainedType, TopDownTransformResult> transformPicker, + UnaryOperator<ITree<ContainedType>> transformer) { + TopDownTransformResult transformResult = + transformPicker.apply(data); + + switch (transformResult) { + case PASSTHROUGH: + ITree<ContainedType> result = new Tree<>(data); + + if (hasChildren) { + children.forEach((child) -> { + result.addChild(child.topDownTransform( + transformPicker, transformer)); + }); + } + + return result; + case SKIP: + return this; + case TRANSFORM: + return transformer.apply(this); + default: + throw new IllegalArgumentException( + "Recieved unknown transform result " + + transformResult); + + } + } } |
