/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.yakindu.base.types;
import org.eclipse.emf.common.util.EList;
import org.yakindu.base.base.NamedElement;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Parameter</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link org.yakindu.base.types.Parameter#getOwningOperation <em>Owning Operation</em>}</li>
* <li>{@link org.yakindu.base.types.Parameter#isVarArgs <em>Var Args</em>}</li>
* <li>{@link org.yakindu.base.types.Parameter#isOptional <em>Optional</em>}</li>
* <li>{@link org.yakindu.base.types.Parameter#getAnnotations <em>Annotations</em>}</li>
* </ul>
*
* @see org.yakindu.base.types.TypesPackage#getParameter()
* @model
* @generated
*/
public interface Parameter extends TypedElement, NamedElement, AnnotatableElement {
/**
* Returns the value of the '<em><b>Owning Operation</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.yakindu.base.types.Operation#getParameters <em>Parameters</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Owning Operation</em>' container reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Owning Operation</em>' container reference.
* @see #setOwningOperation(Operation)
* @see org.yakindu.base.types.TypesPackage#getParameter_OwningOperation()
* @see org.yakindu.base.types.Operation#getParameters
* @model opposite="parameters" transient="false"
* @generated
*/
Operation getOwningOperation();
/**
* Sets the value of the '{@link org.yakindu.base.types.Parameter#getOwningOperation <em>Owning Operation</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Owning Operation</em>' container reference.
* @see #getOwningOperation()
* @generated
*/
void setOwningOperation(Operation value);
/**
* Returns the value of the '<em><b>Var Args</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Var Args</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Var Args</em>' attribute.
* @see #setVarArgs(boolean)
* @see org.yakindu.base.types.TypesPackage#getParameter_VarArgs()
* @model default="false"
* @generated
*/
boolean isVarArgs();
/**
* Sets the value of the '{@link org.yakindu.base.types.Parameter#isVarArgs <em>Var Args</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Var Args</em>' attribute.
* @see #isVarArgs()
* @generated
*/
void setVarArgs(boolean value);
/**
* Returns the value of the '<em><b>Optional</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Optional</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Optional</em>' attribute.
* @see #setOptional(boolean)
* @see org.yakindu.base.types.TypesPackage#getParameter_Optional()
* @model default="false"
* @generated
*/
boolean isOptional();
/**
* Sets the value of the '{@link org.yakindu.base.types.Parameter#isOptional <em>Optional</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Optional</em>' attribute.
* @see #isOptional()
* @generated
*/
void setOptional(boolean value);
/**
* Returns the value of the '<em><b>Annotations</b></em>' containment reference list.
* The list contents are of type {@link org.yakindu.base.types.Annotation}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Annotations</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Annotations</em>' containment reference list.
* @see org.yakindu.base.types.TypesPackage#getParameter_Annotations()
* @model containment="true"
* @generated
*/
EList<Annotation> getAnnotations();
} // Parameter