blob: 05ad2d1be9d7a29341fb1d6962cf0b71c9264386 [file] [log] [blame]
// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.graph;
import com.android.tools.r8.origin.Origin;
import java.util.function.Function;
public interface Definition {
<T> T apply(
Function<ProgramDefinition, T> programFunction,
Function<ClasspathDefinition, T> classpathFunction,
Function<LibraryDefinition, T> libraryFunction);
default ClasspathOrLibraryClass asClasspathOrLibraryClass() {
return null;
}
default ClasspathOrLibraryDefinition asClasspathOrLibraryDefinition() {
return null;
}
default ProgramOrClasspathClass asProgramOrClasspathClass() {
return null;
}
default ProgramOrClasspathDefinition asProgramOrClasspathDefinition() {
return null;
}
ProgramDerivedContext asProgramDerivedContext(ProgramDerivedContext witness);
AccessFlags<?> getAccessFlags();
DexClass getContextClass();
DexType getContextType();
DexDefinition getDefinition();
Origin getOrigin();
DexReference getReference();
default boolean isClass() {
return false;
}
default DexClass asClass() {
return null;
}
default boolean isField() {
return false;
}
default DexClassAndField asField() {
return null;
}
default boolean isMember() {
return !isClass();
}
default DexClassAndMember<?, ?> asMember() {
return null;
}
default boolean isMethod() {
return false;
}
default DexClassAndMethod asMethod() {
return null;
}
default boolean isClasspathField() {
return false;
}
default ClasspathField asClasspathField() {
return null;
}
default boolean isClasspathMember() {
return false;
}
default boolean isClasspathMethod() {
return false;
}
default ClasspathMethod asClasspathMethod() {
return null;
}
default boolean isLibraryField() {
return false;
}
default LibraryField asLibraryField() {
return null;
}
default boolean isLibraryMember() {
return false;
}
default boolean isLibraryMethod() {
return false;
}
default LibraryMethod asLibraryMethod() {
return null;
}
default boolean isProgramClass() {
return false;
}
default DexProgramClass asProgramClass() {
return null;
}
default boolean isProgramDefinition() {
return false;
}
default ProgramDefinition asProgramDefinition() {
return null;
}
default boolean isProgramField() {
return false;
}
default ProgramField asProgramField() {
return null;
}
default boolean isProgramMember() {
return false;
}
default ProgramMember<?, ?> asProgramMember() {
return null;
}
default boolean isProgramMethod() {
return false;
}
default ProgramMethod asProgramMethod() {
return null;
}
}