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 classMetadataResolver.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 protectedMetadataResolver()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private static booleanareEquivalent(GenericParameter a, GenericParameter b)private static booleanareEquivalent(IGenericInstance a, IGenericInstance b)static booleanareEquivalent(TypeReference a, TypeReference b)Returns whether two type references refer to the same type.static booleanareEquivalent(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 booleanareParametersEquivalent(java.util.List<ParameterDefinition> a, java.util.List<ParameterDefinition> b)static IMetadataResolvercreateLimitedResolver()GenericParameterfindTypeVariable(java.lang.String name)(package private) FieldDefinitiongetField(TypeDefinition declaringType, FieldReference reference)(package private) static FieldDefinitiongetField(java.util.List<FieldDefinition> candidates, FieldReference reference)(package private) MethodDefinitiongetMethod(TypeDefinition declaringType, MethodReference reference)(package private) static MethodDefinitiongetMethod(java.util.List<MethodDefinition> candidates, MethodReference reference)(package private) static TypeDefinitiongetNestedType(java.util.List<TypeDefinition> candidates, TypeReference reference)TypeReferencelookupType(java.lang.String descriptor)protected abstract TypeReferencelookupTypeCore(java.lang.String descriptor)voidpopFrame()voidpushFrame(IResolverFrame frame)FieldDefinitionresolve(FieldReference field)MethodDefinitionresolve(MethodReference method)TypeDefinitionresolve(TypeReference type)protected abstract TypeDefinitionresolveCore(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:
lookupTypein interfaceIMetadataResolver
-
findTypeVariable
public final GenericParameter findTypeVariable(java.lang.String name)
- Specified by:
findTypeVariablein interfaceIGenericContext
-
lookupTypeCore
protected abstract TypeReference lookupTypeCore(java.lang.String descriptor)
-
pushFrame
public void pushFrame(IResolverFrame frame)
- Specified by:
pushFramein interfaceIMetadataResolver
-
popFrame
public void popFrame()
- Specified by:
popFramein interfaceIMetadataResolver
-
resolve
public TypeDefinition resolve(TypeReference type)
- Specified by:
resolvein interfaceIMetadataResolver
-
resolveCore
protected abstract TypeDefinition resolveCore(TypeReference type)
-
resolve
public FieldDefinition resolve(FieldReference field)
- Specified by:
resolvein interfaceIMetadataResolver
-
resolve
public MethodDefinition resolve(MethodReference method)
- Specified by:
resolvein 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:
trueif 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:
trueif 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()
-
-