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) + "..<"
033: + InvokerHelper.inspect(at);
034: }
035:
036: public String toString() {
037: if (null == at)
038: return "null..<null";
039: return at.toString() + "..<" + at.toString();
040: }
041:
042: public int size() {
043: return 0;
044: }
045:
046: public void clear() {
047: }
048:
049: public boolean isEmpty() {
050: return true;
051: }
052:
053: public Object[] toArray() {
054: return new Object[0];
055: }
056:
057: public Object get(int index) {
058: return null;
059: }
060:
061: public Object remove(int index) {
062: return null;
063: }
064:
065: /**
066: * @throws UnsupportedOperationException
067: */
068: public void add(int index, Object element) {
069: throw new UnsupportedOperationException(
070: "cannot add to Empty Ranges");
071: }
072:
073: public int indexOf(Object o) {
074: return -1;
075: }
076:
077: public int lastIndexOf(Object o) {
078: return -1;
079: }
080:
081: /**
082: * @throws UnsupportedOperationException
083: */
084: public boolean add(Object o) {
085: throw new UnsupportedOperationException(
086: "cannot add to Empty Ranges");
087: }
088:
089: public boolean contains(Object o) {
090: return false;
091: }
092:
093: public boolean remove(Object o) {
094: return false;
095: }
096:
097: /**
098: * @throws UnsupportedOperationException
099: */
100: public boolean addAll(int index, Collection c) {
101: throw new UnsupportedOperationException(
102: "cannot add to Empty Ranges");
103: }
104:
105: /**
106: * @throws UnsupportedOperationException
107: */
108: public boolean addAll(Collection c) {
109: throw new UnsupportedOperationException(
110: "cannot add to Empty Ranges");
111: }
112:
113: public boolean containsAll(Collection c) {
114: return false;
115: }
116:
117: public boolean removeAll(Collection c) {
118: return false;
119: }
120:
121: public boolean retainAll(Collection c) {
122: return false;
123: }
124:
125: public Iterator iterator() {
126: return EMPTY_LIST.iterator();
127: }
128:
129: public List subList(int fromIndex, int toIndex) {
130: return EMPTY_LIST.subList(fromIndex, toIndex);
131: }
132:
133: public ListIterator listIterator() {
134: return EMPTY_LIST.listIterator();
135: }
136:
137: public ListIterator listIterator(int index) {
138: return EMPTY_LIST.listIterator(index);
139: }
140:
141: /**
142: * @throws UnsupportedOperationException
143: */
144: public Object set(int index, Object element) {
145: throw new UnsupportedOperationException(
146: "cannot set in Empty Ranges");
147: }
148:
149: public Object[] toArray(Object a[]) {
150: return new Object[0];
151: }
152:
153: public void step(int step, Closure closure) {
154: }
155:
156: public List step(int step) {
157: return EMPTY_LIST;
158: }
159: }
|