com.redhat.ceylon.model.loader.ModelCompleter Maven / Gradle / Ivy
package com.redhat.ceylon.model.loader;
import com.redhat.ceylon.model.loader.model.AnnotationProxyClass;
import com.redhat.ceylon.model.loader.model.AnnotationProxyMethod;
import com.redhat.ceylon.model.loader.model.LazyClass;
import com.redhat.ceylon.model.loader.model.LazyClassAlias;
import com.redhat.ceylon.model.loader.model.LazyInterface;
import com.redhat.ceylon.model.loader.model.LazyInterfaceAlias;
import com.redhat.ceylon.model.loader.model.LazyFunction;
import com.redhat.ceylon.model.loader.model.LazyTypeAlias;
import com.redhat.ceylon.model.loader.model.LazyValue;
/**
* Represents something which can complete a model if needed. This is used because we load declarations lazily,
* so we only fully load them when needed.
*
* @author Stéphane Épardaud
*/
public interface ModelCompleter {
/**
* Completes loading of a class
*/
void complete(LazyClass lazyClass);
/**
* Completes loading of a class's type parameters only
*/
void completeTypeParameters(LazyClass lazyClass);
/**
* Completes loading of an interface
*/
void complete(LazyInterface lazyInterface);
/**
* Completes loading of an interface's type parameters only
*/
void completeTypeParameters(LazyInterface lazyInterface);
/**
* Completes loading of a toplevel attribute
*/
void complete(LazyValue lazyValue);
/**
* Completes loading of a toplevel method
*/
void complete(LazyFunction lazyMethod);
/**
* Completes loading of a lazy class alias
*/
void complete(LazyClassAlias lazyClassAlias);
/**
* Completes loading of a lazy class alias's type parameters only
*/
void completeTypeParameters(LazyClassAlias lazyClassAlias);
/**
* Completes loading of a lazy interface alias
*/
void complete(LazyInterfaceAlias lazyInterfaceAlias);
/**
* Completes loading of a lazy interface alias's type parameters only
*/
void completeTypeParameters(LazyInterfaceAlias lazyInterfaceAlias);
/**
* Completes loading of a lazy type alias
*/
void complete(LazyTypeAlias lazyTypeAlias);
/**
* Completes loading of a lazy type alias's type parameters only
*/
void completeTypeParameters(LazyTypeAlias lazyTypeAlias);
/**
* Returns a lock we can use for thread-safety
*/
Object getLock();
/**
* Completes loading of an annotation proxy class
*/
void complete(AnnotationProxyClass annotationProxyClass);
/**
* Completes loading of an annotation proxy method
*/
void complete(AnnotationProxyMethod annotationProxyMethod);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy