1 /* 2 * Copyright (c) 2003-2008 by Cosylab d. d. 3 * 4 * This file is part of Java-Common. 5 * 6 * Java-Common is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * Java-Common is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with Java-Common. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package com.cosylab.util; 21 22 import java.util.Enumeration; 23 import java.util.Iterator; 24 25 26 /** 27 * A simple implementation of both the <code>java.util.Enumeration</code> and 28 * <code>java.util.Iterator</code> that iterates over the array of type 29 * <code>Object[]</code>. Removal of elements is not permitted. The iteration 30 * is not thread safe. 31 * 32 * @author <a href="mailto:gasper.tkacik@cosylab.com">Gasper Tkacik</a> 33 * @version $id$ 34 */ 35 public class ArrayEnumeration implements Enumeration, Iterator 36 { 37 /** The array storing the data over which this iterator will iterate. */ 38 protected Object[] array = null; 39 private int ix = 0; 40 41 /** 42 * Creates a new instance of array enumeration, given the array over which 43 * this instance will iterate. 44 * 45 * @param array array of iteration, non-<code>null</code> 46 */ 47 public ArrayEnumeration(Object[] array) 48 { 49 assert (array != null); 50 this.array = array; 51 } 52 53 /** 54 * Returns <code>true</code> iff calling <code>nextElement()</code> will 55 * return a valid value. 56 * 57 * @return <code>true</code> if there are more elements to be iterated over 58 * in the array 59 */ 60 public boolean hasMoreElements() 61 { 62 return ix != array.length; 63 } 64 65 /** 66 * Returns the next element in the array. If this method is called after 67 * the end of the array has been reached (when 68 * <code>hasMoreElements()</code> returns <code>false</code>, an array 69 * index out of bounds exception will be thrown. 70 * 71 * @return the next object in the array, can be <code>null</code> 72 */ 73 public Object nextElement() 74 { 75 Object retVal = array[ix]; 76 ix++; 77 78 return retVal; 79 } 80 81 /** 82 * A shorthand for <code>hasMoreElements()</code> 83 * 84 * @return <code>true</code> iff this array has more elements to be 85 * iterated over 86 */ 87 public boolean hasNext() 88 { 89 return hasMoreElements(); 90 } 91 92 /** 93 * A shorthand for <code>nextElement()</code>. 94 * 95 * @return the next element in the array 96 */ 97 public Object next() 98 { 99 return nextElement(); 100 } 101 102 /** 103 * Not implemented. 104 * 105 * @throws UnsupportedOperationException always 106 */ 107 public void remove() 108 { 109 throw new UnsupportedOperationException(); 110 } 111 } 112 113 /* __oOo__ */