CommonOmpEndNode.java

package edu.udel.cis.vsl.abc.ast.node.common.omp;

import java.io.PrintStream;

import edu.udel.cis.vsl.abc.ast.node.IF.omp.OmpEndNode;
import edu.udel.cis.vsl.abc.token.IF.Source;

public class CommonOmpEndNode extends CommonOmpNode implements OmpEndNode {

	private OmpEndType endType;

	public CommonOmpEndNode(Source source, OmpEndType ompEndType) {
		super(source);
		this.endType = ompEndType;
	}

	@Override
	public OmpNodeKind ompNodeKind() {
		return OmpNodeKind.DECLARATIVE;
	}

	@Override
	public CommonOmpEndNode copy() {
		return new CommonOmpEndNode(getSource(), this.endType);
	}

	@Override
	public OmpEndType ompEndType() {
		return this.endType;
	}

	@Override
	protected void printBody(PrintStream out) {
		switch (this.endType) {
			case PARALLEL :
				out.print("END PARALLEL");
				break;
			case SECTIONS :
				out.print("END SECTIONS");
				break;
			case DO :
				out.print("END DO");
				break;
			default :
		}
	}

	@Override
	public StatementKind statementKind() {
		return StatementKind.OMP;
	}

	@Override
	public BlockItemKind blockItemKind() {
		return BlockItemKind.OMP_DECLARATIVE;
	}

}