# Generated by Xpand using M2Make template.

# Meta model for 'EModel' package.

ifndef __model_metamodel_mk
__model_metamodel_mk := 1

include mk/model/metamodel_impl.mk

# Create meta objects.
EModel := \
	$(call eMetaModelCreate,EModel)

EModel_EObject := \
	$(call eMetaClassCreate,$(EModel),EModel_EObject)
EModel_EObject_eMetaClass := \
	$(call eMetaReferenceCreate,$(EModel_EObject),EModel_EObject_eMetaClass)
EModel_EObject_eMetaClassId := \
	$(call eMetaAttributeCreate,$(EModel_EObject),EModel_EObject_eMetaClassId)
EModel_EObject_eResource := \
	$(call eMetaAttributeCreate,$(EModel_EObject),EModel_EObject_eResource)

EModel_ENamedObject := \
	$(call eMetaClassCreate,$(EModel),EModel_ENamedObject)
EModel_ENamedObject_name := \
	$(call eMetaAttributeCreate,$(EModel_ENamedObject),EModel_ENamedObject_name)
EModel_ENamedObject_qualifiedName := \
	$(call eMetaAttributeCreate,$(EModel_ENamedObject),EModel_ENamedObject_qualifiedName)
EModel_ENamedObject_origin := \
	$(call eMetaAttributeCreate,$(EModel_ENamedObject),EModel_ENamedObject_origin)

EModel_ELink := \
	$(call eMetaClassCreate,$(EModel),EModel_ELink)
EModel_ELink_eMetaReference := \
	$(call eMetaReferenceCreate,$(EModel_ELink),EModel_ELink_eMetaReference)
EModel_ELink_eMetaReferenceId := \
	$(call eMetaAttributeCreate,$(EModel_ELink),EModel_ELink_eMetaReferenceId)
EModel_ELink_eResource := \
	$(call eMetaAttributeCreate,$(EModel_ELink),EModel_ELink_eResource)
EModel_ELink_name := \
	$(call eMetaAttributeCreate,$(EModel_ELink),EModel_ELink_name)
EModel_ELink_origin := \
	$(call eMetaAttributeCreate,$(EModel_ELink),EModel_ELink_origin)

EModel_EMetaModel := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaModel)
EModel_EMetaModel_eTypes := \
	$(call eMetaReferenceCreate,$(EModel_EMetaModel),EModel_EMetaModel_eTypes)

EModel_EMetaType := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaType)
EModel_EMetaType_instanceClass := \
	$(call eMetaAttributeCreate,$(EModel_EMetaType),EModel_EMetaType_instanceClass)
EModel_EMetaType_eMetaModel := \
	$(call eMetaReferenceCreate,$(EModel_EMetaType),EModel_EMetaType_eMetaModel)

EModel_EMetaClass := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaClass)
EModel_EMetaClass_isAbstract := \
	$(call eMetaAttributeCreate,$(EModel_EMetaClass),EModel_EMetaClass_isAbstract)
EModel_EMetaClass_isInterface := \
	$(call eMetaAttributeCreate,$(EModel_EMetaClass),EModel_EMetaClass_isInterface)
EModel_EMetaClass_eSuperTypes := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eSuperTypes)
EModel_EMetaClass_eAllSuperTypes := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllSuperTypes)
EModel_EMetaClass_eFeatures := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eFeatures)
EModel_EMetaClass_eAllFeatures := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllFeatures)
EModel_EMetaClass_eAttributes := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAttributes)
EModel_EMetaClass_eAllAttributes := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllAttributes)
EModel_EMetaClass_eReferences := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eReferences)
EModel_EMetaClass_eAllReferences := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllReferences)
EModel_EMetaClass_eAllCrossReferences := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllCrossReferences)
EModel_EMetaClass_eAllContainments := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllContainments)
EModel_EMetaClass_eAllLinkables := \
	$(call eMetaReferenceCreate,$(EModel_EMetaClass),EModel_EMetaClass_eAllLinkables)

EModel_EMetaPrimitive := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaPrimitive)

EModel_EMetaFeature := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaFeature)
EModel_EMetaFeature_isChangeable := \
	$(call eMetaAttributeCreate,$(EModel_EMetaFeature),EModel_EMetaFeature_isChangeable)
