blob: 34f20b80879d1cabd0dcdc7bc0689afad60fd26a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.sse.core.internal.text;
import java.util.Enumeration;
import java.util.NoSuchElementException;
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
import org.eclipse.wst.sse.core.internal.util.Debug;
public class StructuredDocumentRegionEnumeration implements Enumeration {
private int count;
private IStructuredDocumentRegion head;
private IStructuredDocumentRegion oldHead;
/**
* StructuredDocumentRegionEnumeration constructor comment.
*/
public StructuredDocumentRegionEnumeration(IStructuredDocumentRegion newHead) {
super();
IStructuredDocumentRegion countNode = head = newHead;
while (countNode != null) {
count++;
countNode = countNode.getNext();
}
if (Debug.DEBUG > 5) {
System.out.println("N Nodes in StructuredDocumentRegionEnumeration Contructor: " + count); //$NON-NLS-1$
}
}
/**
* StructuredDocumentRegionEnumeration constructor comment.
*/
public StructuredDocumentRegionEnumeration(IStructuredDocumentRegion start, IStructuredDocumentRegion end) {
super();
IStructuredDocumentRegion countNode = head = start;
if ((start == null) || (end == null)) {
// error condition
count = 0;
return;
}
//If both nodes are non-null, we assume there is always at least one
// item
count = 1;
while (countNode != end) {
count++;
countNode = countNode.getNext();
}
if (org.eclipse.wst.sse.core.internal.util.Debug.DEBUG > 5) {
System.out.println("N Nodes in StructuredDocumentRegionEnumeration Contructor: " + count); //$NON-NLS-1$
}
}
/**
* hasMoreElements method comment.
*/
public synchronized boolean hasMoreElements() {
return count > 0;
}
/**
* nextElement method comment.
*/
public synchronized Object nextElement() {
if (count > 0) {
count--;
oldHead = head;
head = head.getNext();
return oldHead;
}
throw new NoSuchElementException("StructuredDocumentRegionEnumeration"); //$NON-NLS-1$
}
}