/*******************************************************************************
* Copyright (c) 2010-2013, Embraer S.A., Budapest University of Technology and Economics
* 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:
* Abel Hegedus, Akos Horvath - initial API and implementation
*******************************************************************************/
/**
*/
package hu.bme.mit.massif.simulink;
import org.eclipse.emf.common.util.EList;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Block</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* This EClass represents the basic building block of Simulink systems. Each block has properties, ports and
* can refer to a source block that was used as the template from a library to create the element.
*
* The properties are not a map, so the block may have multiple properties with the same name, or even same name-value pair.
*
* The different type of ports are accessible through computed filtered lists.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link hu.bme.mit.massif.simulink.Block#getProperties <em>Properties</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getPorts <em>Ports</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getTrigger <em>Trigger</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getEnabler <em>Enabler</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getInports <em>Inports</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getOutports <em>Outports</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getParent <em>Parent</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getSourceBlock <em>Source Block</em>}</li>
* <li>{@link hu.bme.mit.massif.simulink.Block#getSourceBlockRef <em>Source Block Ref</em>}</li>
* </ul>
* </p>
*
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock()
* @model
* @generated
*/
public interface Block extends SimulinkElement {
/**
* Returns the value of the '<em><b>Properties</b></em>' containment reference list.
* The list contents are of type {@link hu.bme.mit.massif.simulink.Property}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Properties</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>Properties</em>' containment reference list.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Properties()
* @model containment="true"
* @generated
*/
EList<Property> getProperties();
/**
* Returns the value of the '<em><b>Ports</b></em>' containment reference list.
* The list contents are of type {@link hu.bme.mit.massif.simulink.Port}.
* It is bidirectional and its opposite is '{@link hu.bme.mit.massif.simulink.Port#getContainer <em>Container</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Ports</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>Ports</em>' containment reference list.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Ports()
* @see hu.bme.mit.massif.simulink.Port#getContainer
* @model opposite="container" containment="true"
* @generated
*/
EList<Port> getPorts();
/**
* Returns the value of the '<em><b>Trigger</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The values are computed by filtering Trigger ports from the values of the ports feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Trigger</em>' reference.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Trigger()
* @model transient="true" changeable="false" volatile="true" derived="true"
* annotation="org.eclipse.incquery.querybasedfeature patternFQN='hu.bme.mit.massif.models.simulink.derived.trigger'"
* @generated
*/
Trigger getTrigger();
/**
* Returns the value of the '<em><b>Enabler</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The values are computed by filtering Enable ports from the values of the ports feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Enabler</em>' reference.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Enabler()
* @model transient="true" changeable="false" volatile="true" derived="true"
* annotation="org.eclipse.incquery.querybasedfeature patternFQN='hu.bme.mit.massif.models.simulink.derived.enabler'"
* @generated
*/
Enable getEnabler();
/**
* Returns the value of the '<em><b>Inports</b></em>' reference list.
* The list contents are of type {@link hu.bme.mit.massif.simulink.InPort}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The values are computed by filtering Inports from the values of the ports feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Inports</em>' reference list.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Inports()
* @model transient="true" changeable="false" volatile="true" derived="true"
* annotation="org.eclipse.incquery.querybasedfeature patternFQN='hu.bme.mit.massif.models.simulink.derived.inports'"
* @generated
*/
EList<InPort> getInports();
/**
* Returns the value of the '<em><b>Outports</b></em>' reference list.
* The list contents are of type {@link hu.bme.mit.massif.simulink.OutPort}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The values are computed by filtering Outports from the values of the ports feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Outports</em>' reference list.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Outports()
* @model transient="true" changeable="false" volatile="true" derived="true"
* annotation="org.eclipse.incquery.querybasedfeature patternFQN='hu.bme.mit.massif.models.simulink.derived.outports'"
* @generated
*/
EList<OutPort> getOutports();
/**
* Returns the value of the '<em><b>Parent</b></em>' container reference.
* It is bidirectional and its opposite is '{@link hu.bme.mit.massif.simulink.SubSystem#getSubBlocks <em>Sub Blocks</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Parent</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>Parent</em>' container reference.
* @see #setParent(SubSystem)
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_Parent()
* @see hu.bme.mit.massif.simulink.SubSystem#getSubBlocks
* @model opposite="subBlocks" transient="false"
* @generated
*/
SubSystem getParent();
/**
* Sets the value of the '{@link hu.bme.mit.massif.simulink.Block#getParent <em>Parent</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Parent</em>' container reference.
* @see #getParent()
* @generated
*/
void setParent(SubSystem value);
/**
* Returns the value of the '<em><b>Source Block</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The value of the reference is computed by finding the element with the same name and qualifier as stored in the sourceBlockRef.
*
* b{Validation}
* * WARN: Cannot find block specified by source block reference.
* <!-- end-model-doc -->
* @return the value of the '<em>Source Block</em>' reference.
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_SourceBlock()
* @model transient="true" changeable="false" volatile="true" derived="true"
* annotation="org.eclipse.incquery.querybasedfeature patternFQN='hu.bme.mit.massif.models.simulink.derived.sourceBlock'"
* @generated
*/
Block getSourceBlock();
/**
* Returns the value of the '<em><b>Source Block Ref</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Source Block Ref</em>' containment reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Source Block Ref</em>' containment reference.
* @see #setSourceBlockRef(LibraryLinkReference)
* @see hu.bme.mit.massif.simulink.SimulinkPackage#getBlock_SourceBlockRef()
* @model containment="true"
* @generated
*/
LibraryLinkReference getSourceBlockRef();
/**
* Sets the value of the '{@link hu.bme.mit.massif.simulink.Block#getSourceBlockRef <em>Source Block Ref</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Source Block Ref</em>' containment reference.
* @see #getSourceBlockRef()
* @generated
*/
void setSourceBlockRef(LibraryLinkReference value);
} // Block