blob: e86bfbdcdf6fbc3a43781a7c7964550425fe568c [file] [log] [blame]
source qvtocs : 'QVTOperationalCS.ecore#/',
basecs : '/resource/org.eclipse.ocl.xtext.base/model/BaseCS.ecore#/'
target qvto: '/resource/org.eclipse.qvto.examples.pivot.qvtoperational/model/QVTOperational.ecore#/',
ocl: '/resource/org.eclipse.ocl.pivot/model/Pivot.ecore#/'
-- NOT SUPPORTED YET extends '/resource/org.eclipse.ocl.xtext.base/model/BaseCS2AS.cs2as'
mappings {
map ocl::Model from TopLevelCS {
ownedPackages := let dummyPackage = ocl::Package {
-- NOT SUPPORTED YET name = '',
-- NOT SUPPORTED YET ownedClasses = ownedTypes.ast().oclAsType(ocl::Class) -- FIXME
} in dummyPackage->includingAll(ownedPackages.resolve);
}
map ocl::Class from QVToClassCS {
name := name;
ownedProperties := ownedProperties.resolve.oclAsType(ocl::Property); -- FIXME
ownedOperations := ownedOperations.resolve;
}
-- map qvto::VarParameter from OperationParameterDeclarationCS {
--
-- name := name
-- --kind = if direction = DirectionKindCS::inout then
-- -- qvto::DirectionKind::inout
-- -- else if direction = DirectionKindCS::out then
-- -- qvto::DirectionKind::out
-- -- else
-- -- qvto::DirectionKind::_in
-- -- endif endif
-- --initExpression = if (initPart.oclIsUndefined()) then
-- -- null
-- -- else
-- -- initPart.expression -- FIXME todo .ast()
-- -- endif
-- }
map ocl::Package from MetamodelCS {
name := name;
nsPrefix := name; -- QVTo spec doesn't provide concrete syntax for nsPrefix
URI := name; -- QVTo spec doesn't provide concrete syntax for nsURI. Build an internal protocol
ownedClasses := ownedClasses.resolve;
-- type = TODO
}
map qvto::ModelType from ModelTypeCS {
name := name;
}
map ocl::Property from ClassifierPropertyCS {
name := name;
isComposite := qualifiers->exists(x | x = 'composite');
-- type = TODO
}
map qvto::MappingOperation from MappingOperationCS {
name := name;
-- ownedParameter := signature.parameter.ast()
ownedParameters := ownedParameters.ast();
}
map qvto::OperationalTransformation from TransformationCS {
name := name;
modelParameter := ownedParameters.resolve.oclAsType(qvto::ModelParameter);
ownedOperations := ownedOperations.resolve;
isBlackbox := ownedQualifiers->exists(x | x = QualifierKindCS::blackbox);
isAbstract := ownedQualifiers->exists(x | x = QualifierKindCS::abstract);
-- refined := ast().lookupRelationalTransformation(refines);
}
map qvto::ModelParameter from ParameterDeclarationCS {
when containedInModule;
name := name;
type := resolve.lookup(ModelType, self.ownedType.oclAsType(TypedTypeRef2CS).ownedPathName); -- FIXME rework this
}
map qvto::VarParameter from ParameterDeclarationCS {
when notContainedInModule;
name := name;
--kind := if direction = DirectionKindCS::inout then
-- qvto::DirectionKind::inout
-- else if direction = DirectionKindCS::out then
-- qvto::DirectionKind::out
-- else
-- qvto::DirectionKind::_in
-- endif endif
--initExpression := if (initPart.oclIsUndefined()) then
-- null
-- else
-- initPart.expression -- FIXME todo .ast()
-- endif
}
map qvto::Library from QVToLibraryCS{
name := name;
ownedOperations := ownedOperations.resolve;
usedModelType := ownedParameters->collect(x | resolve.lookup(ModelType, x.ownedType.oclAsType(TypedTypeRef2CS).ownedPathName)); -- FIXME rework this
-- ownedParameters = ownedParameters.ast(), FIXME specification is wrong.
isBlackbox := ownedQualifiers->exists(x | x = QualifierKindCS::blackbox);
}
}
disambiguation {
ParameterDeclarationCS {
containedInModule := self.oclContainer().oclIsKindOf(ModuleCS);
notContainedInModule := not self.oclContainer().oclIsKindOf(ModuleCS);
}
}
nameresolution {
-- Module {
-- nested-scope
-- ownedProperties,ownedOperations,ownedVariable
-- occluding
-- imported moduleImport.module;
--
--
-- }
OperationalTransformation {
for modelParameter
nested-scope
ownedProperties,
ownedOperations,
--ownedOperations->excluding(ownedOperations->any(oclIsKindOf(EntryOperation)))) -- To discuss, can entry main() operation be called ?
--ownedClasses No Package anymore
--ownedPackages No Package anymore
--ownedTag
ownedVariable
occluding
imported moduleImport.module;
for all -- remaining
nested-scope
ownedProperties,
ownedOperations,
--ownedOperations->excluding(ownedOperations->any(oclIsKindOf(EntryOperation)))) -- To discuss, can entry main() operation be called ?
--ownedClasses No Package anymore
--ownedPackages No Package anymore
--ownedTag
ownedVariable,
modelParameter
occluding
imported moduleImport.module;
}
Library {
nested-scope
ownedProperties,
ownedOperations,
--ownedOperations->excluding(ownedOperations->any(oclIsKindOf(EntryOperation)))) -- To discuss, can entry main() operation be called ?
--ownedClasses No Package anymore
--ownedPackages No Package anymore
--ownedTag
ownedVariable
occluding
imported moduleImport.module;
}
ModelType {
named-element;
for additionalCondition
nested-scope
metamodel--,
-- ADD SELF VAR FROM WHERE ???? -> OMG fix
;
for all --remaining
nested-scope
metamodel;
}
ImperativeOperation {
for _body
nested-scope
_context,
result,
ownedParameters;
}
MappingOperation {
for _body
nested-scope
_context,
result,
ownedParameters;
for _when
nested-scope
_context,
ownedParameters;
for _where
nested-scope
_context,
result,
ownedParameters;
}
OperationBody {
for content
nested-scope
variable,
following content->selectByKind(imperativeocl::VariableInitExp).referredVariable;
}
ConstructorBody {
for content
nested-scope
variable,
following content->selectByKind(imperativeocl::VariableInitExp).referredVariable;
}
MappingBody {
for content
nested-scope
variable,
following content->selectByKind(imperativeocl::VariableInitExp).referredVariable;
for initSection
nested-scope
variable,
following initSection->selectByKind(imperativeocl::VariableInitExp).referredVariable;
for initSection
nested-scope
variable,
following initSection->selectByKind(imperativeocl::VariableInitExp).referredVariable;
}
ResolveExp {
for condition
nested-scope
_target;
}
}