Browse Source

optimized way to carry a set of types around that you may or may not want to resolve

tags/V1_6_7
aclement 14 years ago
parent
commit
9e5f50aa9b
1 changed files with 43 additions and 0 deletions
  1. 43
    0
      org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java

+ 43
- 0
org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java View File

@@ -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;
}
}
}

Loading…
Cancel
Save