EModel_EMetaFeature_isDerived := \
	$(call eMetaAttributeCreate,$(EModel_EMetaFeature),EModel_EMetaFeature_isDerived)
EModel_EMetaFeature_instanceProperty := \
	$(call eMetaAttributeCreate,$(EModel_EMetaFeature),EModel_EMetaFeature_instanceProperty)
EModel_EMetaFeature_eContainingClass := \
	$(call eMetaReferenceCreate,$(EModel_EMetaFeature),EModel_EMetaFeature_eContainingClass)

EModel_EMetaReference := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaReference)
EModel_EMetaReference_isContainment := \
	$(call eMetaAttributeCreate,$(EModel_EMetaReference),EModel_EMetaReference_isContainment)
EModel_EMetaReference_isContainer := \
	$(call eMetaAttributeCreate,$(EModel_EMetaReference),EModel_EMetaReference_isContainer)
EModel_EMetaReference_isLinkable := \
	$(call eMetaAttributeCreate,$(EModel_EMetaReference),EModel_EMetaReference_isLinkable)
EModel_EMetaReference_isCrossReference := \
	$(call eMetaAttributeCreate,$(EModel_EMetaReference),EModel_EMetaReference_isCrossReference)
EModel_EMetaReference_eOpposite := \
	$(call eMetaReferenceCreate,$(EModel_EMetaReference),EModel_EMetaReference_eOpposite)
EModel_EMetaReference_eReferenceType := \
	$(call eMetaReferenceCreate,$(EModel_EMetaReference),EModel_EMetaReference_eReferenceType)

EModel_EMetaAttribute := \
	$(call eMetaClassCreate,$(EModel),EModel_EMetaAttribute)
EModel_EMetaAttribute_eAttributeType := \
	$(call eMetaReferenceCreate,$(EModel_EMetaAttribute),EModel_EMetaAttribute_eAttributeType)

EModel_ETyped := \
	$(call eMetaClassCreate,$(EModel),EModel_ETyped)
EModel_ETyped_isMany := \
	$(call eMetaAttributeCreate,$(EModel_ETyped),EModel_ETyped_isMany)
EModel_ETyped_eType := \
	$(call eMetaReferenceCreate,$(EModel_ETyped),EModel_ETyped_eType)

EModel_EFreezable := \
	$(call eMetaClassCreate,$(EModel),EModel_EFreezable)

