001/**
002 * ******************************************************************************
003 * Copyright (c) 2018 Red Hat Inc
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *  *
009 * Contributors:
010 *     Jens Reimann - initial API and implementation
011 *  ******************************************************************************
012 */
013package de.dentrassi.varlink.idl.varlinkIdl.impl;
014
015import de.dentrassi.varlink.idl.varlinkIdl.TypeAlias;
016import de.dentrassi.varlink.idl.varlinkIdl.TypeReference;
017import de.dentrassi.varlink.idl.varlinkIdl.VarlinkIdlPackage;
018
019import org.eclipse.emf.common.notify.Notification;
020
021import org.eclipse.emf.ecore.EClass;
022import org.eclipse.emf.ecore.InternalEObject;
023
024import org.eclipse.emf.ecore.impl.ENotificationImpl;
025
026/**
027 * <!-- begin-user-doc -->
028 * An implementation of the model object '<em><b>Type Reference</b></em>'.
029 * <!-- end-user-doc -->
030 * <p>
031 * The following features are implemented:
032 * </p>
033 * <ul>
034 *   <li>{@link de.dentrassi.varlink.idl.varlinkIdl.impl.TypeReferenceImpl#getName <em>Name</em>}</li>
035 * </ul>
036 *
037 * @generated
038 */
039public class TypeReferenceImpl extends ElementTypeImpl implements TypeReference
040{
041  /**
042   * The cached value of the '{@link #getName() <em>Name</em>}' reference.
043   * <!-- begin-user-doc -->
044   * <!-- end-user-doc -->
045   * @see #getName()
046   * @generated
047   * @ordered
048   */
049  protected TypeAlias name;
050
051  /**
052   * <!-- begin-user-doc -->
053   * <!-- end-user-doc -->
054   * @generated
055   */
056  protected TypeReferenceImpl()
057  {
058    super();
059  }
060
061  /**
062   * <!-- begin-user-doc -->
063   * <!-- end-user-doc -->
064   * @generated
065   */
066  @Override
067  protected EClass eStaticClass()
068  {
069    return VarlinkIdlPackage.Literals.TYPE_REFERENCE;
070  }
071
072  /**
073   * <!-- begin-user-doc -->
074   * <!-- end-user-doc -->
075   * @generated
076   */
077  public TypeAlias getName()
078  {
079    if (name != null && name.eIsProxy())
080    {
081      InternalEObject oldName = (InternalEObject)name;
082      name = (TypeAlias)eResolveProxy(oldName);
083      if (name != oldName)
084      {
085        if (eNotificationRequired())
086          eNotify(new ENotificationImpl(this, Notification.RESOLVE, VarlinkIdlPackage.TYPE_REFERENCE__NAME, oldName, name));
087      }
088    }
089    return name;
090  }
091
092  /**
093   * <!-- begin-user-doc -->
094   * <!-- end-user-doc -->
095   * @generated
096   */
097  public TypeAlias basicGetName()
098  {
099    return name;
100  }
101
102  /**
103   * <!-- begin-user-doc -->
104   * <!-- end-user-doc -->
105   * @generated
106   */
107  public void setName(TypeAlias newName)
108  {
109    TypeAlias oldName = name;
110    name = newName;
111    if (eNotificationRequired())
112      eNotify(new ENotificationImpl(this, Notification.SET, VarlinkIdlPackage.TYPE_REFERENCE__NAME, oldName, name));
113  }
114
115  /**
116   * <!-- begin-user-doc -->
117   * <!-- end-user-doc -->
118   * @generated
119   */
120  @Override
121  public Object eGet(int featureID, boolean resolve, boolean coreType)
122  {
123    switch (featureID)
124    {
125      case VarlinkIdlPackage.TYPE_REFERENCE__NAME:
126        if (resolve) return getName();
127        return basicGetName();
128    }
129    return super.eGet(featureID, resolve, coreType);
130  }
131
132  /**
133   * <!-- begin-user-doc -->
134   * <!-- end-user-doc -->
135   * @generated
136   */
137  @Override
138  public void eSet(int featureID, Object newValue)
139  {
140    switch (featureID)
141    {
142      case VarlinkIdlPackage.TYPE_REFERENCE__NAME:
143        setName((TypeAlias)newValue);
144        return;
145    }
146    super.eSet(featureID, newValue);
147  }
148
149  /**
150   * <!-- begin-user-doc -->
151   * <!-- end-user-doc -->
152   * @generated
153   */
154  @Override
155  public void eUnset(int featureID)
156  {
157    switch (featureID)
158    {
159      case VarlinkIdlPackage.TYPE_REFERENCE__NAME:
160        setName((TypeAlias)null);
161        return;
162    }
163    super.eUnset(featureID);
164  }
165
166  /**
167   * <!-- begin-user-doc -->
168   * <!-- end-user-doc -->
169   * @generated
170   */
171  @Override
172  public boolean eIsSet(int featureID)
173  {
174    switch (featureID)
175    {
176      case VarlinkIdlPackage.TYPE_REFERENCE__NAME:
177        return name != null;
178    }
179    return super.eIsSet(featureID);
180  }
181
182} //TypeReferenceImpl