ASTArrayType.java

package edu.udel.cis.vsl.tass.front.minimp.ast.type;

import edu.udel.cis.vsl.tass.front.minimp.ast.expression.ASTExpressionIF;

public class ASTArrayType extends ASTType {
  private ASTTypeIF baseType;
  private ASTExpressionIF length;
  private int numDimensions;
  
  public ASTArrayType(ASTTypeIF type, ASTExpressionIF length) {
    baseType = type;
    this.length = length;
    this.hashCode = baseType.hashCode() + "array".hashCode();
    if (type instanceof ASTArrayType) {
      this.numDimensions = ((ASTArrayType) type).numDimensions + 1;
    }
    else {
      this.numDimensions = 1;
    }
  }

  public ASTArrayType(ASTTypeIF baseType) {
    this(baseType, null);
  }

  public ASTTypeIF getBaseType() {
    return baseType;
  }

  public boolean hasLengthInfo() {
    return this.length != null;
  }

  public ASTExpressionIF getLength() {
    return this.length;
  }

  public int numDimensions() {
    return this.numDimensions;
  }
  
  public String toString() {
    return baseType.toString() + "[]";
  }
  
  // todo: equals?
  
}