001: /*******************************************************************************
002: * Copyright (c) 2000, 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * Robert M. Fuhrer (rfuhrer@watson.ibm.com), IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets;
011:
012: import java.util.Iterator;
013:
014: import org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType;
015:
016: public class TypeSetUnion extends TypeSet {
017: private TypeSet fLHS;
018: private TypeSet fRHS;
019:
020: public TypeSetUnion(TypeSet lhs, TypeSet rhs) {
021: super (lhs.getTypeSetEnvironment());
022: fLHS = lhs;
023: fRHS = rhs;
024: }
025:
026: /* (non-Javadoc)
027: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#isUniverse()
028: */
029: public boolean isUniverse() {
030: if (fLHS.isUniverse() || fRHS.isUniverse())
031: return true;
032: if (fLHS.isSingleton() && fRHS.isSingleton())
033: return false;
034: throw new IllegalStateException("unimplemented"); //$NON-NLS-1$
035: }
036:
037: /* (non-Javadoc)
038: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#makeClone()
039: */
040: public TypeSet makeClone() {
041: return new TypeSetUnion(fLHS.makeClone(), fRHS.makeClone());
042: }
043:
044: /* (non-Javadoc)
045: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#isEmpty()
046: */
047: public boolean isEmpty() {
048: return fLHS.isEmpty() && fRHS.isEmpty();
049: }
050:
051: /* (non-Javadoc)
052: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#contains(TType)
053: */
054: public boolean contains(TType t) {
055: return fLHS.contains(t) || fRHS.contains(t);
056: }
057:
058: /* (non-Javadoc)
059: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#containsAll(org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet)
060: */
061: public boolean containsAll(TypeSet s) {
062: return fLHS.containsAll(s) || fRHS.containsAll(s);
063: }
064:
065: /* (non-Javadoc)
066: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#anyMember()
067: */
068: public TType anyMember() {
069: return fLHS.anyMember();
070: }
071:
072: /* (non-Javadoc)
073: * @see java.lang.Object#equals(java.lang.Object)
074: */
075: public boolean equals(Object o) {
076: if (o instanceof TypeSetUnion) {
077: TypeSetUnion other = (TypeSetUnion) o;
078: return other.fLHS.equals(fLHS) && other.fRHS.equals(fRHS);
079: } else
080: return false;
081: }
082:
083: /* (non-Javadoc)
084: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#upperBound()
085: */
086: public TypeSet upperBound() {
087: throw new IllegalStateException("unimplemented"); //$NON-NLS-1$
088: }
089:
090: /* (non-Javadoc)
091: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#lowerBound()
092: */
093: public TypeSet lowerBound() {
094: throw new IllegalStateException("unimplemented"); //$NON-NLS-1$
095: }
096:
097: /* (non-Javadoc)
098: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#iterator()
099: */
100: public Iterator iterator() {
101: throw new IllegalStateException("unimplemented"); //$NON-NLS-1$
102: }
103:
104: /* (non-Javadoc)
105: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#isSingleton()
106: */
107: public boolean isSingleton() {
108: return fLHS.isSingleton() && fRHS.isSingleton()
109: && fLHS.anyMember().equals(fRHS.anyMember());
110: }
111:
112: /* (non-Javadoc)
113: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#hasUniqueLowerBound()
114: */
115: public boolean hasUniqueLowerBound() {
116: return false;
117: }
118:
119: /* (non-Javadoc)
120: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#hasUniqueUpperBound()
121: */
122: public boolean hasUniqueUpperBound() {
123: return false;
124: }
125:
126: /* (non-Javadoc)
127: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#uniqueLowerBound()
128: */
129: public TType uniqueLowerBound() {
130: return null;
131: }
132:
133: /* (non-Javadoc)
134: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#uniqueUpperBound()
135: */
136: public TType uniqueUpperBound() {
137: return null;
138: }
139:
140: /* (non-Javadoc)
141: * @see org.eclipse.jdt.internal.corext.refactoring.typeconstraints.typesets.TypeSet#enumerate()
142: */
143: public EnumeratedTypeSet enumerate() {
144: EnumeratedTypeSet result = fLHS.enumerate();
145:
146: result.addAll(fRHS.enumerate());
147: return result;
148: }
149:
150: public String toString() {
151: return "<" + fID + ": union(" + fLHS + "," + fRHS + ")>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
152: }
153: }
|