001 package groovy.lang; 002 003 import org.codehaus.groovy.runtime.InvokerHelper; 004 005 import java.util.*; 006 007 /** 008 * Constructing Ranges like 0..<0 009 * @author Dierk Koenig 010 */ 011 public class EmptyRange implements Range { 012 protected Comparable at = null; 013 protected final List EMPTY_LIST = new ArrayList(); 014 015 public EmptyRange(Comparable at) { 016 this.at = at; 017 } 018 019 public Comparable getFrom() { 020 return at; 021 } 022 023 public Comparable getTo() { 024 return at; 025 } 026 027 public boolean isReverse() { 028 return false; 029 } 030 031 public String inspect() { 032 return InvokerHelper.inspect(at)+"..<"+InvokerHelper.inspect(at); 033 } 034 035 public String toString() { 036 if (null == at) return "null..<null"; 037 return at.toString()+"..<"+at.toString(); 038 } 039 040 public int size() { 041 return 0; 042 } 043 044 public void clear() { 045 } 046 047 public boolean isEmpty() { 048 return true; 049 } 050 051 public Object[] toArray() { 052 return new Object[0]; 053 } 054 055 public Object get(int index) { 056 return null; 057 } 058 059 public Object remove(int index) { 060 return null; 061 } 062 063 /** 064 * @throws UnsupportedOperationException 065 */ 066 public void add(int index, Object element) { 067 throw new UnsupportedOperationException("cannot add to Empty Ranges"); 068 } 069 070 public int indexOf(Object o) { 071 return -1; 072 } 073 074 public int lastIndexOf(Object o) { 075 return -1; 076 } 077 078 /** 079 * @throws UnsupportedOperationException 080 */ 081 public boolean add(Object o) { 082 throw new UnsupportedOperationException("cannot add to Empty Ranges"); 083 } 084 085 public boolean contains(Object o) { 086 return false; 087 } 088 089 public boolean remove(Object o) { 090 return false; 091 } 092 093 /** 094 * @throws UnsupportedOperationException 095 */ 096 public boolean addAll(int index, Collection c) { 097 throw new UnsupportedOperationException("cannot add to Empty Ranges"); 098 } 099 100 /** 101 * @throws UnsupportedOperationException 102 */ 103 public boolean addAll(Collection c) { 104 throw new UnsupportedOperationException("cannot add to Empty Ranges"); 105 } 106 107 public boolean containsAll(Collection c) { 108 return false; 109 } 110 111 public boolean removeAll(Collection c) { 112 return false; 113 } 114 115 public boolean retainAll(Collection c) { 116 return false; 117 } 118 119 public Iterator iterator() { 120 return EMPTY_LIST.iterator(); 121 } 122 123 public List subList(int fromIndex, int toIndex) { 124 return EMPTY_LIST.subList(fromIndex, toIndex); 125 } 126 127 public ListIterator listIterator() { 128 return EMPTY_LIST.listIterator(); 129 } 130 131 public ListIterator listIterator(int index) { 132 return EMPTY_LIST.listIterator(index); 133 } 134 135 /** 136 * @throws UnsupportedOperationException 137 */ 138 public Object set(int index, Object element) { 139 throw new UnsupportedOperationException("cannot set in Empty Ranges"); 140 } 141 142 public Object[] toArray(Object a[]) { 143 return new Object[0]; 144 } 145 146 public void step(int step, Closure closure) { 147 } 148 149 public List step(int step) { 150 return EMPTY_LIST; 151 } 152 }