All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.duelengine.duel.codedom.CodeIterationStatement Maven / Gradle / Ivy

package org.duelengine.duel.codedom;

/**
 * Represents a for loop
 */
public class CodeIterationStatement extends CodeStatement {

	private CodeStatement initStatement;
	private CodeExpression testExpression;
	private CodeStatement incrementStatement;
	private final CodeStatementCollection statements;

	public CodeIterationStatement() {
		this(null, null, null);
	}

	public CodeIterationStatement(CodeStatement initStatement, CodeExpression testExpression, CodeStatement incrementStatement, CodeStatement... statements) {
		this.initStatement = initStatement;
		this.testExpression = testExpression;
		this.incrementStatement = incrementStatement;
		this.statements = new CodeStatementCollection(this);
		if (statements != null) {
			this.statements.addAll(statements);
		}
	}

	public CodeStatement getInitStatement() {
		return initStatement;
	}

	public void setInitStatement(CodeStatement value) {
		initStatement = value;
	}

	public CodeExpression getTestExpression() {
		return testExpression;
	}

	public void setTestExpression(CodeExpression value) {
		testExpression = value;
	}

	public CodeStatement getIncrementStatement() {
		return incrementStatement;
	}

	public void setIncrementStatement(CodeStatement value) {
		incrementStatement = value;
	}

	public CodeStatementCollection getStatements() {
		return statements;
	}

	@Override
	public void visit(CodeVisitor visitor) {
		if (visitor.visit(this)) {
			if (initStatement != null) {
				initStatement.visit(visitor);
			}
			if (testExpression != null) {
				testExpression.visit(visitor);
			}
			if (incrementStatement != null) {
				incrementStatement.visit(visitor);
			}
			for (CodeStatement statement : statements) {
				if (statement != null) {
					statement.visit(visitor);
				}
			}
		}
	}

	@Override
	public boolean equals(Object arg) {
		if (!(arg instanceof CodeIterationStatement)) {
			// includes null
			return false;
		}

		CodeIterationStatement that = (CodeIterationStatement)arg;
		if (this.initStatement == null ? that.initStatement != null : !this.initStatement.equals(that.initStatement)) {
			return false;
		}
		if (this.testExpression == null ? that.testExpression != null : !this.testExpression.equals(that.testExpression)) {
			return false;
		}
		if (this.incrementStatement == null ? that.incrementStatement != null : !this.incrementStatement.equals(that.incrementStatement)) {
			return false;
		}
		if (!this.statements.equals(that.statements)) {
			return false;
		}
		return true;
	}

	@Override
	public int hashCode() {
		final int HASH_PRIME = 1000003;

		int hash = statements.hashCode();
		if (initStatement != null) {
			hash = hash * HASH_PRIME + initStatement.hashCode();
		}
		if (testExpression != null) {
			hash = hash * HASH_PRIME + testExpression.hashCode();
		}
		if (incrementStatement != null) {
			hash = hash * HASH_PRIME + incrementStatement.hashCode();
		}
		return hash;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy