/* * Copyright (c) 2013-2015 Chris Newland. * Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD * Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki */ package org.adoptopenjdk.jitwatch.treevisitor; import java.util.List; import org.adoptopenjdk.jitwatch.model.IMetaMember; import org.adoptopenjdk.jitwatch.model.IReadOnlyJITDataModel; import org.adoptopenjdk.jitwatch.model.MetaClass; import org.adoptopenjdk.jitwatch.model.MetaPackage; public final class TreeVisitor { private TreeVisitor() { } public static void walkTree(IReadOnlyJITDataModel model, ITreeVisitable visitable) { visitable.reset(); List<MetaPackage> roots = model.getPackageManager().getRootPackages(); for (MetaPackage mp : roots) { walkPackage(mp, visitable); } } private static void walkPackage(MetaPackage mp, ITreeVisitable visitable) { List<MetaPackage> childPackages = mp.getChildPackages(); for (MetaPackage childPackage : childPackages) { walkPackage(childPackage, visitable); } List<MetaClass> packageClasses = mp.getPackageClasses(); for (MetaClass mc : packageClasses) { for (IMetaMember mm : mc.getMetaMembers()) { visitable.visit(mm); } } } }