1 package jdk.internal.nicl.types; 2 3 public class Array implements Type { 4 final Type elementType; 5 final int occurrence; 6 7 /** 8 * Array type. 9 * 10 * @param elementType The element type 11 * @param occurrence Number of elements. Negative number indicates incomplete array. 12 */ 13 public Array(Type elementType, int occurrence) { 14 this.elementType = elementType; 15 this.occurrence = occurrence; 16 } 17 18 public int getOccurrence() { 19 return occurrence; 20 } 21 22 public Type getElementType() { 23 return elementType; 24 } 25 26 @Override 27 public long getSize() { 28 if (occurrence < 0) { 29 return occurrence; 30 } 31 32 return occurrence * elementType.getSize(); 33 } 34 35 public int hashCode() { 36 return occurrence * 31 + elementType.hashCode(); 37 } 38 39 @Override 40 public boolean equals(Object o) { 41 if (!(o instanceof jdk.internal.nicl.types.Array)) { 42 return false; 43 } 44 jdk.internal.nicl.types.Array other = (jdk.internal.nicl.types.Array) o; 45 return (occurrence == other.occurrence && 46 elementType.equals(other.elementType)); 47 } 48 49 @Override 50 public String toString() { 51 return "" + occurrence + elementType.toString(); 52 } 53 }