/**
* <copyright>
* </copyright>
*
* $Id$
*/
package orgomg.cwm.objectmodel.core;
import org.eclipse.emf.common.util.EList;
import orgomg.cwm.analysis.transformation.ClassifierFeatureMap;
import orgomg.cwm.analysis.transformation.FeatureMap;
import orgomg.cwm.foundation.expressions.FeatureNode;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Feature</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A feature is a property, like attribute or operation, which is encapsulated within a Classifier.
*
* In the metamodel, a Feature declares a structural or behavioral characteristic of an instance of a Classifier or of the Classifier itself. Feature is an abstract metaclass.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link orgomg.cwm.objectmodel.core.Feature#getOwnerScope <em>Owner Scope</em>}</li>
* <li>{@link orgomg.cwm.objectmodel.core.Feature#getOwner <em>Owner</em>}</li>
* <li>{@link orgomg.cwm.objectmodel.core.Feature#getFeatureNode <em>Feature Node</em>}</li>
* <li>{@link orgomg.cwm.objectmodel.core.Feature#getFeatureMap <em>Feature Map</em>}</li>
* <li>{@link orgomg.cwm.objectmodel.core.Feature#getCfMap <em>Cf Map</em>}</li>
* </ul>
* </p>
*
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature()
* @model abstract="true"
* @generated
*/
public interface Feature extends ModelElement {
/**
* Returns the value of the '<em><b>Owner Scope</b></em>' attribute.
* The literals are from the enumeration {@link orgomg.cwm.objectmodel.core.ScopeKind}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies whether the Feature appears in every instance of the Classifier or whether it appears only once for the entire Classifier.
* <!-- end-model-doc -->
* @return the value of the '<em>Owner Scope</em>' attribute.
* @see orgomg.cwm.objectmodel.core.ScopeKind
* @see #setOwnerScope(ScopeKind)
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature_OwnerScope()
* @model
* @generated
*/
ScopeKind getOwnerScope();
/**
* Sets the value of the '{@link orgomg.cwm.objectmodel.core.Feature#getOwnerScope <em>Owner Scope</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Owner Scope</em>' attribute.
* @see orgomg.cwm.objectmodel.core.ScopeKind
* @see #getOwnerScope()
* @generated
*/
void setOwnerScope(ScopeKind value);
/**
* Returns the value of the '<em><b>Owner</b></em>' container reference.
* It is bidirectional and its opposite is '{@link orgomg.cwm.objectmodel.core.Classifier#getFeature <em>Feature</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Identifies the Classifier instance that owns the Feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Owner</em>' container reference.
* @see #setOwner(Classifier)
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature_Owner()
* @see orgomg.cwm.objectmodel.core.Classifier#getFeature
* @model opposite="feature"
* @generated
*/
Classifier getOwner();
/**
* Sets the value of the '{@link orgomg.cwm.objectmodel.core.Feature#getOwner <em>Owner</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Owner</em>' container reference.
* @see #getOwner()
* @generated
*/
void setOwner(Classifier value);
/**
* Returns the value of the '<em><b>Feature Node</b></em>' reference list.
* The list contents are of type {@link orgomg.cwm.foundation.expressions.FeatureNode}.
* It is bidirectional and its opposite is '{@link orgomg.cwm.foundation.expressions.FeatureNode#getFeature <em>Feature</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Identifies the FeatureNode instances that use a particular Feature.
* <!-- end-model-doc -->
* @return the value of the '<em>Feature Node</em>' reference list.
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature_FeatureNode()
* @see orgomg.cwm.foundation.expressions.FeatureNode#getFeature
* @model opposite="feature"
* @generated
*/
EList<FeatureNode> getFeatureNode();
/**
* Returns the value of the '<em><b>Feature Map</b></em>' reference list.
* The list contents are of type {@link orgomg.cwm.analysis.transformation.FeatureMap}.
* It is bidirectional and its opposite is '{@link orgomg.cwm.analysis.transformation.FeatureMap#getTarget <em>Target</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Identifies the FeatureMap
* <!-- end-model-doc -->
* @return the value of the '<em>Feature Map</em>' reference list.
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature_FeatureMap()
* @see orgomg.cwm.analysis.transformation.FeatureMap#getTarget
* @model opposite="target"
* @generated
*/
EList<FeatureMap> getFeatureMap();
/**
* Returns the value of the '<em><b>Cf Map</b></em>' reference list.
* The list contents are of type {@link orgomg.cwm.analysis.transformation.ClassifierFeatureMap}.
* It is bidirectional and its opposite is '{@link orgomg.cwm.analysis.transformation.ClassifierFeatureMap#getFeature <em>Feature</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Identifies the ClassifierFeatureMap
* <!-- end-model-doc -->
* @return the value of the '<em>Cf Map</em>' reference list.
* @see orgomg.cwm.objectmodel.core.CorePackage#getFeature_CfMap()
* @see orgomg.cwm.analysis.transformation.ClassifierFeatureMap#getFeature
* @model opposite="feature"
* @generated
*/
EList<ClassifierFeatureMap> getCfMap();
} // Feature