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 }
--- EOF ---