/**
* Copyright (c) 2002-2010 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.ecore;
import org.eclipse.emf.common.util.EList;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>EClass</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.emf.ecore.EClass#isAbstract <em>Abstract</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#isInterface <em>Interface</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getESuperTypes <em>ESuper Types</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEOperations <em>EOperations</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllAttributes <em>EAll Attributes</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllReferences <em>EAll References</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEReferences <em>EReferences</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAttributes <em>EAttributes</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllContainments <em>EAll Containments</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllOperations <em>EAll Operations</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllStructuralFeatures <em>EAll Structural Features</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllSuperTypes <em>EAll Super Types</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEIDAttribute <em>EID Attribute</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEStructuralFeatures <em>EStructural Features</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEGenericSuperTypes <em>EGeneric Super Types</em>}</li>
* <li>{@link org.eclipse.emf.ecore.EClass#getEAllGenericSuperTypes <em>EAll Generic Super Types</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.emf.ecore.EcorePackage#getEClass()
* @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes DisjointFeatureAndOperationSignatures'"
* @generated
*/
public interface EClass extends EClassifier
{
/**
* Returns the value of the '<em><b>Abstract</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* It represents whether the class is abstract in the Java sense.
* For an abstract class,
* the generated implementation class will be abstract,
* and the generated factory will not provide support for creating an instance.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Abstract</em>' attribute.
* @see #setAbstract(boolean)
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_Abstract()
* @model
* @generated
*/
boolean isAbstract();
/**
* Sets the value of the '{@link org.eclipse.emf.ecore.EClass#isAbstract <em>Abstract</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Abstract</em>' attribute.
* @see #isAbstract()
* @generated
*/
void setAbstract(boolean value);
/**
* Returns the value of the '<em><b>Interface</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* It represents whether the class is an interface in the Java sense.
* For an interface class,
* there will be no generated implementation class.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Interface</em>' attribute.
* @see #setInterface(boolean)
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_Interface()
* @model
* @generated
*/
boolean isInterface();
/**
* Sets the value of the '{@link org.eclipse.emf.ecore.EClass#isInterface <em>Interface</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Interface</em>' attribute.
* @see #isInterface()
* @generated
*/
void setInterface(boolean value);
/**
* Returns the value of the '<em><b>ESuper Types</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EClass}.
* <!-- begin-user-doc -->
* <p>
* It represents the super types in the Java sense, i.e., the super class and the direct implemented interfaces,
* and is derived from the {@link #getEGenericSuperTypes() generic super types}.
* </p>
* @see #getEGenericSuperTypes()
* @see #getEAllSuperTypes()
* @ignore
* <!-- end-user-doc -->
* @return the value of the '<em>ESuper Types</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_ESuperTypes()
* @model unsettable="true" suppressedIsSetVisibility="true" suppressedUnsetVisibility="true"
* @generated
*/
EList<EClass> getESuperTypes();
/**
* Returns the value of the '<em><b>EAll Super Types</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EClass}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all inherited {@link #getESuperTypes() super types}
* and is derived from the {@link #getEAllGenericSuperTypes() generic super types}.
* </p>
* @see #getESuperTypes()
* @see #getEAllGenericSuperTypes()
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Super Types</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllSuperTypes()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EClass> getEAllSuperTypes();
/**
* Returns the value of the '<em><b>EID Attribute</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* It represents the attribute that will be used as the ID of an instance.
* @see org.eclipse.emf.ecore.EAttribute#isID()
* @ignore
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EID Attribute</em>' reference.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EIDAttribute()
* @model resolveProxies="false" transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EAttribute getEIDAttribute();
/**
* Returns the value of the '<em><b>EStructural Features</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EStructuralFeature}.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.ecore.EStructuralFeature#getEContainingClass <em>EContaining Class</em>}'.
* <!-- begin-user-doc -->
* <p>
* It represents the modeled features local to this class.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EStructural Features</em>' containment reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EStructuralFeatures()
* @see org.eclipse.emf.ecore.EStructuralFeature#getEContainingClass
* @model opposite="eContainingClass" containment="true"
* @generated
*/
EList<EStructuralFeature> getEStructuralFeatures();
/**
* Returns the value of the '<em><b>EGeneric Super Types</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EGenericType}.
* <!-- begin-user-doc -->
* <p>
* It represents the generic super types in the Java sense, i.e., the super class and the direct implemented interfaces.
* The {@link #getESuperTypes() super types} list is derived from this one, i.e., it represents the {@link EGenericType#getERawType() erasure} of each generic super type.
* </p>
* @see #getESuperTypes()
* @since 2.3
* <!-- end-user-doc -->
* @return the value of the '<em>EGeneric Super Types</em>' containment reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EGenericSuperTypes()
* @model containment="true" unsettable="true" suppressedIsSetVisibility="true" suppressedUnsetVisibility="true"
* @generated
*/
EList<EGenericType> getEGenericSuperTypes();
/**
* Returns the value of the '<em><b>EAll Generic Super Types</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EGenericType}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all inherited {@link #getEGenericSuperTypes() generic super types}.
* The {@link #getEAllSuperTypes() all super types} list is derived from this one, i.e., it represents the {@link EGenericType#getERawType() erasure} of each generic super type.
* </p>
* @see #getEGenericSuperTypes()
* @see #getEAllSuperTypes()
* @since 2.3
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Generic Super Types</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllGenericSuperTypes()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EGenericType> getEAllGenericSuperTypes();
/**
* Returns the value of the '<em><b>EAttributes</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EAttribute}.
* <!-- begin-user-doc -->
* <p>
* It represents the modeled attributes local to this class.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAttributes</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAttributes()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EAttribute> getEAttributes();
/**
* Returns the value of the '<em><b>EAll Attributes</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EAttribute}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all attributes, inherited and local.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Attributes</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllAttributes()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EAttribute> getEAllAttributes();
/**
* Returns the value of the '<em><b>EReferences</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EReference}.
* <!-- begin-user-doc -->
* <p>
* It represents the modeled references local to this class.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EReferences</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EReferences()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EReference> getEReferences();
/**
* Returns the value of the '<em><b>EAll References</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EReference}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all references, inherited and local.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAll References</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllReferences()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EReference> getEAllReferences();
/**
* Returns the value of the '<em><b>EAll Containments</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EReference}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all references, inherited and local,
* that are {@link EReference#isContainment containments}.
* These features will determine the {@link EObject#eContents} of an instance.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Containments</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllContainments()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EReference> getEAllContainments();
/**
* Returns the value of the '<em><b>EAll Structural Features</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EStructuralFeature}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all attributes and references, inherited and local.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Structural Features</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllStructuralFeatures()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EStructuralFeature> getEAllStructuralFeatures();
/**
* Returns the value of the '<em><b>EOperations</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EOperation}.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.ecore.EOperation#getEContainingClass <em>EContaining Class</em>}'.
* <!-- begin-user-doc -->
* <p>
* It represents the modeled operations local to this class.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EOperations</em>' containment reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EOperations()
* @see org.eclipse.emf.ecore.EOperation#getEContainingClass
* @model opposite="eContainingClass" containment="true"
* @generated
*/
EList<EOperation> getEOperations();
/**
* Returns the value of the '<em><b>EAll Operations</b></em>' reference list.
* The list contents are of type {@link org.eclipse.emf.ecore.EOperation}.
* <!-- begin-user-doc -->
* <p>
* It represents the closure of all operations, inherited and local.
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>EAll Operations</em>' reference list.
* @see org.eclipse.emf.ecore.EcorePackage#getEClass_EAllOperations()
* @model transient="true" changeable="false" volatile="true" derived="true"
* @generated
*/
EList<EOperation> getEAllOperations();
/**
* <!-- begin-user-doc -->
* Returns whether this class is the same as, or a super type of, some other class.
* @param someClass some other class.
* @return whether this class is the same as, or a super type of, some other class.
* @see Class#isAssignableFrom
* @ignore
* <!-- end-user-doc -->
* @model
* @generated
*/
boolean isSuperTypeOf(EClass someClass);
/**
* <!-- begin-user-doc -->
* Returns the number of features.
* @return the number of features.
* <!-- end-user-doc -->
* @model kind="operation"
* @generated
*/
int getFeatureCount();
/**
* <!-- begin-user-doc -->
* Returns the feature with this ID.
* @return the feature with this ID.
* <!-- end-user-doc -->
* @model
* @generated
*/
EStructuralFeature getEStructuralFeature(int featureID);
/**
* <!-- begin-user-doc -->
* Returns the feature with this name.
* @return the feature with this name.
* <!-- end-user-doc -->
* @model
* @generated
*/
EStructuralFeature getEStructuralFeature(String featureName);
/**
* <!-- begin-user-doc -->
* Returns the number of operations.
* @return the number of operations.
* @since 2.6
* <!-- end-user-doc -->
* @model kind="operation"
* @generated
*/
int getOperationCount();
/**
* <!-- begin-user-doc -->
* Returns the operation with this ID.
* @return the operation with this ID.
* @since 2.6
* <!-- end-user-doc -->
* @model
* @generated
*/
EOperation getEOperation(int operationID);
/**
* <!-- begin-user-doc -->
* Returns the ID of the operation relative to this class, or -1 if the operation is not in this class.
* @return the ID of the operation relative to this class, or -1 if the operation is not in this class.
* @since 2.6
* <!-- end-user-doc -->
* @model
* @generated
*/
int getOperationID(EOperation operation);
/**
* <!-- begin-user-doc -->
* Returns the operation that overrides this operation.
* @return the operation that overrides this operation.
* @since 2.6
* <!-- end-user-doc -->
* @model
* @generated
*/
EOperation getOverride(EOperation operation);
/**
* <!-- begin-user-doc -->
* Returns the ID of the feature relative to this class, or -1 if the feature is not in this class.
* @return the ID of the feature relative to this class, or -1 if the feature is not in this class.
* <!-- end-user-doc -->
* @model
* @generated
*/
int getFeatureID(EStructuralFeature feature);
}