# Initializes the objects and relations between them.
define __eModel_init
	$(call eMetaModelInit,$(EModel),EModel,)

	$(call eMetaClassInit,$(EModel_EObject),EObject,,)
	$(call eMetaReferenceInit,$(EModel_EObject_eMetaClass),eMetaClass,$(EModel_EMetaClass),,derived)
	$(call eMetaAttributeInit,$(EModel_EObject_eMetaClassId),eMetaClassId,derived)
	$(call eMetaAttributeInit,$(EModel_EObject_eResource),eResource,derived)

	$(call eMetaClassInit,$(EModel_ENamedObject),ENamedObject,,)
	$(call eMetaAttributeInit,$(EModel_ENamedObject_name),name,changeable)
	$(call eMetaAttributeInit,$(EModel_ENamedObject_qualifiedName),qualifiedName,derived)
	$(call eMetaAttributeInit,$(EModel_ENamedObject_origin),origin,changeable)

	$(call eMetaClassInit,$(EModel_ELink),ELink,,)
	$(call eMetaReferenceInit,$(EModel_ELink_eMetaReference),eMetaReference,$(EModel_EMetaReference),,derived)
	$(call eMetaAttributeInit,$(EModel_ELink_eMetaReferenceId),eMetaReferenceId,derived)
	$(call eMetaAttributeInit,$(EModel_ELink_eResource),eResource,derived)
	$(call eMetaAttributeInit,$(EModel_ELink_name),name,changeable)
	$(call eMetaAttributeInit,$(EModel_ELink_origin),origin,changeable)

	$(call eMetaClassInit,$(EModel_EMetaModel),EMetaModel,$(EModel_ENamedObject) $(EModel_EFreezable),)
	$(call eMetaReferenceInit,$(EModel_EMetaModel_eTypes),eTypes,$(EModel_EMetaType),$(EModel_EMetaType_eMetaModel),changeable many containment)

	$(call eMetaClassInit,$(EModel_EMetaType),EMetaType,$(EModel_ENamedObject) $(EModel_EFreezable),abstract)
	$(call eMetaAttributeInit,$(EModel_EMetaType_instanceClass),instanceClass,changeable)
	$(call eMetaReferenceInit,$(EModel_EMetaType_eMetaModel),eMetaModel,$(EModel_EMetaModel),$(EModel_EMetaModel_eTypes),container)

	$(call eMetaClassInit,$(EModel_EMetaClass),EMetaClass,$(EModel_EMetaType),)
	$(call eMetaAttributeInit,$(EModel_EMetaClass_isAbstract),abstract,changeable)
	$(call eMetaAttributeInit,$(EModel_EMetaClass_isInterface),interface,changeable)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eSuperTypes),eSuperTypes,$(EModel_EMetaClass),,changeable many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllSuperTypes),eAllSuperTypes,$(EModel_EMetaClass),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eFeatures),eFeatures,$(EModel_EMetaFeature),$(EModel_EMetaFeature_eContainingClass),changeable many containment)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllFeatures),eAllFeatures,$(EModel_EMetaFeature),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAttributes),eAttributes,$(EModel_EMetaAttribute),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllAttributes),eAllAttributes,$(EModel_EMetaAttribute),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eReferences),eReferences,$(EModel_EMetaReference),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllReferences),eAllReferences,$(EModel_EMetaReference),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllCrossReferences),eAllCrossReferences,$(EModel_EMetaReference),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllContainments),eAllContainments,$(EModel_EMetaReference),,derived many)
	$(call eMetaReferenceInit,$(EModel_EMetaClass_eAllLinkables),eAllLinkables,$(EModel_EMetaReference),,derived many)

	$(call eMetaClassInit,$(EModel_EMetaPrimitive),EMetaPrimitive,$(EModel_EMetaType),)

	$(call eMetaClassInit,$(EModel_EMetaFeature),EMetaFeature,$(EModel_ETyped) $(EModel_EFreezable),abstract)
	$(call eMetaAttributeInit,$(EModel_EMetaFeature_isChangeable),changeable,changeable)
	$(call eMetaAttributeInit,$(EModel_EMetaFeature_isDerived),derived,changeable)
	$(call eMetaAttributeInit,$(EModel_EMetaFeature_instanceProperty),instanceProperty,changeable)
	$(call eMetaReferenceInit,$(EModel_EMetaFeature_eContainingClass),eContainingClass,$(EModel_EMetaClass),$(EModel_EMetaClass_eFeatures),container)

	$(call eMetaClassInit,$(EModel_EMetaReference),EMetaReference,$(EModel_EMetaFeature),)
	$(call eMetaAttributeInit,$(EModel_EMetaReference_isContainment),containment,changeable)
	$(call eMetaAttributeInit,$(EModel_EMetaReference_isContainer),container,derived)
	$(call eMetaAttributeInit,$(EModel_EMetaReference_isLinkable),linkable,changeable)
	$(call eMetaAttributeInit,$(EModel_EMetaReference_isCrossReference),crossReference,derived)
	$(call eMetaReferenceInit,$(EModel_EMetaReference_eOpposite),eOpposite,$(EModel_EMetaReference),,changeable)
	$(call eMetaReferenceInit,$(EModel_EMetaReference_eReferenceType),eReferenceType,$(EModel_EMetaClass),,derived)

	$(call eMetaClassInit,$(EModel_EMetaAttribute),EMetaAttribute,$(EModel_EMetaFeature),)
	$(call eMetaReferenceInit,$(EModel_EMetaAttribute_eAttributeType),eAttributeType,$(EModel_EMetaPrimitive),,derived)

	$(call eMetaClassInit,$(EModel_ETyped),ETyped,$(EModel_ENamedObject),abstract)
	$(call eMetaAttributeInit,$(EModel_ETyped_isMany),many,changeable)
	$(call eMetaReferenceInit,$(EModel_ETyped_eType),eType,$(EModel_EMetaType),,changeable)

	$(call eMetaClassInit,$(EModel_EFreezable),EFreezable,,abstract)

