/**
 * Copyright (c) 2016 CEA LIST.
 * 
 * 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
 * 
 * Contributors:
 *   CEA LIST - Initial API and implementation
 * 
 */
package org.omg.smm.impl;

import org.eclipse.emf.ecore.EClass;

import org.omg.smm.RefinementMeasurementRelationship;
import org.omg.smm.SmmPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Refinement Measurement Relationship</b></em>'.
 * <!-- end-user-doc -->
 *
 * @generated
 */
public class RefinementMeasurementRelationshipImpl extends MeasurementRelationshipImpl implements RefinementMeasurementRelationship {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected RefinementMeasurementRelationshipImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return SmmPackage.Literals.REFINEMENT_MEASUREMENT_RELATIONSHIP;
	}

} //RefinementMeasurementRelationshipImpl
