@Override public ContextItem get(ContextKey name) { if (name == ContextKey.RECEIVER) { return type; } else if (name == ContextKey.PARAMETERS[0]) { if (type instanceof PointType) { IClass cls = ((PointType) type).getIClass(); return new FilteredPointerKey.SingleClassFilter(cls); } else { return null; } } else { return null; } }
@Override public ContextItem get(ContextKey name) { if (name == ContextKey.RECEIVER) { return type; } else if (name == ContextKey.PARAMETERS[0]) { if (type instanceof PointType) { IClass cls = ((PointType) type).getIClass(); return new FilteredPointerKey.SingleClassFilter(cls); } else { return null; } } else { return null; } }
/** * @param c a context * @return If this is an object-sensitive context that identifies a unique class for the receiver object, then return the unique * class. Else, return null. * @throws IllegalArgumentException if c is null */ public static IClass getConcreteClassFromContext(Context c) { if (c == null) { throw new IllegalArgumentException("c is null"); } ContextItem item = c.get(ContextKey.RECEIVER); if (item == null) { return null; } else { if (item instanceof PointType) { return ((PointType) item).getIClass(); } else if (item instanceof InstanceKey) { return ((InstanceKey) item).getConcreteType(); } else { Assertions.UNREACHABLE("Unexpected: " + item.getClass()); return null; } } }
/** * @param c a context * @return If this is an object-sensitive context that identifies a unique class for the receiver object, then return the unique * class. Else, return null. * @throws IllegalArgumentException if c is null */ public static IClass getConcreteClassFromContext(Context c) { if (c == null) { throw new IllegalArgumentException("c is null"); } ContextItem item = c.get(ContextKey.RECEIVER); if (item == null) { return null; } else { if (item instanceof PointType) { return ((PointType) item).getIClass(); } else if (item instanceof InstanceKey) { return ((InstanceKey) item).getConcreteType(); } else { Assertions.UNREACHABLE("Unexpected: " + item.getClass()); return null; } } }
@Override public ContextItem get(ContextKey name) { if (name == ContextKey.RECEIVER) { return type; } else if (name == ContextKey.NAME) { return new NameItem(); } else if (name == ContextKey.PARAMETERS[0]) { if (type instanceof PointType) { IClass cls = ((PointType) type).getIClass(); return new FilteredPointerKey.SingleClassFilter(cls); } else { return null; } } else if (name == ContextKey.PARAMETERS[1]) { return new FilteredPointerKey.SingleClassFilter(this.name.getConcreteType()); } else { return null; } }
@Override public ContextItem get(ContextKey name) { if (name == ContextKey.RECEIVER) { return type; } else if (name == ContextKey.NAME) { return new NameItem(); } else if (name == ContextKey.PARAMETERS[0]) { if (type instanceof PointType) { IClass cls = ((PointType) type).getIClass(); return new FilteredPointerKey.SingleClassFilter(cls); } else { return null; } } else if (name == ContextKey.PARAMETERS[1]) { return new FilteredPointerKey.SingleClassFilter(this.name.getConcreteType()); } else { return null; } }