/** * <copyright> * </copyright> * * $Id: AnonymousFunctionExpr.java,v 1.2 2011/03/05 21:37:37 auhl Exp $ */ package dataaccess.expressions.fp; import data.classes.FunctionSignatureImplementation; import dataaccess.expressions.Expression; /** * <!-- begin-user-doc --> * A representation of the model object '<em><b>Anonymous Function Expr</b></em>'. * <!-- end-user-doc --> * * <!-- begin-model-doc --> * The type of expression of this type is a FunctionSignatureTypeDefinition. The value of this expression can be invoked which results in an invocation of the assoicated block. * * The expression must own a FunctionSignatureTypeDefinition in the role ownedTypeDefinition that has a valid implementation for its FunctionSignature. * * Note that there can be other expressions that evaluate to a function, such as an access to a variable that has a FunctionSignatureTypeDefinition as its type. AnonymousFunctionExpr really is the constructor for a function with implementation. This expression may then, e.g., be bound to variables or passed as parameter or returned by a method or function. * <!-- end-model-doc --> * * * @see dataaccess.expressions.fp.FpPackage#getAnonymousFunctionExpr() * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL TypeMustBeSignatureTypeDefinitionWithImplementation='self.getType().oclIsKindOf(data::classes::FunctionSignatureTypeDefinition) and\r\n self.getType().oclAsType(data::classes::FunctionSignatureTypeDefinition).signature.oclAsType(data::classes::FunctionSignature).implementation->notEmpty()' HasToOwnSignatureTypeDefinition='self.ownedTypeDefinition->notEmpty()' SignatureMustBeFunctionSignature='self.ownedTypeDefinition.oclAsType(data::classes::FunctionSignatureTypeDefinition).signature.oclIsKindOf(data::classes::FunctionSignature)'" * annotation="http://www.eclipse.org/emf/2002/Ecore constraints='TypeMustBeSignatureTypeDefinitionWithImplementation HasToOwnSignatureTypeDefinition SignatureMustBeFunctionSignature'" * @generated */ public interface AnonymousFunctionExpr extends Expression { /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * <!-- begin-model-doc --> * Determines the Block implementing the function to which this expression evaluates by navigating to the FunctionSignatureTypeDefinition that tells this expression's type, and from there obtaining the signature's implementation. * <!-- end-model-doc --> * @model kind="operation" unique="false" required="true" ordered="false" * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL body='self.ownedTypeDefinition.oclAsType(data::classes::FunctionSignatureTypeDefinition).signature.oclAsType(data::classes::FunctionSignature).implementation'" * annotation="http://www.eclipse.org/emf/2002/Ecore constraints='body'" * @generated */ FunctionSignatureImplementation getImplementation(); } // AnonymousFunctionExpr