1 11 package org.eclipse.jdt.internal.corext.refactoring.typeconstraints2; 12 13 import java.util.ArrayList ; 14 import java.util.Arrays ; 15 import java.util.LinkedHashSet ; 16 import java.util.List ; 17 18 public class TypeEquivalenceSet { 19 20 private ConstraintVariable2[] fVariables; 21 private ITypeSet fTypeEstimate; 22 23 24 public TypeEquivalenceSet(ConstraintVariable2 first, ConstraintVariable2 second) { 25 fVariables= new ConstraintVariable2[] {first, second }; 26 } 27 28 public TypeEquivalenceSet(ConstraintVariable2 variable) { 29 fVariables= new ConstraintVariable2[] {variable}; 30 } 31 32 public void add(ConstraintVariable2 variable) { 33 for (int i= 0; i < fVariables.length; i++) 34 if (fVariables[i] == variable) 35 return; 36 37 int length= fVariables.length; 38 ConstraintVariable2[] newElements= new ConstraintVariable2[length + 1]; 39 System.arraycopy(fVariables, 0, newElements, 0, length); 40 newElements[length]= variable; 41 fVariables= newElements; 42 } 43 44 public ConstraintVariable2[] getContributingVariables() { 45 return fVariables; 46 } 47 48 public void addAll(ConstraintVariable2[] variables) { 49 if (fVariables.length * variables.length > 100) { 50 LinkedHashSet result= new LinkedHashSet (fVariables.length + variables.length); 51 result.addAll(Arrays.asList(fVariables)); 52 result.addAll(Arrays.asList(variables)); 53 fVariables= (ConstraintVariable2[]) result.toArray(new ConstraintVariable2[result.size()]); 54 55 } else { 56 List elements= Arrays.asList(fVariables); 57 ArrayList result= new ArrayList (fVariables.length + variables.length); 58 result.addAll(elements); 59 for (int i= 0; i < variables.length; i++) { 60 ConstraintVariable2 right= variables[i]; 61 if (! result.contains(right)) 62 result.add(right); 63 } 64 fVariables= (ConstraintVariable2[]) result.toArray(new ConstraintVariable2[result.size()]); 65 } 66 67 } 68 69 public void setTypeEstimate(ITypeSet estimate) { 70 fTypeEstimate= estimate; 71 } 72 73 public ITypeSet getTypeEstimate() { 74 return fTypeEstimate; 75 } 76 77 public String toString() { 78 StringBuffer result= new StringBuffer (); 79 if (fVariables.length > 0) 80 result.append(fVariables[0].toString()); 81 for (int i= 1; i < fVariables.length; i++) { 82 result.append(" =^= \n"); result.append(fVariables[i].toString()); 84 } 85 return result.toString(); 86 } 87 } 88 | Popular Tags |