/**
*/
package org.eclipse.etrice.core.room;
import org.eclipse.emf.common.util.EList;
import org.eclipse.etrice.core.common.base.Annotation;
import org.eclipse.etrice.core.common.base.Documentation;
import org.eclipse.etrice.core.fsm.fSM.AbstractInterfaceItem;
import org.eclipse.etrice.core.fsm.fSM.ModelComponent;
/**
*
* A representation of the model object 'Actor Class'.
*
*
*
*
Together with {@link ProtocolClass} and {@link DataClass} one of
* the main class types of the ROOM language.
*
*
* The actor class in ROOM has three compartments which aren't represented as separate model objects.
* To understand to which compartment an attribute or reference belongs to here is a list
*
* - Interface: everything which is visible from the outside from a model point of view
*
* - {@link #getInterfacePorts}: a list of all interface {@link Port}s
* - {@link ActorContainerClass#getServiceProvisionPoints()}: a list of all interface {@link SPP}s
*
* - Structure: all internal structural aspects of an actor class
*
* - {@link #getUserCode1}-3: user defined code with generator dependent meaning
* - {@link #getInternalPorts}: a list of all internal end {@link Port}s
* - {@link #getExternalPorts}: a list of all {@link ExternalPort}s (the interface ports that
* are end ports, not relay ports
* - {@link #getServiceImplementations}: a list of all {@link ServiceImplementation}s
* - {@link #getServiceAccessPoints}: a list of all {@link SAP}s used by this actor class
* - {@link #getAttributes}: a list of all actor class {@link Attribute}s
* - {@link #getActorRefs}: a list of all referenced actor classes (an {@link ActorRef}
* has the meaning of a composition)
* - {@link #getBindings}: a list of all port {@link Binding}s of this actor class
* - {@link #getConnections}: a list of all {@link LayerConnection}s
*
* - Behavior: the behavioral aspects of an actor class
*
* - {@link #getOperations}: a list of {@link Operation}s
* - {@link #getStateMachine}: the {@link StateGraph state machine} definition
*
*
*
*
*
*
*
* The following features are supported:
*
*
* - {@link org.eclipse.etrice.core.room.ActorClass#getInterfacePorts Interface Ports}
* - {@link org.eclipse.etrice.core.room.ActorClass#getStructureDocu Structure Docu}
* - {@link org.eclipse.etrice.core.room.ActorClass#getServiceImplementations Service Implementations}
* - {@link org.eclipse.etrice.core.room.ActorClass#getAttributes Attributes}
* - {@link org.eclipse.etrice.core.room.ActorClass#getServiceAccessPoints Service Access Points}
* - {@link org.eclipse.etrice.core.room.ActorClass#getInternalPorts Internal Ports}
* - {@link org.eclipse.etrice.core.room.ActorClass#getExternalPorts External Ports}
* - {@link org.eclipse.etrice.core.room.ActorClass#getBehaviorDocu Behavior Docu}
* - {@link org.eclipse.etrice.core.room.ActorClass#getBehaviorAnnotations Behavior Annotations}
* - {@link org.eclipse.etrice.core.room.ActorClass#getOperations Operations}
* - {@link org.eclipse.etrice.core.room.ActorClass#getStructors Structors}
*
*
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass()
* @model
* @generated
*/
public interface ActorClass extends ActorContainerClass, ModelComponent
{
/**
* Returns the value of the 'Interface Ports' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.Port}.
*
*
*
*
This is a list containing all ports of the actor interface.
*
*
* @return the value of the 'Interface Ports' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_InterfacePorts()
* @model containment="true"
* @generated
*/
EList getInterfacePorts();
/**
* Returns the value of the 'Structure Docu' containment reference.
*
*
*
*
This is an optional documentation of the actor structure.
*
*
* @return the value of the 'Structure Docu' containment reference.
* @see #setStructureDocu(Documentation)
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_StructureDocu()
* @model containment="true"
* @generated
*/
Documentation getStructureDocu();
/**
* Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getStructureDocu Structure Docu}' containment reference.
*
*
* @param value the new value of the 'Structure Docu' containment reference.
* @see #getStructureDocu()
* @generated
*/
void setStructureDocu(Documentation value);
/**
* Returns the value of the 'Service Implementations' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.ServiceImplementation}.
*
*
*
*
This is a list of all service implementations.
*
*
* @return the value of the 'Service Implementations' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_ServiceImplementations()
* @model containment="true"
* @generated
*/
EList getServiceImplementations();
/**
* Returns the value of the 'Attributes' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.Attribute}.
*
*
*
*
This is a list of all actor class private attributes.
*
*
* @return the value of the 'Attributes' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Attributes()
* @model containment="true"
* @generated
*/
EList getAttributes();
/**
* Returns the value of the 'Service Access Points' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.SAP}.
*
*
*
*
This is a list of all SAPs.
*
*
* @return the value of the 'Service Access Points' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_ServiceAccessPoints()
* @model containment="true"
* @generated
*/
EList getServiceAccessPoints();
/**
* Returns the value of the 'Internal Ports' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.Port}.
*
*
*
*
This is a list containing all ports of the actor structure (internal end ports).
*
*
* @return the value of the 'Internal Ports' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_InternalPorts()
* @model containment="true"
* @generated
*/
EList getInternalPorts();
/**
* Returns the value of the 'External Ports' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.ExternalPort}.
*
*
*
*
This is a list containing all ports of the actor interface that are end ports.
*
*
* @return the value of the 'External Ports' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_ExternalPorts()
* @model containment="true"
* @generated
*/
EList getExternalPorts();
/**
* Returns the value of the 'Behavior Docu' containment reference.
*
*
*
*
This is an optional documentation of the actor behavior.
*
*
* @return the value of the 'Behavior Docu' containment reference.
* @see #setBehaviorDocu(Documentation)
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_BehaviorDocu()
* @model containment="true"
* @generated
*/
Documentation getBehaviorDocu();
/**
* Sets the value of the '{@link org.eclipse.etrice.core.room.ActorClass#getBehaviorDocu Behavior Docu}' containment reference.
*
*
* @param value the new value of the 'Behavior Docu' containment reference.
* @see #getBehaviorDocu()
* @generated
*/
void setBehaviorDocu(Documentation value);
/**
* Returns the value of the 'Behavior Annotations' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.common.base.Annotation}.
*
*
*
*
This is a list of annotations to the actor behavior.
*
*
* @return the value of the 'Behavior Annotations' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_BehaviorAnnotations()
* @model containment="true"
* @generated
*/
EList getBehaviorAnnotations();
/**
* Returns the value of the 'Operations' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.StandardOperation}.
*
*
*
*
This is a list of all private operations of this actor class.
*
*
* @return the value of the 'Operations' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Operations()
* @model containment="true"
* @generated
*/
EList getOperations();
/**
* Returns the value of the 'Structors' containment reference list.
* The list contents are of type {@link org.eclipse.etrice.core.room.ClassStructor}.
*
*
* If the meaning of the 'Structors' containment reference list isn't clear,
* there really should be more of a description here...
*
*
* @return the value of the 'Structors' containment reference list.
* @see org.eclipse.etrice.core.room.RoomPackage#getActorClass_Structors()
* @model containment="true"
* @generated
*/
EList getStructors();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='EList<Port> ports = new BasicEList<Port>();\r\nfor (ExternalPort ep : getExternalPorts()) {\r\n\tif(ep.getInterfacePort() != null)\r\n\t\tports.add(ep.getInterfacePort());\r\n}\r\nreturn ports;\r\n'"
* @generated
*/
EList getExternalEndPorts();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='EList<Port> ports = new BasicEList<Port>(getInterfacePorts());\r\nfor (ExternalPort ep : getExternalPorts()) {\r\n\tif(ep.getInterfacePort() != null)\r\n\t\tports.remove(ep.getInterfacePort());\r\n}\r\nreturn ports;\r\n'"
* @generated
*/
EList getRelayPorts();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='EList<SPP> spps = new BasicEList<SPP>();\r\nfor (ServiceImplementation spp : getServiceImplementations()) {\r\n\tif(spp.getSpp() != null)\r\n\t\tspps.add(spp.getSpp());\r\n}\r\nreturn spps;\r\n'"
* @generated
*/
EList getImplementedSPPs();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='return (ActorClass)getBase();\r\n'"
* @generated
*/
ActorClass getActorBase();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='return getName();\r\n'"
* @generated
*/
String getComponentName();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='return new <%org.eclipse.emf.common.util.BasicEList%><AbstractInterfaceItem>(new <%org.eclipse.etrice.core.room.util.RoomHelpers%>().getInterfaceItems(this));\r\n'"
* @generated
*/
EList getAbstractInterfaceItems();
/**
*
*
* @model kind="operation"
* annotation="http://www.eclipse.org/emf/2002/GenModel body='return new <%org.eclipse.emf.common.util.BasicEList%><AbstractInterfaceItem>(new <%org.eclipse.etrice.core.room.util.RoomHelpers%>().getAllInterfaceItems(this));\r\n'"
* @generated
*/
EList getAllAbstractInterfaceItems();
} // ActorClass