| /* |
| * Copyright 2011 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.core.ext; |
| |
| /** |
| * A mode to indicate how incremental generator output should be integrated by |
| * the deferred binding implementation. The RebindMode is included as a member |
| * of the {@link RebindResult} returned by |
| * {@link IncrementalGenerator#generateIncrementally}. It is up to each |
| * generator implementation to determine the conditions for reuse of previously |
| * generated cached output. |
| * |
| * @see RebindResult |
| * @see IncrementalGenerator#generateIncrementally |
| */ |
| public enum RebindMode { |
| |
| /** |
| * Indicates no generated code is needed to satisfy this rebind. This mode can |
| * be used in cases where the requested type can be used directly as a default |
| * instantiable class, or in cases where a generator determines it has already |
| * run for the requested type in the current context (e.g. via a failed call |
| * to {@link GeneratorContext#tryCreate}). |
| */ |
| USE_EXISTING, |
| |
| /** |
| * Indicates only newly generated output should be used. All generated output |
| * will be cached. |
| */ |
| USE_ALL_NEW, |
| |
| /** |
| * Indicates only newly generated output should be used, and no output should |
| * be cached. This mode should be used when no caching can be taken advantage |
| * of, such as for generators which don't implement |
| * {@link IncrementalGenerator#generateIncrementally}. |
| */ |
| USE_ALL_NEW_WITH_NO_CACHING, |
| |
| /** |
| * Indicates nothing new was generated, only cached output previously |
| * generated should be used. |
| */ |
| USE_ALL_CACHED, |
| |
| /** |
| * Indicates that a mixture of newly generated and previously cached output |
| * should be used. Types marked with a successful call to |
| * {@link GeneratorContext#tryReuseTypeFromCache} should be reused from cache, |
| * while everything else committed to the context should be treated as freshly |
| * generated output. A new composite cache entry will be created which |
| * combines the freshly generated output and the output reused from cache. |
| */ |
| USE_PARTIAL_CACHED |
| } |