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.Field;
016import de.dentrassi.varlink.idl.varlinkIdl.VarlinkIdlPackage;
017
018import java.util.Collection;
019
020import org.eclipse.emf.common.notify.NotificationChain;
021
022import org.eclipse.emf.common.util.EList;
023
024import org.eclipse.emf.ecore.EClass;
025import org.eclipse.emf.ecore.InternalEObject;
026
027import org.eclipse.emf.ecore.util.EObjectContainmentEList;
028import org.eclipse.emf.ecore.util.InternalEList;
029
030/**
031 * <!-- begin-user-doc -->
032 * An implementation of the model object '<em><b>Object</b></em>'.
033 * <!-- end-user-doc -->
034 * <p>
035 * The following features are implemented:
036 * </p>
037 * <ul>
038 *   <li>{@link de.dentrassi.varlink.idl.varlinkIdl.impl.ObjectImpl#getFields <em>Fields</em>}</li>
039 * </ul>
040 *
041 * @generated
042 */
043public class ObjectImpl extends TypeAliasDefinitionImpl implements de.dentrassi.varlink.idl.varlinkIdl.Object
044{
045  /**
046   * The cached value of the '{@link #getFields() <em>Fields</em>}' containment reference list.
047   * <!-- begin-user-doc -->
048   * <!-- end-user-doc -->
049   * @see #getFields()
050   * @generated
051   * @ordered
052   */
053  protected EList<Field> fields;
054
055  /**
056   * <!-- begin-user-doc -->
057   * <!-- end-user-doc -->
058   * @generated
059   */
060  protected ObjectImpl()
061  {
062    super();
063  }
064
065  /**
066   * <!-- begin-user-doc -->
067   * <!-- end-user-doc -->
068   * @generated
069   */
070  @Override
071  protected EClass eStaticClass()
072  {
073    return VarlinkIdlPackage.Literals.OBJECT;
074  }
075
076  /**
077   * <!-- begin-user-doc -->
078   * <!-- end-user-doc -->
079   * @generated
080   */
081  public EList<Field> getFields()
082  {
083    if (fields == null)
084    {
085      fields = new EObjectContainmentEList<Field>(Field.class, this, VarlinkIdlPackage.OBJECT__FIELDS);
086    }
087    return fields;
088  }
089
090  /**
091   * <!-- begin-user-doc -->
092   * <!-- end-user-doc -->
093   * @generated
094   */
095  @Override
096  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
097  {
098    switch (featureID)
099    {
100      case VarlinkIdlPackage.OBJECT__FIELDS:
101        return ((InternalEList<?>)getFields()).basicRemove(otherEnd, msgs);
102    }
103    return super.eInverseRemove(otherEnd, featureID, msgs);
104  }
105
106  /**
107   * <!-- begin-user-doc -->
108   * <!-- end-user-doc -->
109   * @generated
110   */
111  @Override
112  public Object eGet(int featureID, boolean resolve, boolean coreType)
113  {
114    switch (featureID)
115    {
116      case VarlinkIdlPackage.OBJECT__FIELDS:
117        return getFields();
118    }
119    return super.eGet(featureID, resolve, coreType);
120  }
121
122  /**
123   * <!-- begin-user-doc -->
124   * <!-- end-user-doc -->
125   * @generated
126   */
127  @SuppressWarnings("unchecked")
128  @Override
129  public void eSet(int featureID, Object newValue)
130  {
131    switch (featureID)
132    {
133      case VarlinkIdlPackage.OBJECT__FIELDS:
134        getFields().clear();
135        getFields().addAll((Collection<? extends Field>)newValue);
136        return;
137    }
138    super.eSet(featureID, newValue);
139  }
140
141  /**
142   * <!-- begin-user-doc -->
143   * <!-- end-user-doc -->
144   * @generated
145   */
146  @Override
147  public void eUnset(int featureID)
148  {
149    switch (featureID)
150    {
151      case VarlinkIdlPackage.OBJECT__FIELDS:
152        getFields().clear();
153        return;
154    }
155    super.eUnset(featureID);
156  }
157
158  /**
159   * <!-- begin-user-doc -->
160   * <!-- end-user-doc -->
161   * @generated
162   */
163  @Override
164  public boolean eIsSet(int featureID)
165  {
166    switch (featureID)
167    {
168      case VarlinkIdlPackage.OBJECT__FIELDS:
169        return fields != null && !fields.isEmpty();
170    }
171    return super.eIsSet(featureID);
172  }
173
174} //ObjectImpl