/*******************************************************************************
* Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>.
* 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
******************************************************************************/
package org.axdt.avm.model.impl;
import java.util.List;
import org.axdt.avm.AvmEFactory;
import org.axdt.avm.AvmEPackage;
import org.axdt.avm.model.AvmClass;
import org.axdt.avm.model.AvmConstructor;
import org.axdt.avm.model.AvmDeclaredElement;
import org.axdt.avm.model.AvmDeclaredType;
import org.axdt.avm.model.AvmDeclaredTypeReference;
import org.axdt.avm.model.AvmDefinition;
import org.axdt.avm.model.AvmDefinitionContainer;
import org.axdt.avm.model.AvmElement;
import org.axdt.avm.model.AvmExecutable;
import org.axdt.avm.model.AvmField;
import org.axdt.avm.model.AvmGeneric;
import org.axdt.avm.model.AvmGenericReference;
import org.axdt.avm.model.AvmIdentifiable;
import org.axdt.avm.model.AvmInterface;
import org.axdt.avm.model.AvmMember;
import org.axdt.avm.model.AvmNamespace;
import org.axdt.avm.model.AvmNull;
import org.axdt.avm.model.AvmNullReference;
import org.axdt.avm.model.AvmOperation;
import org.axdt.avm.model.AvmPackage;
import org.axdt.avm.model.AvmParameter;
import org.axdt.avm.model.AvmProperty;
import org.axdt.avm.model.AvmReferable;
import org.axdt.avm.model.AvmType;
import org.axdt.avm.model.AvmTypeReference;
import org.axdt.avm.model.AvmVariable;
import org.axdt.avm.model.AvmVisibility;
import org.axdt.avm.model.AvmVoid;
import org.axdt.avm.model.AvmVoidReference;
import org.axdt.avm.naming.AvmQualifiedName;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EGenericType;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.ETypeParameter;
import org.eclipse.emf.ecore.impl.EPackageImpl;
/**
* <!-- begin-user-doc -->
* An implementation of the model <b>Package</b>.
* <!-- end-user-doc -->
* @generated
*/
public class AvmEPackageImpl extends EPackageImpl implements AvmEPackage {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmIdentifiableEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmDefinitionEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmDefinitionContainerEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmPackageEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmTypeEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmTypeReferenceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmVoidReferenceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmNullReferenceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmGenericReferenceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmDeclaredTypeReferenceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmReferableEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmDeclaredElementEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmDeclaredTypeEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmClassEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmInterfaceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmMemberEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmExecutableEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmVariableEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmFieldEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmPropertyEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmNamespaceEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmParameterEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmConstructorEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmOperationEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmElementEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmVoidEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmNullEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EClass avmGenericEClass = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EEnum avmVisibilityEEnum = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EDataType listEDataType = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EDataType avmQualifiedNameEDataType = null;
/**
* Creates an instance of the model <b>Package</b>, registered with
* {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
* package URI value.
* <p>Note: the correct way to create the package is via the static
* factory method {@link #init init()}, which also performs
* initialization of the package, or returns the registered package,
* if one already exists.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see org.eclipse.emf.ecore.EPackage.Registry
* @see org.axdt.avm.AvmEPackage#eNS_URI
* @see #init()
* @generated
*/
private AvmEPackageImpl() {
super(eNS_URI, AvmEFactory.eINSTANCE);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private static boolean isInited = false;
/**
* Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
*
* <p>This method is used to initialize {@link AvmEPackage#eINSTANCE} when that field is accessed.
* Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #eNS_URI
* @see #createPackageContents()
* @see #initializePackageContents()
* @generated
*/
public static AvmEPackage init() {
if (isInited) return (AvmEPackage)EPackage.Registry.INSTANCE.getEPackage(AvmEPackage.eNS_URI);
// Obtain or create and register package
AvmEPackageImpl theAvmEPackage = (AvmEPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof AvmEPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new AvmEPackageImpl());
isInited = true;
// Create package meta-data objects
theAvmEPackage.createPackageContents();
// Initialize created meta-data
theAvmEPackage.initializePackageContents();
// Mark meta-data to indicate it can't be changed
theAvmEPackage.freeze();
// Update the registry and return the package
EPackage.Registry.INSTANCE.put(AvmEPackage.eNS_URI, theAvmEPackage);
return theAvmEPackage;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmIdentifiable() {
return avmIdentifiableEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmDefinition() {
return avmDefinitionEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmDefinitionContainer() {
return avmDefinitionContainerEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmPackage() {
return avmPackageEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmType() {
return avmTypeEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmTypeReference() {
return avmTypeReferenceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmVoidReference() {
return avmVoidReferenceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmNullReference() {
return avmNullReferenceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmGenericReference() {
return avmGenericReferenceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmDeclaredTypeReference() {
return avmDeclaredTypeReferenceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EReference getAvmDeclaredTypeReference_Type() {
return (EReference)avmDeclaredTypeReferenceEClass.getEStructuralFeatures().get(0);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EReference getAvmDeclaredTypeReference_Parameter() {
return (EReference)avmDeclaredTypeReferenceEClass.getEStructuralFeatures().get(1);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmReferable() {
return avmReferableEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmDeclaredElement() {
return avmDeclaredElementEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmDeclaredType() {
return avmDeclaredTypeEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmClass() {
return avmClassEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmInterface() {
return avmInterfaceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmMember() {
return avmMemberEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmExecutable() {
return avmExecutableEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmVariable() {
return avmVariableEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmField() {
return avmFieldEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmProperty() {
return avmPropertyEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmNamespace() {
return avmNamespaceEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmParameter() {
return avmParameterEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmConstructor() {
return avmConstructorEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmOperation() {
return avmOperationEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmElement() {
return avmElementEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EAttribute getAvmElement_Asdoc() {
return (EAttribute)avmElementEClass.getEStructuralFeatures().get(0);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmVoid() {
return avmVoidEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmNull() {
return avmNullEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EClass getAvmGeneric() {
return avmGenericEClass;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EEnum getAvmVisibility() {
return avmVisibilityEEnum;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EDataType getList() {
return listEDataType;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EDataType getAvmQualifiedName() {
return avmQualifiedNameEDataType;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public AvmEFactory getAvmEFactory() {
return (AvmEFactory)getEFactoryInstance();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private boolean isCreated = false;
/**
* Creates the meta-model objects for the package. This method is
* guarded to have no affect on any invocation but its first.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void createPackageContents() {
if (isCreated) return;
isCreated = true;
// Create classes and their features
avmIdentifiableEClass = createEClass(AVM_IDENTIFIABLE);
avmDefinitionEClass = createEClass(AVM_DEFINITION);
avmDefinitionContainerEClass = createEClass(AVM_DEFINITION_CONTAINER);
avmPackageEClass = createEClass(AVM_PACKAGE);
avmTypeEClass = createEClass(AVM_TYPE);
avmTypeReferenceEClass = createEClass(AVM_TYPE_REFERENCE);
avmDeclaredElementEClass = createEClass(AVM_DECLARED_ELEMENT);
avmDeclaredTypeEClass = createEClass(AVM_DECLARED_TYPE);
avmClassEClass = createEClass(AVM_CLASS);
avmInterfaceEClass = createEClass(AVM_INTERFACE);
avmMemberEClass = createEClass(AVM_MEMBER);
avmExecutableEClass = createEClass(AVM_EXECUTABLE);
avmVariableEClass = createEClass(AVM_VARIABLE);
avmFieldEClass = createEClass(AVM_FIELD);
avmPropertyEClass = createEClass(AVM_PROPERTY);
avmNamespaceEClass = createEClass(AVM_NAMESPACE);
avmParameterEClass = createEClass(AVM_PARAMETER);
avmConstructorEClass = createEClass(AVM_CONSTRUCTOR);
avmOperationEClass = createEClass(AVM_OPERATION);
avmElementEClass = createEClass(AVM_ELEMENT);
createEAttribute(avmElementEClass, AVM_ELEMENT__ASDOC);
avmNullEClass = createEClass(AVM_NULL);
avmVoidEClass = createEClass(AVM_VOID);
avmGenericEClass = createEClass(AVM_GENERIC);
avmVoidReferenceEClass = createEClass(AVM_VOID_REFERENCE);
avmNullReferenceEClass = createEClass(AVM_NULL_REFERENCE);
avmGenericReferenceEClass = createEClass(AVM_GENERIC_REFERENCE);
avmDeclaredTypeReferenceEClass = createEClass(AVM_DECLARED_TYPE_REFERENCE);
createEReference(avmDeclaredTypeReferenceEClass, AVM_DECLARED_TYPE_REFERENCE__TYPE);
createEReference(avmDeclaredTypeReferenceEClass, AVM_DECLARED_TYPE_REFERENCE__PARAMETER);
avmReferableEClass = createEClass(AVM_REFERABLE);
// Create enums
avmVisibilityEEnum = createEEnum(AVM_VISIBILITY);
// Create data types
listEDataType = createEDataType(LIST);
avmQualifiedNameEDataType = createEDataType(AVM_QUALIFIED_NAME);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private boolean isInitialized = false;
/**
* Complete the initialization of the package and its meta-model. This
* method is guarded to have no affect on any invocation but its first.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void initializePackageContents() {
if (isInitialized) return;
isInitialized = true;
// Initialize package
setName(eNAME);
setNsPrefix(eNS_PREFIX);
setNsURI(eNS_URI);
// Create type parameters
addETypeParameter(listEDataType, "E");
// Set bounds for type parameters
// Add supertypes to classes
avmDefinitionEClass.getESuperTypes().add(this.getAvmIdentifiable());
avmPackageEClass.getESuperTypes().add(this.getAvmDefinitionContainer());
avmPackageEClass.getESuperTypes().add(this.getAvmDefinition());
avmPackageEClass.getESuperTypes().add(this.getAvmReferable());
avmTypeEClass.getESuperTypes().add(this.getAvmDefinition());
avmTypeEClass.getESuperTypes().add(this.getAvmReferable());
avmDeclaredElementEClass.getESuperTypes().add(this.getAvmDefinition());
avmDeclaredTypeEClass.getESuperTypes().add(this.getAvmDeclaredElement());
avmDeclaredTypeEClass.getESuperTypes().add(this.getAvmType());
avmClassEClass.getESuperTypes().add(this.getAvmDeclaredType());
avmInterfaceEClass.getESuperTypes().add(this.getAvmDeclaredType());
avmMemberEClass.getESuperTypes().add(this.getAvmDeclaredElement());
avmMemberEClass.getESuperTypes().add(this.getAvmReferable());
avmExecutableEClass.getESuperTypes().add(this.getAvmIdentifiable());
avmVariableEClass.getESuperTypes().add(this.getAvmReferable());
avmFieldEClass.getESuperTypes().add(this.getAvmMember());
avmFieldEClass.getESuperTypes().add(this.getAvmVariable());
avmPropertyEClass.getESuperTypes().add(this.getAvmField());
avmNamespaceEClass.getESuperTypes().add(this.getAvmMember());
avmParameterEClass.getESuperTypes().add(this.getAvmVariable());
avmConstructorEClass.getESuperTypes().add(this.getAvmMember());
avmConstructorEClass.getESuperTypes().add(this.getAvmExecutable());
avmOperationEClass.getESuperTypes().add(this.getAvmMember());
avmOperationEClass.getESuperTypes().add(this.getAvmExecutable());
avmNullEClass.getESuperTypes().add(this.getAvmType());
avmVoidEClass.getESuperTypes().add(this.getAvmType());
avmGenericEClass.getESuperTypes().add(this.getAvmType());
avmVoidReferenceEClass.getESuperTypes().add(this.getAvmTypeReference());
avmNullReferenceEClass.getESuperTypes().add(this.getAvmTypeReference());
avmGenericReferenceEClass.getESuperTypes().add(this.getAvmTypeReference());
avmDeclaredTypeReferenceEClass.getESuperTypes().add(this.getAvmTypeReference());
avmReferableEClass.getESuperTypes().add(this.getAvmIdentifiable());
// Initialize classes and features; add operations and parameters
initEClass(avmIdentifiableEClass, AvmIdentifiable.class, "AvmIdentifiable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmIdentifiableEClass, ecorePackage.getEString(), "getName", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmDefinitionEClass, AvmDefinition.class, "AvmDefinition", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmDefinitionEClass, ecorePackage.getEString(), "getQualifier", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmDefinitionEClass, ecorePackage.getEString(), "getCanonicalName", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmDefinitionEClass, this.getAvmQualifiedName(), "getQualifiedName", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmDefinitionContainerEClass, AvmDefinitionContainer.class, "AvmDefinitionContainer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
EOperation op = addEOperation(avmDefinitionContainerEClass, null, "getTypes", 0, 1, IS_UNIQUE, IS_ORDERED);
ETypeParameter t1 = addETypeParameter(op, "T");
EGenericType g1 = createEGenericType(this.getAvmDeclaredType());
t1.getEBounds().add(g1);
g1 = createEGenericType(this.getList());
EGenericType g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
initEOperation(op, g1);
op = addEOperation(avmDefinitionContainerEClass, null, "getMembers", 0, 1, IS_UNIQUE, IS_ORDERED);
t1 = addETypeParameter(op, "T");
g1 = createEGenericType(this.getAvmMember());
t1.getEBounds().add(g1);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
initEOperation(op, g1);
initEClass(avmPackageEClass, AvmPackage.class, "AvmPackage", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmTypeEClass, AvmType.class, "AvmType", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmTypeEClass, ecorePackage.getEBoolean(), "isDynamic", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmTypeEClass, ecorePackage.getEBoolean(), "isFinal", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmTypeEClass, ecorePackage.getEBoolean(), "isInterface", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmTypeEClass, ecorePackage.getEBoolean(), "isClass", 0, 1, IS_UNIQUE, IS_ORDERED);
op = addEOperation(avmTypeEClass, this.getAvmType(), "calculateCommonType", 0, 1, IS_UNIQUE, IS_ORDERED);
addEParameter(op, this.getAvmType(), "other", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmTypeReferenceEClass, AvmTypeReference.class, "AvmTypeReference", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmTypeReferenceEClass, this.getAvmType(), "getType", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmDeclaredElementEClass, AvmDeclaredElement.class, "AvmDeclaredElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmDeclaredElementEClass, ecorePackage.getEString(), "getQualifier", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmDeclaredElementEClass, ecorePackage.getEString(), "getName", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmDeclaredElementEClass, this.getAvmVisibility(), "getVisibility", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmDeclaredTypeEClass, AvmDeclaredType.class, "AvmDeclaredType", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
op = addEOperation(avmDeclaredTypeEClass, null, "getSuperTypes", 0, 1, IS_UNIQUE, IS_ORDERED);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(this.getAvmTypeReference());
g1.getETypeArguments().add(g2);
initEOperation(op, g1);
addEOperation(avmDeclaredTypeEClass, this.getAvmTypeReference(), "getExtendedClass", 0, 1, IS_UNIQUE, IS_ORDERED);
op = addEOperation(avmDeclaredTypeEClass, null, "getExtendedInterfaces", 0, 1, IS_UNIQUE, IS_ORDERED);
t1 = addETypeParameter(op, "T");
g1 = createEGenericType(this.getAvmTypeReference());
t1.getEBounds().add(g1);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
initEOperation(op, g1);
op = addEOperation(avmDeclaredTypeEClass, null, "getMembers", 0, 1, IS_UNIQUE, IS_ORDERED);
t1 = addETypeParameter(op, "T");
g1 = createEGenericType(this.getAvmMember());
t1.getEBounds().add(g1);
g1 = createEGenericType(this.getList());
g2 = createEGenericType(t1);
g1.getETypeArguments().add(g2);
initEOperation(op, g1);
initEClass(avmClassEClass, AvmClass.class, "AvmClass", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmInterfaceEClass, AvmInterface.class, "AvmInterface", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmMemberEClass, AvmMember.class, "AvmMember", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmMemberEClass, ecorePackage.getEBoolean(), "isStatic", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmExecutableEClass, AvmExecutable.class, "AvmExecutable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
op = addEOperation(avmExecutableEClass, null, "getParameters", 0, -1, IS_UNIQUE, IS_ORDERED);
t1 = addETypeParameter(op, "T");
g1 = createEGenericType(this.getAvmParameter());
t1.getEBounds().add(g1);
g1 = createEGenericType(t1);
initEOperation(op, g1);
addEOperation(avmExecutableEClass, this.getAvmTypeReference(), "getReturnType", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmVariableEClass, AvmVariable.class, "AvmVariable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmVariableEClass, this.getAvmTypeReference(), "getType", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmVariableEClass, ecorePackage.getEString(), "getName", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmFieldEClass, AvmField.class, "AvmField", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmFieldEClass, ecorePackage.getEBoolean(), "isConstant", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmFieldEClass, this.getAvmTypeReference(), "getType", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmPropertyEClass, AvmProperty.class, "AvmProperty", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmPropertyEClass, ecorePackage.getEBoolean(), "isReadonly", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmPropertyEClass, ecorePackage.getEBoolean(), "isWriteonly", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmPropertyEClass, this.getAvmOperation(), "getGetter", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmPropertyEClass, this.getAvmOperation(), "getSetter", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmNamespaceEClass, AvmNamespace.class, "AvmNamespace", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmParameterEClass, AvmParameter.class, "AvmParameter", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmParameterEClass, ecorePackage.getEBoolean(), "isRest", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmConstructorEClass, AvmConstructor.class, "AvmConstructor", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmOperationEClass, AvmOperation.class, "AvmOperation", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
addEOperation(avmOperationEClass, ecorePackage.getEBoolean(), "isFinal", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmOperationEClass, ecorePackage.getEBoolean(), "isNative", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(avmOperationEClass, ecorePackage.getEBoolean(), "isOverride", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(avmElementEClass, AvmElement.class, "AvmElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getAvmElement_Asdoc(), ecorePackage.getEString(), "asdoc", null, 0, 1, AvmElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(avmNullEClass, AvmNull.class, "AvmNull", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmVoidEClass, AvmVoid.class, "AvmVoid", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmGenericEClass, AvmGeneric.class, "AvmGeneric", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmVoidReferenceEClass, AvmVoidReference.class, "AvmVoidReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmNullReferenceEClass, AvmNullReference.class, "AvmNullReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmGenericReferenceEClass, AvmGenericReference.class, "AvmGenericReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(avmDeclaredTypeReferenceEClass, AvmDeclaredTypeReference.class, "AvmDeclaredTypeReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getAvmDeclaredTypeReference_Type(), this.getAvmType(), null, "type", null, 0, 1, AvmDeclaredTypeReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getAvmDeclaredTypeReference_Parameter(), this.getAvmType(), null, "parameter", null, 0, 1, AvmDeclaredTypeReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(avmReferableEClass, AvmReferable.class, "AvmReferable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
// Initialize enums and add enum literals
initEEnum(avmVisibilityEEnum, AvmVisibility.class, "AvmVisibility");
addEEnumLiteral(avmVisibilityEEnum, AvmVisibility.PUBLIC);
addEEnumLiteral(avmVisibilityEEnum, AvmVisibility.INTERNAL);
addEEnumLiteral(avmVisibilityEEnum, AvmVisibility.PROTECTED);
addEEnumLiteral(avmVisibilityEEnum, AvmVisibility.PRIVATE);
// Initialize data types
initEDataType(listEDataType, List.class, "List", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
initEDataType(avmQualifiedNameEDataType, AvmQualifiedName.class, "AvmQualifiedName", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
// Create resource
createResource(eNS_URI);
}
} //AvmEPackageImpl