1 package groovy.lang;
2
3 import org.codehaus.groovy.runtime.InvokerHelper;
4
5 import java.util.*;
6
7 /***
8 * Constructing Ranges like 0..<0
9 * @author Dierk Koenig
10 */
11 public class EmptyRange implements Range {
12 protected Comparable at = null;
13 protected final List EMPTY_LIST = new ArrayList();
14
15 public EmptyRange(Comparable at) {
16 this.at = at;
17 }
18
19 public Comparable getFrom() {
20 return at;
21 }
22
23 public Comparable getTo() {
24 return at;
25 }
26
27 public boolean isReverse() {
28 return false;
29 }
30
31 public String inspect() {
32 return InvokerHelper.inspect(at)+"..<"+InvokerHelper.inspect(at);
33 }
34
35 public String toString() {
36 if (null == at) return "null..<null";
37 return at.toString()+"..<"+at.toString();
38 }
39
40 public int size() {
41 return 0;
42 }
43
44 public void clear() {
45 }
46
47 public boolean isEmpty() {
48 return true;
49 }
50
51 public Object[] toArray() {
52 return new Object[0];
53 }
54
55 public Object get(int index) {
56 return null;
57 }
58
59 public Object remove(int index) {
60 return null;
61 }
62
63 /***
64 * @throws UnsupportedOperationException
65 */
66 public void add(int index, Object element) {
67 throw new UnsupportedOperationException("cannot add to Empty Ranges");
68 }
69
70 public int indexOf(Object o) {
71 return -1;
72 }
73
74 public int lastIndexOf(Object o) {
75 return -1;
76 }
77
78 /***
79 * @throws UnsupportedOperationException
80 */
81 public boolean add(Object o) {
82 throw new UnsupportedOperationException("cannot add to Empty Ranges");
83 }
84
85 public boolean contains(Object o) {
86 return false;
87 }
88
89 public boolean remove(Object o) {
90 return false;
91 }
92
93 /***
94 * @throws UnsupportedOperationException
95 */
96 public boolean addAll(int index, Collection c) {
97 throw new UnsupportedOperationException("cannot add to Empty Ranges");
98 }
99
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 }