/***************************************************************************** * 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.expressions; import java.util.ArrayList; import java.util.List; import org.eclipse.papyrus.uml.alf.syntax.common.AssignedSource; import org.eclipse.papyrus.uml.alf.syntax.common.ElementReference; public abstract class InvocationExpression extends Expression { // Synthesized Properties /* * The tuple for the invocation expression. */ public Tuple tuple ; // Derived Properties public FeatureReference feature ; public boolean isAssociationEnd ; public boolean isBehavior ; public boolean isDestructor ; public boolean isImplicit ; public boolean isOperation ; public boolean isSignal ; public List<ElementReference> parameter ; public ElementReference referent ; // Constraints /* * The assignments before the target expression of the feature reference of an invocation expression (if * any) are the same as the assignments before the invocation expression. */ public void checkInvocationExpressionAssignmentsBefore() { } /* * An invocation expression is an association end read if its referent is an association end. */ public void checkInvocationExpressionIsAssociationEndDerivation() { } /* * An invocation expression is a behavior invocation if its referent is a behavior. */ public void checkInvocationExpressionIsBehaviorDerivation() { } /* * An invocation expression is a destructor call either implicitly or if it is an explicit operation call to a * destructor operation. */ public void checkInvocationExpressionIsDestructorDerivation() { } /* * An invocation expression is an implicit object destruction if it has a feature with the name "destroy" and * no explicit referents. */ public void checkInvocationExpressionIsImplicitDerivation() { } /* * An invocation expression is an operation call if its referent is an operation. */ public void checkInvocationExpressionIsOperationDerivation() { } /* * An invocation expression is a signal send if its referent is a signal. */ public void checkInvocationExpressionIsSignalDerivation() { } /* * The multiplicity lower bound of an invocation expression is determined by the return parameter (if any) * of the referent. */ public void checkInvocationExpressionLowerDerivation() { } /* * The parameters of an invocation expression are given by the result of the parameterElements helper * operation. */ public void checkInvocationExpressionParameterDerivation() { } /* * The type of an invocation expression is determined by the return parameter (if any) of the referent. */ public void checkInvocationExpressionTypeDerivation() { } /* * The multiplicity upper bound of an invocation expression is determined by the return parameter (if any) * of the referent. */ public void checkInvocationExpressionUpperDerivation() { } // Helper Operations /* * Returns references to the elements that act as the parameters of the referent. For a behavior or operation, * these are the owned parameters, in order. Otherwise (by default), they are actually any properties of the * referent (e.g., signal attributes), which are treated as if they were in parameters. (This is defined as a * helper operation, so that it can be overridden by subclasses of InvocationExpression, if necessary.) */ public List<ElementReference>parameterElements() { return new ArrayList<ElementReference>() ; } /* * The assignments after an invocation expression are the same as those after the tuple of the expression. */ public List<AssignedSource> updateAssignments ( ) { return new ArrayList<AssignedSource>() ; } }