/**
 */
package org.eclipse.emf.parsley.tests.models.testmodels;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Test EClass For Feature Name</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link org.eclipse.emf.parsley.tests.models.testmodels.TestEClassForFeatureName#getEField <em>EField</em>}</li>
 * </ul>
 *
 * @see org.eclipse.emf.parsley.tests.models.testmodels.TestmodelsPackage#getTestEClassForFeatureName()
 * @model
 * @generated
 */
public interface TestEClassForFeatureName extends EObject {
	/**
	 * Returns the value of the '<em><b>EField</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>EField</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>EField</em>' attribute.
	 * @see #setEField(String)
	 * @see org.eclipse.emf.parsley.tests.models.testmodels.TestmodelsPackage#getTestEClassForFeatureName_EField()
	 * @model
	 * @generated
	 */
	String getEField();

	/**
	 * Sets the value of the '{@link org.eclipse.emf.parsley.tests.models.testmodels.TestEClassForFeatureName#getEField <em>EField</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>EField</em>' attribute.
	 * @see #getEField()
	 * @generated
	 */
	void setEField(String value);

} // TestEClassForFeatureName
