/**
 *  Copyright (c)2020 CEA LIST, Committer Name, and others.
 * 
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License 2.0
 *  which accompanies this distribution, and is available at
 *  https://www.eclipse.org/legal/epl-2.0/
 * 
 *  SPDX-License-Identifier: EPL-2.0
 * 
 *  Contributors:
 *  CEA LIST - Initial API and implementation
 *  Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
 *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 
 * 
 */
package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Opaque Data</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data.
 * <!-- end-model-doc -->
 *
 *
 * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getOpaqueData()
 * @model
 * @generated
 */
public interface OpaqueData extends DataType {
} // OpaqueData
