Package com.strobel.assembler.metadata
Class MetadataResolver
- java.lang.Object
-
- com.strobel.assembler.metadata.MetadataResolver
-
- All Implemented Interfaces:
IGenericContext
,IMetadataResolver
- Direct Known Subclasses:
MetadataResolver.LimitedResolver
,MetadataSystem
public abstract class MetadataResolver extends java.lang.Object implements IMetadataResolver, IGenericContext
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
MetadataResolver.LimitedResolver
-
Field Summary
Fields Modifier and Type Field Description private java.util.Stack<IResolverFrame>
_frames
-
Fields inherited from interface com.strobel.assembler.metadata.IMetadataResolver
EMPTY
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MetadataResolver()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private static boolean
areEquivalent(GenericParameter a, GenericParameter b)
private static boolean
areEquivalent(IGenericInstance a, IGenericInstance b)
static boolean
areEquivalent(TypeReference a, TypeReference b)
Returns whether two type references refer to the same type.static boolean
areEquivalent(TypeReference a, TypeReference b, boolean strict)
Returns whether two type references refer to the same type.(package private) static <T extends TypeReference>
booleanareEquivalent(java.util.List<T> a, java.util.List<T> b)
(package private) static boolean
areParametersEquivalent(java.util.List<ParameterDefinition> a, java.util.List<ParameterDefinition> b)
static IMetadataResolver
createLimitedResolver()
GenericParameter
findTypeVariable(java.lang.String name)
(package private) FieldDefinition
getField(TypeDefinition declaringType, FieldReference reference)
(package private) static FieldDefinition
getField(java.util.List<FieldDefinition> candidates, FieldReference reference)
(package private) MethodDefinition
getMethod(TypeDefinition declaringType, MethodReference reference)
(package private) static MethodDefinition
getMethod(java.util.List<MethodDefinition> candidates, MethodReference reference)
(package private) static TypeDefinition
getNestedType(java.util.List<TypeDefinition> candidates, TypeReference reference)
TypeReference
lookupType(java.lang.String descriptor)
protected abstract TypeReference
lookupTypeCore(java.lang.String descriptor)
void
popFrame()
void
pushFrame(IResolverFrame frame)
FieldDefinition
resolve(FieldReference field)
MethodDefinition
resolve(MethodReference method)
TypeDefinition
resolve(TypeReference type)
protected abstract TypeDefinition
resolveCore(TypeReference type)
-
-
-
Field Detail
-
_frames
private final java.util.Stack<IResolverFrame> _frames
-
-
Method Detail
-
lookupType
public final TypeReference lookupType(java.lang.String descriptor)
- Specified by:
lookupType
in interfaceIMetadataResolver
-
findTypeVariable
public final GenericParameter findTypeVariable(java.lang.String name)
- Specified by:
findTypeVariable
in interfaceIGenericContext
-
lookupTypeCore
protected abstract TypeReference lookupTypeCore(java.lang.String descriptor)
-
pushFrame
public void pushFrame(IResolverFrame frame)
- Specified by:
pushFrame
in interfaceIMetadataResolver
-
popFrame
public void popFrame()
- Specified by:
popFrame
in interfaceIMetadataResolver
-
resolve
public TypeDefinition resolve(TypeReference type)
- Specified by:
resolve
in interfaceIMetadataResolver
-
resolveCore
protected abstract TypeDefinition resolveCore(TypeReference type)
-
resolve
public FieldDefinition resolve(FieldReference field)
- Specified by:
resolve
in interfaceIMetadataResolver
-
resolve
public MethodDefinition resolve(MethodReference method)
- Specified by:
resolve
in interfaceIMetadataResolver
-
getField
final FieldDefinition getField(TypeDefinition declaringType, FieldReference reference)
-
getMethod
final MethodDefinition getMethod(TypeDefinition declaringType, MethodReference reference)
-
getNestedType
static TypeDefinition getNestedType(java.util.List<TypeDefinition> candidates, TypeReference reference)
-
getField
static FieldDefinition getField(java.util.List<FieldDefinition> candidates, FieldReference reference)
-
getMethod
static MethodDefinition getMethod(java.util.List<MethodDefinition> candidates, MethodReference reference)
-
areEquivalent
public static boolean areEquivalent(TypeReference a, TypeReference b)
Returns whether two type references refer to the same type. Note that a parameterized type will not match its corresponding raw type (but a generic definition will match its raw type).- Parameters:
a
- The first type reference.b
- The second type reference.- Returns:
true
if two type references refer to the same type; otherwise,false
.
-
areEquivalent
public static boolean areEquivalent(TypeReference a, TypeReference b, boolean strict)
Returns whether two type references refer to the same type.- Parameters:
a
- The first type reference.b
- The second type reference.strict
- Iftrue
, a parameterized type will not match its corresponding raw type (but a generic definition will match its raw type).- Returns:
true
if two type references refer to the same type; otherwise,false
.
-
areParametersEquivalent
static boolean areParametersEquivalent(java.util.List<ParameterDefinition> a, java.util.List<ParameterDefinition> b)
-
areEquivalent
static <T extends TypeReference> boolean areEquivalent(java.util.List<T> a, java.util.List<T> b)
-
areEquivalent
private static boolean areEquivalent(IGenericInstance a, IGenericInstance b)
-
areEquivalent
private static boolean areEquivalent(GenericParameter a, GenericParameter b)
-
createLimitedResolver
public static IMetadataResolver createLimitedResolver()
-
-