blob: c4664a4025c58c89dddac6fb867b59364094e588 [file] [log] [blame]
/*
* 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
}