ASTReceiveStatement.java

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

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

public class ASTReceiveStatement extends ASTStatement {
  private ASTBufferExpressionIF recvBody;
  private ASTExpressionIF msgSource;
  private ASTExpressionIF recvTag;
  private ASTLhsExpressionIF size;
  private boolean isAnySrc;
  private boolean isAnyTag;

  public ASTReceiveStatement(ASTBufferExpressionIF data, ASTExpressionIF src,
      ASTExpressionIF tag) {
    recvBody = data;
    this.msgSource = src;
    recvTag = tag;
    if (src instanceof ASTWildcardExpression) {
      isAnySrc = true;
    }

    if (tag instanceof ASTWildcardExpression) {
      isAnyTag = false;
    }
    
    size = null;
  }
  
  public ASTReceiveStatement(ASTBufferExpressionIF data, ASTExpressionIF src,
	      ASTExpressionIF tag, ASTLhsExpressionIF size) {
	    recvBody = data;
	    this.msgSource = src;
	    recvTag = tag;
	    this.size = size;
	    if (src instanceof ASTWildcardExpression) {
	      isAnySrc = true;
	    }

	    if (tag instanceof ASTWildcardExpression) {
	      isAnyTag = false;
	    }
  }

  public ASTBufferExpressionIF getRecvBody() {
    return recvBody;
  }

  public ASTExpressionIF getRecvSource() {
    return this.msgSource;
  }

  public ASTExpressionIF getTag() {
    return recvTag;
  }
  
  public ASTExpressionIF getSize() {
	  return size;
  }

  public boolean isAnySource() {
    return isAnySrc;
  }

  public boolean isAnyTag() {
    return isAnyTag;
  }

  public String toString() {
    return "recv(" + this.recvBody.toString() + ", " + this.source.toString()
        + ", " + this.recvTag.toString() + ");";
  }
}