/**
*/
package modes3.impl;
import modes3.Modes3Package;
import modes3.Segment;
import modes3.Turnout;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
/**
*
* An implementation of the model object 'Turnout'.
*
*
* The following features are implemented:
*
*
* - {@link modes3.impl.TurnoutImpl#getStraight Straight}
* - {@link modes3.impl.TurnoutImpl#getDivergent Divergent}
*
*
* @generated
*/
public class TurnoutImpl extends SegmentImpl implements Turnout {
/**
* The cached value of the '{@link #getStraight() Straight}' reference.
*
*
* @see #getStraight()
* @generated
* @ordered
*/
protected Segment straight;
/**
* The cached value of the '{@link #getDivergent() Divergent}' reference.
*
*
* @see #getDivergent()
* @generated
* @ordered
*/
protected Segment divergent;
/**
*
*
* @generated
*/
protected TurnoutImpl() {
super();
}
/**
*
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return Modes3Package.Literals.TURNOUT;
}
/**
*
*
* @generated
*/
public Segment getStraight() {
if (straight != null && straight.eIsProxy()) {
InternalEObject oldStraight = (InternalEObject)straight;
straight = (Segment)eResolveProxy(oldStraight);
if (straight != oldStraight) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, Modes3Package.TURNOUT__STRAIGHT, oldStraight, straight));
}
}
return straight;
}
/**
*
*
* @generated
*/
public Segment basicGetStraight() {
return straight;
}
/**
*
*
* @generated
*/
public void setStraight(Segment newStraight) {
Segment oldStraight = straight;
straight = newStraight;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, Modes3Package.TURNOUT__STRAIGHT, oldStraight, straight));
}
/**
*
*
* @generated
*/
public Segment getDivergent() {
if (divergent != null && divergent.eIsProxy()) {
InternalEObject oldDivergent = (InternalEObject)divergent;
divergent = (Segment)eResolveProxy(oldDivergent);
if (divergent != oldDivergent) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, Modes3Package.TURNOUT__DIVERGENT, oldDivergent, divergent));
}
}
return divergent;
}
/**
*
*
* @generated
*/
public Segment basicGetDivergent() {
return divergent;
}
/**
*
*
* @generated
*/
public void setDivergent(Segment newDivergent) {
Segment oldDivergent = divergent;
divergent = newDivergent;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, Modes3Package.TURNOUT__DIVERGENT, oldDivergent, divergent));
}
/**
*
*
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case Modes3Package.TURNOUT__STRAIGHT:
if (resolve) return getStraight();
return basicGetStraight();
case Modes3Package.TURNOUT__DIVERGENT:
if (resolve) return getDivergent();
return basicGetDivergent();
}
return super.eGet(featureID, resolve, coreType);
}
/**
*
*
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case Modes3Package.TURNOUT__STRAIGHT:
setStraight((Segment)newValue);
return;
case Modes3Package.TURNOUT__DIVERGENT:
setDivergent((Segment)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
*
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case Modes3Package.TURNOUT__STRAIGHT:
setStraight((Segment)null);
return;
case Modes3Package.TURNOUT__DIVERGENT:
setDivergent((Segment)null);
return;
}
super.eUnset(featureID);
}
/**
*
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case Modes3Package.TURNOUT__STRAIGHT:
return straight != null;
case Modes3Package.TURNOUT__DIVERGENT:
return divergent != null;
}
return super.eIsSet(featureID);
}
} //TurnoutImpl