blob: a9d313519f7754006f5ba598ed6d3870ee99d4db [file] [log] [blame]
/**
* Copyright (c) 2009, 2012 Borland Software Corporation & 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:
* Artem Tikhomirov (Borland) - initial API and implementation
* Guillaume Hillairet (Montages A.G.)
*/
library ValueExpressions;
modeltype GMFMAP uses mappings('http://www.eclipse.org/gmf/2006/mappings');
modeltype GMFGEN uses gmfgen('http://www.eclipse.org/gmf/2009/GenModel');
--
-- ValueExpression
--
mapping GMFMAP::ValueExpression::createValueExpression(): GMFGEN::ValueExpression
disjuncts
GMFMAP::ValueExpression::createGenValueExpression, GMFMAP::Constraint::createConstraint
{}
mapping GMFMAP::ValueExpression::createGenValueExpression(): GMFGEN::ValueExpression
when {
self.oclIsTypeOf(ValueExpression)
}
{
body := self.body;
}
mapping GMFMAP::Constraint::createConstraint(): GMFGEN::GenConstraint {
body := self.body;
}
mapping GMFMAP::ValueExpression::createExpressionProvider(): GenExpressionProviderBase {
init {
switch {
case (self.language = Language::java) { result := object GenJavaExpressionProvider {} };
case (self.language = Language::ocl) { result := object GenExpressionInterpreter { language := self.language() } };
case (self.language = Language::regexp) { result := object GenExpressionInterpreter { language := self.language() } };
case (self.language = Language::nregexp) { result := object GenExpressionInterpreter { language := self.language() } };
case (self.language = Language::_literal) { result := object GenLiteralExpressionProvider {} };
else { result := object GenExpressionInterpreter {}; }
};
}
expressions += ValueExpression.allInstances()->select(e | e.language = self.language)->map createValueExpression();
}
--
-- Constraints and initializers
--
mapping GMFMAP::LinkConstraints::structure() : GMFGEN::GenLinkConstraints {
sourceEnd := self.sourceEnd.map createConstraint();
targetEnd := self.targetEnd.map createConstraint();
}
--
-- Helpers
--
helper GMFMAP::ValueExpression::language(): GenLanguage =
switch {
case (self.language = Language::java) GenLanguage::java;
case (self.language = Language::ocl) GenLanguage::ocl;
case (self.language = Language::regexp) GenLanguage::regexp;
case (self.language = Language::nregexp) GenLanguage::nregexp;
case (self.language = Language::_literal) return GenLanguage::_literal;
else GenLanguage::ocl;
};