/* * Copyright 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev.jjs.impl.codesplitter; import com.google.gwt.dev.jjs.ast.JMethod; import com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer; import java.util.List; /** * A dependency recorder that can record multiple dependency graphs. It has * methods for starting and finishing new dependency graphs. */ public interface MultipleDependencyGraphRecorder extends ControlFlowAnalyzer.DependencyRecorder { /** * A {@link MultipleDependencyGraphRecorder} that does nothing. */ MultipleDependencyGraphRecorder NULL_RECORDER = new MultipleDependencyGraphRecorder() { @Override public void close() { } @Override public void endDependencyGraph() { } @Override public void methodIsLiveBecause(JMethod liveMethod, List<JMethod> dependencyChain) { } @Override public void open() { } @Override public void startDependencyGraph(String name, String extendz) { } }; /** * Stop recording dependencies. */ void close(); /** * Stop recording the current dependency graph. */ void endDependencyGraph(); void open(); /** * Start a new dependency graph. It can be an extension of a previously * recorded dependency graph, in which case the dependencies in the previous * graph will not be repeated. */ void startDependencyGraph(String name, String extendz); }