From 9e5f50aa9bcffc5b698cddb1f708b7efd8ae862e Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 10 Nov 2009 04:46:15 +0000 Subject: [PATCH] optimized way to carry a set of types around that you may or may not want to resolve --- .../aspectj/weaver/ResolvableTypeList.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java b/org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java new file mode 100644 index 000000000..34e17b44a --- /dev/null +++ b/org.aspectj.matcher/src/org/aspectj/weaver/ResolvableTypeList.java @@ -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; + } + } +} -- 2.39.5