CommonStatementNode.java

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

import edu.udel.cis.vsl.abc.ast.IF.DifferenceObject;
import edu.udel.cis.vsl.abc.ast.node.IF.ASTNode;
import edu.udel.cis.vsl.abc.ast.node.IF.statement.StatementNode;
import edu.udel.cis.vsl.abc.ast.node.common.CommonASTNode;
import edu.udel.cis.vsl.abc.token.IF.Source;

public abstract class CommonStatementNode extends CommonASTNode
		implements
			StatementNode {

	public CommonStatementNode(Source source) {
		super(source);
	}

	public CommonStatementNode(Source source, ASTNode child) {
		super(source, child);
	}

	public CommonStatementNode(Source source, ASTNode child0, ASTNode child1) {
		super(source, child0, child1);
	}

	public CommonStatementNode(Source source, ASTNode child0, ASTNode child1,
			ASTNode child2) {
		super(source, child0, child1, child2);
	}

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

	@Override
	public NodeKind nodeKind() {
		return NodeKind.STATEMENT;
	}

	@Override
	protected DifferenceObject diffWork(ASTNode that) {
		if (that instanceof StatementNode)
			if (this.statementKind() == ((StatementNode) that).statementKind())
				return null;
		return new DifferenceObject(this, that);
	}
}