/**
* Copyright (c) 2012-2016 Marsha Chechik, Alessio Di Sandro, Michalis Famelis,
* Rick Salay.
* 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:
* Alessio Di Sandro - Implementation.
*/
package edu.toronto.cs.se.mmint.mid;
import org.eclipse.emf.ecore.EObject;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>EMF Info</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A selection of EMF information related to a model element, to avoid accessing the EObject every time they are needed.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* </p>
* <ul>
* <li>{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getClassName <em>Class Name</em>}</li>
* <li>{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getFeatureName <em>Feature Name</em>}</li>
* <li>{@link edu.toronto.cs.se.mmint.mid.EMFInfo#isAttribute <em>Attribute</em>}</li>
* <li>{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getRelatedClassName <em>Related Class Name</em>}</li>
* </ul>
*
* @see edu.toronto.cs.se.mmint.mid.MIDPackage#getEMFInfo()
* @model
* @generated
*/
public interface EMFInfo extends EObject {
/**
* Returns the value of the '<em><b>Class Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The EClass name (types: metamodel class; instances: metamodel class)
* <!-- end-model-doc -->
* @return the value of the '<em>Class Name</em>' attribute.
* @see #setClassName(String)
* @see edu.toronto.cs.se.mmint.mid.MIDPackage#getEMFInfo_ClassName()
* @model required="true"
* @generated
*/
String getClassName();
/**
* Sets the value of the '{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getClassName <em>Class Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Class Name</em>' attribute.
* @see #getClassName()
* @generated
*/
void setClassName(String value);
/**
* Returns the value of the '<em><b>Feature Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The EStructuralFeature name, if applicable (types: metamodel feature; instances: metamodel feature)
* <!-- end-model-doc -->
* @return the value of the '<em>Feature Name</em>' attribute.
* @see #setFeatureName(String)
* @see edu.toronto.cs.se.mmint.mid.MIDPackage#getEMFInfo_FeatureName()
* @model
* @generated
*/
String getFeatureName();
/**
* Sets the value of the '{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getFeatureName <em>Feature Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Feature Name</em>' attribute.
* @see #getFeatureName()
* @generated
*/
void setFeatureName(String value);
/**
* Returns the value of the '<em><b>Attribute</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If applicable, true if the EStructuralFeature is an EAttribute, false otherwise (types: metamodel feature; instances: metamodel feature)
* <!-- end-model-doc -->
* @return the value of the '<em>Attribute</em>' attribute.
* @see #setAttribute(boolean)
* @see edu.toronto.cs.se.mmint.mid.MIDPackage#getEMFInfo_Attribute()
* @model
* @generated
*/
boolean isAttribute();
/**
* Sets the value of the '{@link edu.toronto.cs.se.mmint.mid.EMFInfo#isAttribute <em>Attribute</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Attribute</em>' attribute.
* @see #isAttribute()
* @generated
*/
void setAttribute(boolean value);
/**
* Returns the value of the '<em><b>Related Class Name</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The related EClass name, if applicable (types: metamodel class of the type if reference; instances: metamodel class of the container if not root and not attribute)
* <!-- end-model-doc -->
* @return the value of the '<em>Related Class Name</em>' attribute.
* @see #setRelatedClassName(String)
* @see edu.toronto.cs.se.mmint.mid.MIDPackage#getEMFInfo_RelatedClassName()
* @model
* @generated
*/
String getRelatedClassName();
/**
* Sets the value of the '{@link edu.toronto.cs.se.mmint.mid.EMFInfo#getRelatedClassName <em>Related Class Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Related Class Name</em>' attribute.
* @see #getRelatedClassName()
* @generated
*/
void setRelatedClassName(String value);
/**
* <!-- begin-user-doc --> Returns a string representation of this EMF
* metamodel info.
* <!-- end-user-doc -->
* @model required="true"
* @generated
*/
String toTypeString();
/**
* <!-- begin-user-doc --> Returns a string representation of this EMF model
* info.
* <!-- end-user-doc-->
* @model required="true"
* @generated
*/
String toInstanceString();
} // EMFInfo