/**
 * <copyright>
 * </copyright>
 *

 */
package org.eclipse.papyrus.operation.editor.xtext.operation;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>NUMBER LITERAL WITHOUT SUFFIX</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 * <li>{@link org.eclipse.papyrus.operation.editor.xtext.operation.NUMBER_LITERAL_WITHOUT_SUFFIX#getValue <em>Value</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.eclipse.papyrus.operation.editor.xtext.operation.OperationPackage#getNUMBER_LITERAL_WITHOUT_SUFFIX()
 * @model
 * @generated
 */
public interface NUMBER_LITERAL_WITHOUT_SUFFIX extends EObject
{
	/**
	 * Returns the value of the '<em><b>Value</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * 
	 * @return the value of the '<em>Value</em>' attribute.
	 * @see #setValue(String)
	 * @see org.eclipse.papyrus.operation.editor.xtext.operation.OperationPackage#getNUMBER_LITERAL_WITHOUT_SUFFIX_Value()
	 * @model
	 * @generated
	 */
	String getValue();

	/**
	 * Sets the value of the '{@link org.eclipse.papyrus.operation.editor.xtext.operation.NUMBER_LITERAL_WITHOUT_SUFFIX#getValue <em>Value</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * 
	 * @param value
	 *            the new value of the '<em>Value</em>' attribute.
	 * @see #getValue()
	 * @generated
	 */
	void setValue(String value);

} // NUMBER_LITERAL_WITHOUT_SUFFIX