endef # __eModel_init

# Binds objects to instance classes and features to properties.
define __eModel_bind
	$(call eMetaClassBind,$(EModel_EObject),EObject)
	$(call eMetaFeatureBind,$(EModel_EObject_eMetaClass),eMetaClass)
	$(call eMetaFeatureBind,$(EModel_EObject_eMetaClassId),eMetaClassId)
	$(call eMetaFeatureBind,$(EModel_EObject_eResource),eResource)

	$(call eMetaClassBind,$(EModel_ENamedObject),ENamedObject)
	$(call eMetaFeatureBind,$(EModel_ENamedObject_name),name)
	$(call eMetaFeatureBind,$(EModel_ENamedObject_qualifiedName),qualifiedName)
	$(call eMetaFeatureBind,$(EModel_ENamedObject_origin),origin)

	$(call eMetaClassBind,$(EModel_ELink),ELink)
	$(call eMetaFeatureBind,$(EModel_ELink_eMetaReference),eMetaReference)
	$(call eMetaFeatureBind,$(EModel_ELink_eMetaReferenceId),eMetaReferenceId)
	$(call eMetaFeatureBind,$(EModel_ELink_eResource),eResource)
	$(call eMetaFeatureBind,$(EModel_ELink_name),name)
	$(call eMetaFeatureBind,$(EModel_ELink_origin),origin)

	$(call eMetaClassBind,$(EModel_EMetaModel),EMetaModel)
	$(call eMetaFeatureBind,$(EModel_EMetaModel_eTypes),eTypes)

	$(call eMetaClassBind,$(EModel_EMetaType),EMetaType)
	$(call eMetaFeatureBind,$(EModel_EMetaType_instanceClass),instanceClass)
	$(call eMetaFeatureBind,$(EModel_EMetaType_eMetaModel),eMetaModel)

	$(call eMetaClassBind,$(EModel_EMetaClass),EMetaClass)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_isAbstract),isAbstract)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_isInterface),isInterface)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eSuperTypes),eSuperTypes)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllSuperTypes),eAllSuperTypes)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eFeatures),eFeatures)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllFeatures),eAllFeatures)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAttributes),eAttributes)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllAttributes),eAllAttributes)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eReferences),eReferences)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllReferences),eAllReferences)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllCrossReferences),eAllCrossReferences)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllContainments),eAllContainments)
	$(call eMetaFeatureBind,$(EModel_EMetaClass_eAllLinkables),eAllLinkables)

	$(call eMetaClassBind,$(EModel_EMetaPrimitive),EMetaPrimitive)

	$(call eMetaClassBind,$(EModel_EMetaFeature),EMetaFeature)
	$(call eMetaFeatureBind,$(EModel_EMetaFeature_isChangeable),isChangeable)
	$(call eMetaFeatureBind,$(EModel_EMetaFeature_isDerived),isDerived)
	$(call eMetaFeatureBind,$(EModel_EMetaFeature_instanceProperty),instanceProperty)
	$(call eMetaFeatureBind,$(EModel_EMetaFeature_eContainingClass),eContainingClass)

	$(call eMetaClassBind,$(EModel_EMetaReference),EMetaReference)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_isContainment),isContainment)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_isContainer),isContainer)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_isLinkable),isLinkable)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_isCrossReference),isCrossReference)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_eOpposite),eOpposite)
	$(call eMetaFeatureBind,$(EModel_EMetaReference_eReferenceType),eReferenceType)

	$(call eMetaClassBind,$(EModel_EMetaAttribute),EMetaAttribute)
	$(call eMetaFeatureBind,$(EModel_EMetaAttribute_eAttributeType),eAttributeType)

	$(call eMetaClassBind,$(EModel_ETyped),ETyped)
	$(call eMetaFeatureBind,$(EModel_ETyped_isMany),isMany)
	$(call eMetaFeatureBind,$(EModel_ETyped_eType),eType)

	$(call eMetaClassBind,$(EModel_EFreezable),EFreezable)

endef # __eModel_bind

$(def_all)

$(call __eModel_init)
$(call __eModel_bind)

$(call eMetaModelFreeze,$(EModel))

endif # __model_metamodel_mk

