17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package com.sun.tools.jextract; 24 25 import java.nio.file.Path; 26 import java.nio.file.Paths; 27 import java.util.ArrayList; 28 import java.util.List; 29 import java.util.function.Predicate; 30 import java.util.stream.Collectors; 31 import com.sun.tools.jextract.parser.Parser; 32 import com.sun.tools.jextract.tree.FunctionTree; 33 import com.sun.tools.jextract.tree.HeaderTree; 34 import com.sun.tools.jextract.tree.MacroTree; 35 import com.sun.tools.jextract.tree.SimpleTreeVisitor; 36 import com.sun.tools.jextract.tree.Tree; 37 import com.sun.tools.jextract.tree.VarTree; 38 import com.sun.tools.jextract.tree.TreeMaker; 39 import com.sun.tools.jextract.tree.TreePrinter; 40 41 /** 42 * This visitor filters variable, function, macro trees 43 * based on a Tree Predicate initialized. 44 */ 45 final class TreeFilter extends SimpleTreeVisitor<Tree, Void> { 46 private final TreeMaker treeMaker = new TreeMaker(); 47 private final Predicate<Tree> filter; 48 49 TreeFilter(Predicate<Tree> filter) { 50 this.filter = filter; 51 } 52 53 private Tree filterTree(Tree tree) { 54 return filter.test(tree)? tree : null; 55 } 56 57 HeaderTree transform(HeaderTree ht) { 58 return (HeaderTree)ht.accept(this, null); 59 } 60 61 @Override 62 public Tree defaultAction(Tree tree, Void v) { 63 return tree; 64 } 65 66 @Override 67 public Tree visitFunction(FunctionTree ft, Void v) { 68 return filterTree(ft); 69 } 70 71 @Override 72 public Tree visitMacro(MacroTree mt, Void v) { 73 return filterTree(mt); 74 } 75 76 @Override 77 public Tree visitHeader(HeaderTree ht, Void v) { | 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 package com.sun.tools.jextract; 24 25 import java.nio.file.Path; 26 import java.nio.file.Paths; 27 import java.util.ArrayList; 28 import java.util.List; 29 import java.util.function.Predicate; 30 import java.util.stream.Collectors; 31 import com.sun.tools.jextract.parser.Parser; 32 import com.sun.tools.jextract.tree.FunctionTree; 33 import com.sun.tools.jextract.tree.HeaderTree; 34 import com.sun.tools.jextract.tree.MacroTree; 35 import com.sun.tools.jextract.tree.SimpleTreeVisitor; 36 import com.sun.tools.jextract.tree.Tree; 37 import com.sun.tools.jextract.tree.TreePhase; 38 import com.sun.tools.jextract.tree.VarTree; 39 import com.sun.tools.jextract.tree.TreeMaker; 40 import com.sun.tools.jextract.tree.TreePrinter; 41 42 /** 43 * This visitor filters variable, function, macro trees 44 * based on a Tree Predicate initialized. 45 */ 46 final class TreeFilter extends SimpleTreeVisitor<Tree, Void> 47 implements TreePhase { 48 private final TreeMaker treeMaker = new TreeMaker(); 49 private final Predicate<Tree> filter; 50 51 TreeFilter(Predicate<Tree> filter) { 52 this.filter = filter; 53 } 54 55 private Tree filterTree(Tree tree) { 56 return filter.test(tree)? tree : null; 57 } 58 59 @Override 60 public HeaderTree transform(HeaderTree ht) { 61 return (HeaderTree)ht.accept(this, null); 62 } 63 64 @Override 65 public Tree defaultAction(Tree tree, Void v) { 66 return tree; 67 } 68 69 @Override 70 public Tree visitFunction(FunctionTree ft, Void v) { 71 return filterTree(ft); 72 } 73 74 @Override 75 public Tree visitMacro(MacroTree mt, Void v) { 76 return filterTree(mt); 77 } 78 79 @Override 80 public Tree visitHeader(HeaderTree ht, Void v) { |