blob: faacf321b04a808666cd6477361bca2b5a7d15c3 [file] [log] [blame]
/**
* *******************************************************************************
* Copyright (c) 2017 Timing-Architects Embedded Systems GmbH and others.
* 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
*
* Generated using Eclipse EMF
*
* *******************************************************************************
*/
package org.eclipse.app4mc.amalthea.generator.configuration.impl;
import org.eclipse.app4mc.amalthea.generator.configuration.IntegerDistribution;
import org.eclipse.app4mc.amalthea.generator.configuration.RTMGCPackage;
import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessProperties;
import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreAccessType;
import org.eclipse.app4mc.amalthea.generator.configuration.SemaphoreRequestOrder;
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;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Semaphore Access Properties</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* </p>
* <ul>
* <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getPerUnitReadAccessCount <em>Per Unit Read Access Count</em>}</li>
* <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getPerUnitWriteAccessCount <em>Per Unit Write Access Count</em>}</li>
* <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getRequestOrder <em>Request Order</em>}</li>
* <li>{@link org.eclipse.app4mc.amalthea.generator.configuration.impl.SemaphoreAccessPropertiesImpl#getAccessType <em>Access Type</em>}</li>
* </ul>
*
* @generated
*/
public class SemaphoreAccessPropertiesImpl extends MinimalEObjectImpl.Container implements SemaphoreAccessProperties {
/**
* The cached value of the '{@link #getPerUnitReadAccessCount() <em>Per Unit Read Access Count</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getPerUnitReadAccessCount()
* @generated
* @ordered
*/
protected IntegerDistribution perUnitReadAccessCount;
/**
* The cached value of the '{@link #getPerUnitWriteAccessCount() <em>Per Unit Write Access Count</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getPerUnitWriteAccessCount()
* @generated
* @ordered
*/
protected IntegerDistribution perUnitWriteAccessCount;
/**
* The default value of the '{@link #getRequestOrder() <em>Request Order</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getRequestOrder()
* @generated
* @ordered
*/
protected static final SemaphoreRequestOrder REQUEST_ORDER_EDEFAULT = SemaphoreRequestOrder.NONE;
/**
* The cached value of the '{@link #getRequestOrder() <em>Request Order</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getRequestOrder()
* @generated
* @ordered
*/
protected SemaphoreRequestOrder requestOrder = REQUEST_ORDER_EDEFAULT;
/**
* The default value of the '{@link #getAccessType() <em>Access Type</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getAccessType()
* @generated
* @ordered
*/
protected static final SemaphoreAccessType ACCESS_TYPE_EDEFAULT = SemaphoreAccessType.RAND_RUNNABLE;
/**
* The cached value of the '{@link #getAccessType() <em>Access Type</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getAccessType()
* @generated
* @ordered
*/
protected SemaphoreAccessType accessType = ACCESS_TYPE_EDEFAULT;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected SemaphoreAccessPropertiesImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return RTMGCPackage.Literals.SEMAPHORE_ACCESS_PROPERTIES;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public IntegerDistribution getPerUnitReadAccessCount() {
return perUnitReadAccessCount;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetPerUnitReadAccessCount(IntegerDistribution newPerUnitReadAccessCount, NotificationChain msgs) {
IntegerDistribution oldPerUnitReadAccessCount = perUnitReadAccessCount;
perUnitReadAccessCount = newPerUnitReadAccessCount;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, oldPerUnitReadAccessCount, newPerUnitReadAccessCount);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setPerUnitReadAccessCount(IntegerDistribution newPerUnitReadAccessCount) {
if (newPerUnitReadAccessCount != perUnitReadAccessCount) {
NotificationChain msgs = null;
if (perUnitReadAccessCount != null)
msgs = ((InternalEObject)perUnitReadAccessCount).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, null, msgs);
if (newPerUnitReadAccessCount != null)
msgs = ((InternalEObject)newPerUnitReadAccessCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, null, msgs);
msgs = basicSetPerUnitReadAccessCount(newPerUnitReadAccessCount, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT, newPerUnitReadAccessCount, newPerUnitReadAccessCount));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public IntegerDistribution getPerUnitWriteAccessCount() {
return perUnitWriteAccessCount;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetPerUnitWriteAccessCount(IntegerDistribution newPerUnitWriteAccessCount, NotificationChain msgs) {
IntegerDistribution oldPerUnitWriteAccessCount = perUnitWriteAccessCount;
perUnitWriteAccessCount = newPerUnitWriteAccessCount;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, oldPerUnitWriteAccessCount, newPerUnitWriteAccessCount);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setPerUnitWriteAccessCount(IntegerDistribution newPerUnitWriteAccessCount) {
if (newPerUnitWriteAccessCount != perUnitWriteAccessCount) {
NotificationChain msgs = null;
if (perUnitWriteAccessCount != null)
msgs = ((InternalEObject)perUnitWriteAccessCount).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, null, msgs);
if (newPerUnitWriteAccessCount != null)
msgs = ((InternalEObject)newPerUnitWriteAccessCount).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, null, msgs);
msgs = basicSetPerUnitWriteAccessCount(newPerUnitWriteAccessCount, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT, newPerUnitWriteAccessCount, newPerUnitWriteAccessCount));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public SemaphoreRequestOrder getRequestOrder() {
return requestOrder;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setRequestOrder(SemaphoreRequestOrder newRequestOrder) {
SemaphoreRequestOrder oldRequestOrder = requestOrder;
requestOrder = newRequestOrder == null ? REQUEST_ORDER_EDEFAULT : newRequestOrder;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER, oldRequestOrder, requestOrder));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public SemaphoreAccessType getAccessType() {
return accessType;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setAccessType(SemaphoreAccessType newAccessType) {
SemaphoreAccessType oldAccessType = accessType;
accessType = newAccessType == null ? ACCESS_TYPE_EDEFAULT : newAccessType;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE, oldAccessType, accessType));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
return basicSetPerUnitReadAccessCount(null, msgs);
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
return basicSetPerUnitWriteAccessCount(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
return getPerUnitReadAccessCount();
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
return getPerUnitWriteAccessCount();
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
return getRequestOrder();
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
return getAccessType();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
setPerUnitReadAccessCount((IntegerDistribution)newValue);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
setPerUnitWriteAccessCount((IntegerDistribution)newValue);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
setRequestOrder((SemaphoreRequestOrder)newValue);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
setAccessType((SemaphoreAccessType)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
setPerUnitReadAccessCount((IntegerDistribution)null);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
setPerUnitWriteAccessCount((IntegerDistribution)null);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
setRequestOrder(REQUEST_ORDER_EDEFAULT);
return;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
setAccessType(ACCESS_TYPE_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_READ_ACCESS_COUNT:
return perUnitReadAccessCount != null;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__PER_UNIT_WRITE_ACCESS_COUNT:
return perUnitWriteAccessCount != null;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__REQUEST_ORDER:
return requestOrder != REQUEST_ORDER_EDEFAULT;
case RTMGCPackage.SEMAPHORE_ACCESS_PROPERTIES__ACCESS_TYPE:
return accessType != ACCESS_TYPE_EDEFAULT;
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public String toString() {
if (eIsProxy()) return super.toString();
StringBuffer result = new StringBuffer(super.toString());
result.append(" (requestOrder: ");
result.append(requestOrder);
result.append(", accessType: ");
result.append(accessType);
result.append(')');
return result.toString();
}
} //SemaphoreAccessPropertiesImpl