/** * <copyright> * </copyright> * * $Id$ */ package net.sf.orcc.moc.impl; import java.util.Collection; import net.sf.orcc.df.Pattern; import net.sf.orcc.df.Port; import net.sf.orcc.moc.CSDFMoC; import net.sf.orcc.moc.Invocation; import net.sf.orcc.moc.MocPackage; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; /** * <!-- begin-user-doc --> An implementation of the model object ' * <em><b>CSDF Mo C</b></em>'. <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link net.sf.orcc.moc.impl.CSDFMoCImpl#getInputPattern <em>Input Pattern</em>}</li> * <li>{@link net.sf.orcc.moc.impl.CSDFMoCImpl#getNumberOfPhases <em>Number Of Phases</em>}</li> * <li>{@link net.sf.orcc.moc.impl.CSDFMoCImpl#getOutputPattern <em>Output Pattern</em>}</li> * <li>{@link net.sf.orcc.moc.impl.CSDFMoCImpl#getInvocations <em>Invocations</em>}</li> * <li>{@link net.sf.orcc.moc.impl.CSDFMoCImpl#getDelayPattern <em>Delay Pattern</em>}</li> * </ul> * </p> * * @generated */ public class CSDFMoCImpl extends MoCImpl implements CSDFMoC { /** * 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 default value of the '{@link #getNumberOfPhases() <em>Number Of Phases</em>}' attribute. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @see #getNumberOfPhases() * @generated * @ordered */ protected static final int NUMBER_OF_PHASES_EDEFAULT = 0; /** * The cached value of the '{@link #getNumberOfPhases() <em>Number Of Phases</em>}' attribute. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @see #getNumberOfPhases() * @generated * @ordered */ protected int numberOfPhases = NUMBER_OF_PHASES_EDEFAULT; /** * 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 #getInvocations() <em>Invocations</em>}' containment reference list. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getInvocations() * @generated * @ordered */ protected EList<Invocation> invocations; /** * The cached value of the '{@link #getDelayPattern() <em>Delay Pattern</em>}' containment reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getDelayPattern() * @generated * @ordered */ protected Pattern delayPattern; /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ protected CSDFMoCImpl() { super(); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetDelayPattern(Pattern newDelayPattern, NotificationChain msgs) { Pattern oldDelayPattern = delayPattern; delayPattern = newDelayPattern; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MocPackage.CSDF_MO_C__DELAY_PATTERN, oldDelayPattern, newDelayPattern); 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, MocPackage.CSDF_MO_C__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, MocPackage.CSDF_MO_C__OUTPUT_PATTERN, oldOutputPattern, newOutputPattern); 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 MocPackage.CSDF_MO_C__INPUT_PATTERN: return getInputPattern(); case MocPackage.CSDF_MO_C__NUMBER_OF_PHASES: return getNumberOfPhases(); case MocPackage.CSDF_MO_C__OUTPUT_PATTERN: return getOutputPattern(); case MocPackage.CSDF_MO_C__INVOCATIONS: return getInvocations(); case MocPackage.CSDF_MO_C__DELAY_PATTERN: return getDelayPattern(); } 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 MocPackage.CSDF_MO_C__INPUT_PATTERN: return basicSetInputPattern(null, msgs); case MocPackage.CSDF_MO_C__OUTPUT_PATTERN: return basicSetOutputPattern(null, msgs); case MocPackage.CSDF_MO_C__INVOCATIONS: return ((InternalEList<?>) getInvocations()).basicRemove(otherEnd, msgs); case MocPackage.CSDF_MO_C__DELAY_PATTERN: return basicSetDelayPattern(null, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case MocPackage.CSDF_MO_C__INPUT_PATTERN: return inputPattern != null; case MocPackage.CSDF_MO_C__NUMBER_OF_PHASES: return numberOfPhases != NUMBER_OF_PHASES_EDEFAULT; case MocPackage.CSDF_MO_C__OUTPUT_PATTERN: return outputPattern != null; case MocPackage.CSDF_MO_C__INVOCATIONS: return invocations != null && !invocations.isEmpty(); case MocPackage.CSDF_MO_C__DELAY_PATTERN: return delayPattern != null; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { switch (featureID) { case MocPackage.CSDF_MO_C__INPUT_PATTERN: setInputPattern((Pattern) newValue); return; case MocPackage.CSDF_MO_C__NUMBER_OF_PHASES: setNumberOfPhases((Integer) newValue); return; case MocPackage.CSDF_MO_C__OUTPUT_PATTERN: setOutputPattern((Pattern) newValue); return; case MocPackage.CSDF_MO_C__INVOCATIONS: getInvocations().clear(); getInvocations() .addAll((Collection<? extends Invocation>) newValue); return; case MocPackage.CSDF_MO_C__DELAY_PATTERN: setDelayPattern((Pattern) newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return MocPackage.Literals.CSDF_MO_C; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case MocPackage.CSDF_MO_C__INPUT_PATTERN: setInputPattern((Pattern) null); return; case MocPackage.CSDF_MO_C__NUMBER_OF_PHASES: setNumberOfPhases(NUMBER_OF_PHASES_EDEFAULT); return; case MocPackage.CSDF_MO_C__OUTPUT_PATTERN: setOutputPattern((Pattern) null); return; case MocPackage.CSDF_MO_C__INVOCATIONS: getInvocations().clear(); return; case MocPackage.CSDF_MO_C__DELAY_PATTERN: setDelayPattern((Pattern) null); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public Pattern getDelayPattern() { return delayPattern; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public Pattern getInputPattern() { return inputPattern; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public EList<Invocation> getInvocations() { if (invocations == null) { invocations = new EObjectContainmentEList<Invocation>( Invocation.class, this, MocPackage.CSDF_MO_C__INVOCATIONS); } return invocations; } @Override public String getShortName() { return "CSDF"; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public int getNumberOfPhases() { return numberOfPhases; } /** * Returns the number of tokens consumed by this port. * * @param port * an input port * @return the number of tokens consumed by this port. */ @Override public int getNumTokensConsumed(Port port) { return inputPattern.getNumTokens(port); } /** * Returns the number of tokens written to this port. * * @param port * an output port * @return the number of tokens written to this port. */ @Override public int getNumTokensProduced(Port port) { return outputPattern.getNumTokens(port); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public Pattern getOutputPattern() { return outputPattern; } @Override public boolean isCSDF() { return true; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void setDelayPattern(Pattern newDelayPattern) { if (newDelayPattern != delayPattern) { NotificationChain msgs = null; if (delayPattern != null) msgs = ((InternalEObject) delayPattern).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__DELAY_PATTERN, null, msgs); if (newDelayPattern != null) msgs = ((InternalEObject) newDelayPattern).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__DELAY_PATTERN, null, msgs); msgs = basicSetDelayPattern(newDelayPattern, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MocPackage.CSDF_MO_C__DELAY_PATTERN, newDelayPattern, newDelayPattern)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void setInputPattern(Pattern newInputPattern) { if (newInputPattern != inputPattern) { NotificationChain msgs = null; if (inputPattern != null) msgs = ((InternalEObject) inputPattern).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__INPUT_PATTERN, null, msgs); if (newInputPattern != null) msgs = ((InternalEObject) newInputPattern).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__INPUT_PATTERN, null, msgs); msgs = basicSetInputPattern(newInputPattern, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MocPackage.CSDF_MO_C__INPUT_PATTERN, newInputPattern, newInputPattern)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void setNumberOfPhases(int newNumberOfPhases) { int oldNumberOfPhases = numberOfPhases; numberOfPhases = newNumberOfPhases; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MocPackage.CSDF_MO_C__NUMBER_OF_PHASES, oldNumberOfPhases, numberOfPhases)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void setOutputPattern(Pattern newOutputPattern) { if (newOutputPattern != outputPattern) { NotificationChain msgs = null; if (outputPattern != null) msgs = ((InternalEObject) outputPattern).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__OUTPUT_PATTERN, null, msgs); if (newOutputPattern != null) msgs = ((InternalEObject) newOutputPattern).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MocPackage.CSDF_MO_C__OUTPUT_PATTERN, null, msgs); msgs = basicSetOutputPattern(newOutputPattern, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, MocPackage.CSDF_MO_C__OUTPUT_PATTERN, newOutputPattern, newOutputPattern)); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("CSDF => "); builder.append(getInputPattern()); builder.append(", "); builder.append(getOutputPattern()); return builder.toString(); } } // CSDFMoCImpl