/*****************************************************************************
* Copyright (c) 2011 CEA LIST.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* CEA LIST - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.alf.syntax.statements;
import java.util.List;
public class ForStatement extends Statement{
// Synthesized Properties
public Block body ;
public List<LoopVariableDefinition> variableDefinition ;
// Derived Properties
public boolean isParallel ;
// Constraints
/*
* The loop variables are unassigned after a for statement. Other than the loop variables, if the assigned
* source for a name after the body of a for statement is the same as after the for variable definitions, then
* the assigned source for the name after the for statement is the same as after the for variable definitions.
* If a name is unassigned after the for variable definitions, then it is unassigned after the for statement
* (even if it is assigned in the body of the for statement). If, after the loop variable definitions, a name has
* an assigned source, and it has a different assigned source after the body of the for statement, then the
* assigned source after the for statement is the for statement itself.
*/
public void checkForStatementAssignmentsAfter() {
}
/*
* The assignments before a loop variable definition in a for statement are the same as before the for
* statement. The assignments before the body of the statement include all the assignments before the
* statement plus any new assignments from the loop variable definitions, except that, if the statement is
* parallel, the assigned sources of any names given in @parallel annotations are changed to be the for
* statement itself.
*/
public void checkForStatementAssignmentsBefore() {
}
/*
* The enclosing statement for all statements in the body of a for statement are the for statement.
*/
public void checkForStatementEnclosedStatements() {
}
/*
* A for statement is parallel if it has a @parallel annotation.
*/
public void checkForStatementIsParallelDerivation() {
}
/*
* The assigned sources for loop variables after the body of a for statement must be the for statement (the
* same as before the body).
*/
public void checkForStatementLoopVariables() {
}
/*
* A @parallel annotation of a for statement may include a list of names. Each such name must be already
* assigned after the loop variable definitions of the for statement, with a multiplicity of [0..*]. These
* names may only be used within the body of the for statement as the first argument to for the
* CollectionFunctions::add behavior.
*/
public void checkForStatementParallelAnnotationNames() {
}
/*
* If, after the loop variable definitions of a parallel for statement, a name has an assigned source, then it
* must have the same assigned source after the block of the for statement. Other than for names defined in
* the @parallel annotation of the for statement, the assigned source for such names is the same after the
* for statement as before it. Any names defined in the @parallel annotation have the for statement itself as
* their assigned source after the for statement. Other than names given in the @parallel annotation, if a
* name is unassigned after the loop variable definitions, then it is considered unassigned after the for
* statement, even if it is assigned in the block of the for statement.
*/
public void checkForStatementParallelAssignmentsAfter() {
}
/*
* The isFirst attribute of the first loop variable definition for a for statement is true while the isFirst
* attribute if false for any other definitions.
*/
public void checkForStatementVariableDefinitions() {
}
// Helper Operations
/*
* In addition to an @isolated annotation, a for statement may have a @parallel annotation.
*/
public boolean annotationAllowed (Annotation annotation) {
return false ;
}
}