/**
* <copyright>
* </copyright>
*
* $Id$
*/
package net.sf.orcc.df.impl;
import net.sf.orcc.df.Action;
import net.sf.orcc.df.DfPackage;
import net.sf.orcc.df.Pattern;
import net.sf.orcc.df.Tag;
import net.sf.orcc.ir.Procedure;
import net.sf.orcc.util.impl.AttributableImpl;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
/**
* <!-- begin-user-doc --> An implementation of the model object '
* <em><b>Action</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getBody <em>Body</em>}</li>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getInputPattern <em>Input Pattern</em>}</li>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getOutputPattern <em>Output Pattern</em>}</li>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getPeekPattern <em>Peek Pattern</em>}</li>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getScheduler <em>Scheduler</em>}</li>
* <li>{@link net.sf.orcc.df.impl.ActionImpl#getTag <em>Tag</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class ActionImpl extends AttributableImpl implements Action {
/**
* The cached value of the '{@link #getBody() <em>Body</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getBody()
* @generated
* @ordered
*/
protected Procedure body;
/**
* The cached value of the '{@link #getInputPattern() <em>Input Pattern</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getInputPattern()
* @generated
* @ordered
*/
protected Pattern inputPattern;
/**
* The cached value of the '{@link #getOutputPattern() <em>Output Pattern</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getOutputPattern()
* @generated
* @ordered
*/
protected Pattern outputPattern;
/**
* The cached value of the '{@link #getPeekPattern() <em>Peek Pattern</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getPeekPattern()
* @generated
* @ordered
*/
protected Pattern peekPattern;
/**
* The cached value of the '{@link #getScheduler() <em>Scheduler</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getScheduler()
* @generated
* @ordered
*/
protected Procedure scheduler;
/**
* The cached value of the '{@link #getTag() <em>Tag</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getTag()
* @generated
* @ordered
*/
protected Tag tag;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
protected ActionImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetBody(Procedure newBody,
NotificationChain msgs) {
Procedure oldBody = body;
body = newBody;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__BODY, oldBody, newBody);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetInputPattern(Pattern newInputPattern,
NotificationChain msgs) {
Pattern oldInputPattern = inputPattern;
inputPattern = newInputPattern;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__INPUT_PATTERN,
oldInputPattern, newInputPattern);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetOutputPattern(Pattern newOutputPattern,
NotificationChain msgs) {
Pattern oldOutputPattern = outputPattern;
outputPattern = newOutputPattern;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__OUTPUT_PATTERN,
oldOutputPattern, newOutputPattern);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetPeekPattern(Pattern newPeekPattern,
NotificationChain msgs) {
Pattern oldPeekPattern = peekPattern;
peekPattern = newPeekPattern;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__PEEK_PATTERN,
oldPeekPattern, newPeekPattern);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetScheduler(Procedure newScheduler,
NotificationChain msgs) {
Procedure oldScheduler = scheduler;
scheduler = newScheduler;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__SCHEDULER,
oldScheduler, newScheduler);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetTag(Tag newTag, NotificationChain msgs) {
Tag oldTag = tag;
tag = newTag;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, DfPackage.ACTION__TAG, oldTag, newTag);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case DfPackage.ACTION__BODY:
return getBody();
case DfPackage.ACTION__INPUT_PATTERN:
return getInputPattern();
case DfPackage.ACTION__OUTPUT_PATTERN:
return getOutputPattern();
case DfPackage.ACTION__PEEK_PATTERN:
return getPeekPattern();
case DfPackage.ACTION__SCHEDULER:
return getScheduler();
case DfPackage.ACTION__TAG:
return getTag();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd,
int featureID, NotificationChain msgs) {
switch (featureID) {
case DfPackage.ACTION__BODY:
return basicSetBody(null, msgs);
case DfPackage.ACTION__INPUT_PATTERN:
return basicSetInputPattern(null, msgs);
case DfPackage.ACTION__OUTPUT_PATTERN:
return basicSetOutputPattern(null, msgs);
case DfPackage.ACTION__PEEK_PATTERN:
return basicSetPeekPattern(null, msgs);
case DfPackage.ACTION__SCHEDULER:
return basicSetScheduler(null, msgs);
case DfPackage.ACTION__TAG:
return basicSetTag(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case DfPackage.ACTION__BODY:
return body != null;
case DfPackage.ACTION__INPUT_PATTERN:
return inputPattern != null;
case DfPackage.ACTION__OUTPUT_PATTERN:
return outputPattern != null;
case DfPackage.ACTION__PEEK_PATTERN:
return peekPattern != null;
case DfPackage.ACTION__SCHEDULER:
return scheduler != null;
case DfPackage.ACTION__TAG:
return tag != null;
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case DfPackage.ACTION__BODY:
setBody((Procedure) newValue);
return;
case DfPackage.ACTION__INPUT_PATTERN:
setInputPattern((Pattern) newValue);
return;
case DfPackage.ACTION__OUTPUT_PATTERN:
setOutputPattern((Pattern) newValue);
return;
case DfPackage.ACTION__PEEK_PATTERN:
setPeekPattern((Pattern) newValue);
return;
case DfPackage.ACTION__SCHEDULER:
setScheduler((Procedure) newValue);
return;
case DfPackage.ACTION__TAG:
setTag((Tag) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return DfPackage.Literals.ACTION;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case DfPackage.ACTION__BODY:
setBody((Procedure) null);
return;
case DfPackage.ACTION__INPUT_PATTERN:
setInputPattern((Pattern) null);
return;
case DfPackage.ACTION__OUTPUT_PATTERN:
setOutputPattern((Pattern) null);
return;
case DfPackage.ACTION__PEEK_PATTERN:
setPeekPattern((Pattern) null);
return;
case DfPackage.ACTION__SCHEDULER:
setScheduler((Procedure) null);
return;
case DfPackage.ACTION__TAG:
setTag((Tag) null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Procedure getBody() {
return body;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Pattern getInputPattern() {
return inputPattern;
}
@Override
public String getName() {
if (tag.isEmpty()) {
return body.getName();
} else {
String str = "";
for (int i = 0; i < tag.size() - 1; i++) {
str += tag.get(i) + "_";
}
str += tag.get(tag.size() - 1);
return str;
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Pattern getOutputPattern() {
return outputPattern;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Pattern getPeekPattern() {
return peekPattern;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Procedure getScheduler() {
return scheduler;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Tag getTag() {
return tag;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setBody(Procedure newBody) {
if (newBody != body) {
NotificationChain msgs = null;
if (body != null)
msgs = ((InternalEObject) body).eInverseRemove(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__BODY, null,
msgs);
if (newBody != null)
msgs = ((InternalEObject) newBody).eInverseAdd(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__BODY, null,
msgs);
msgs = basicSetBody(newBody, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__BODY, newBody, newBody));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setInputPattern(Pattern newInputPattern) {
if (newInputPattern != inputPattern) {
NotificationChain msgs = null;
if (inputPattern != null)
msgs = ((InternalEObject) inputPattern).eInverseRemove(this,
EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__INPUT_PATTERN, null, msgs);
if (newInputPattern != null)
msgs = ((InternalEObject) newInputPattern).eInverseAdd(this,
EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__INPUT_PATTERN, null, msgs);
msgs = basicSetInputPattern(newInputPattern, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__INPUT_PATTERN, newInputPattern,
newInputPattern));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setOutputPattern(Pattern newOutputPattern) {
if (newOutputPattern != outputPattern) {
NotificationChain msgs = null;
if (outputPattern != null)
msgs = ((InternalEObject) outputPattern).eInverseRemove(this,
EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__OUTPUT_PATTERN, null, msgs);
if (newOutputPattern != null)
msgs = ((InternalEObject) newOutputPattern).eInverseAdd(this,
EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__OUTPUT_PATTERN, null, msgs);
msgs = basicSetOutputPattern(newOutputPattern, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__OUTPUT_PATTERN, newOutputPattern,
newOutputPattern));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setPeekPattern(Pattern newPeekPattern) {
if (newPeekPattern != peekPattern) {
NotificationChain msgs = null;
if (peekPattern != null)
msgs = ((InternalEObject) peekPattern)
.eInverseRemove(this, EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__PEEK_PATTERN, null, msgs);
if (newPeekPattern != null)
msgs = ((InternalEObject) newPeekPattern)
.eInverseAdd(this, EOPPOSITE_FEATURE_BASE
- DfPackage.ACTION__PEEK_PATTERN, null, msgs);
msgs = basicSetPeekPattern(newPeekPattern, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__PEEK_PATTERN, newPeekPattern,
newPeekPattern));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setScheduler(Procedure newScheduler) {
if (newScheduler != scheduler) {
NotificationChain msgs = null;
if (scheduler != null)
msgs = ((InternalEObject) scheduler).eInverseRemove(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__SCHEDULER,
null, msgs);
if (newScheduler != null)
msgs = ((InternalEObject) newScheduler).eInverseAdd(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__SCHEDULER,
null, msgs);
msgs = basicSetScheduler(newScheduler, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__SCHEDULER, newScheduler, newScheduler));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setTag(Tag newTag) {
if (newTag != tag) {
NotificationChain msgs = null;
if (tag != null)
msgs = ((InternalEObject) tag).eInverseRemove(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__TAG, null,
msgs);
if (newTag != null)
msgs = ((InternalEObject) newTag).eInverseAdd(this,
EOPPOSITE_FEATURE_BASE - DfPackage.ACTION__TAG, null,
msgs);
msgs = basicSetTag(newTag, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
DfPackage.ACTION__TAG, newTag, newTag));
}
@Override
public String toString() {
return getName();
}
} // ActionImpl