From 221b77a28e7b646029d9e86dd73aeb15496f6eb3 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Sun, 31 Jul 2011 14:41:39 -0700 Subject: [PATCH] Made ObjectTable Iterable. --- .../cdt/core/parser/util/ObjectTable.java | 35 +++++++++++++++++-- .../core/dom/parser/cpp/ClassTypeHelper.java | 2 +- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java index fcd6e2e04d6..ba5e8d456d0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java @@ -6,16 +6,19 @@ * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Andrew Niefer (IBM Corporation) - Initial API and implementation + * Andrew Niefer (IBM Corporation) - Initial API and implementation + * Sergey Prigogin (Google) *******************************************************************************/ package org.eclipse.cdt.core.parser.util; import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.NoSuchElementException; -public abstract class ObjectTable extends HashTable { +public abstract class ObjectTable extends HashTable implements Iterable { protected T[] keyTable; @SuppressWarnings("unchecked") @@ -37,8 +40,8 @@ public abstract class ObjectTable extends HashTable { } public List toList() { - List list = new ArrayList(size()); int size = size(); + List list = new ArrayList(size); for (int i = 0; i < size; i++) { list.add(keyAt(i)); } @@ -160,4 +163,30 @@ public abstract class ObjectTable extends HashTable { } return true; } + + /** + * @since 5.4 + */ + public Iterator iterator() { + return new Iterator() { + int nextIndex; + + public boolean hasNext() { + return nextIndex < size(); + } + + public T next() { + T element = keyAt(nextIndex); + if (element == null) { + throw new NoSuchElementException(); + } + nextIndex++; + return element; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java index 959ae708b81..470ab6ec631 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/ClassTypeHelper.java @@ -870,7 +870,7 @@ public class ClassTypeHelper { } // Remove overridden methods (even if they are pure virtual) - for (ICPPMethod declaredMethod : getOwnMethods(classType).toList()) { + for (ICPPMethod declaredMethod : getOwnMethods(classType)) { Set methodsSet = pureVirtualMethods.get(getMethodNameForOverrideKey(declaredMethod)); if (methodsSet != null) { for (Iterator methodIt = methodsSet.iterator(); methodIt.hasNext();) {