|
|
@@ -0,0 +1,43 @@ |
|
|
|
/* ******************************************************************* |
|
|
|
* Copyright (c) 2009 Contributors |
|
|
|
* All rights reserved. |
|
|
|
* This program and the accompanying materials are made available |
|
|
|
* under the terms of the Eclipse Public License v1.0 |
|
|
|
* which accompanies this distribution and is available at |
|
|
|
* http://www.eclipse.org/legal/epl-v10.html |
|
|
|
* |
|
|
|
* Contributors: |
|
|
|
* Andy Clement initial implementation |
|
|
|
* ******************************************************************/ |
|
|
|
package org.aspectj.weaver; |
|
|
|
|
|
|
|
/** |
|
|
|
* Carries an array of unresolved types - will resolve them on demand. Can be used where currently the entire array gets resolved |
|
|
|
* and a ResolvedType array is passed on. Depending on the situation there may not be a need to resolve all the entries so this can |
|
|
|
* perform better. Note: the array elements are resolved in place, so the caller should not be surprised if elements and resolved |
|
|
|
* after the type list has been used. |
|
|
|
* |
|
|
|
* @author Andy Clement |
|
|
|
*/ |
|
|
|
public class ResolvableTypeList { |
|
|
|
|
|
|
|
public int length; |
|
|
|
private World world; |
|
|
|
private UnresolvedType[] types; |
|
|
|
|
|
|
|
public ResolvableTypeList(World world, UnresolvedType[] unresolvedTypes) { |
|
|
|
length = unresolvedTypes.length; |
|
|
|
types = unresolvedTypes; |
|
|
|
this.world = world; |
|
|
|
} |
|
|
|
|
|
|
|
public ResolvedType getResolved(int nameIndex) { |
|
|
|
UnresolvedType ut = types[nameIndex]; |
|
|
|
if (!(ut instanceof ResolvedType)) { |
|
|
|
types[nameIndex] = world.resolve(ut); |
|
|
|
return (ResolvedType) types[nameIndex]; |
|
|
|
} else { |
|
|
|
return (ResolvedType) ut; |
|
|
|
} |
|
|
|
} |
|
|
|
} |