Search in sources :

Example 1 with AbstractDefinition

use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.

the class Calculator method _internalEvaluate.

/**
 * @param values the currently known values by name
 */
protected BigDecimal _internalEvaluate(final FunctionCall e, final ImmutableMap<String, BigDecimal> values) {
    AbstractDefinition _func = e.getFunc();
    if ((_func instanceof DeclaredParameter)) {
        return values.get(e.getFunc().getName());
    }
    AbstractDefinition _func_1 = e.getFunc();
    final AbstractDefinition d = _func_1;
    boolean _matched = false;
    if (d instanceof Definition) {
        _matched = true;
        HashMap<String, BigDecimal> params = Maps.<String, BigDecimal>newHashMap();
        for (int i = 0; (i < e.getArgs().size()); i++) {
            {
                DeclaredParameter declaredParameter = ((Definition) d).getArgs().get(i);
                BigDecimal evaluate = this.evaluate(e.getArgs().get(i), values);
                params.put(declaredParameter.getName(), evaluate);
            }
        }
        return this.evaluate(((Definition) d).getExpr(), ImmutableMap.<String, BigDecimal>copyOf(params));
    }
    return null;
}
Also used : Definition(org.eclipse.xtext.example.arithmetics.arithmetics.Definition) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition) DeclaredParameter(org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter) BigDecimal(java.math.BigDecimal)

Example 2 with AbstractDefinition

use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.

the class ArithmeticsCallHierarchyBuilder method findDeclaration.

@Override
protected IEObjectDescription findDeclaration(URI objectURI) {
    IEObjectDescription description = this.getDescription(objectURI);
    EClass eClass = null;
    if (description != null) {
        eClass = description.getEClass();
    }
    if (this.isDefinition(eClass)) {
        return description;
    }
    return readOnly(objectURI, (EObject object) -> {
        AbstractDefinition abstractDefinition = EcoreUtil2.getContainerOfType(object, AbstractDefinition.class);
        return getDescription(abstractDefinition);
    });
}
Also used : EClass(org.eclipse.emf.ecore.EClass) EObject(org.eclipse.emf.ecore.EObject) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition) IEObjectDescription(org.eclipse.xtext.resource.IEObjectDescription)

Example 3 with AbstractDefinition

use of org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition in project xtext-eclipse by eclipse.

the class FunctionCallImpl method setFunc.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
@Override
public void setFunc(AbstractDefinition newFunc) {
    AbstractDefinition oldFunc = func;
    func = newFunc;
    if (eNotificationRequired())
        eNotify(new ENotificationImpl(this, Notification.SET, ArithmeticsPackage.FUNCTION_CALL__FUNC, oldFunc, func));
}
Also used : ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl) AbstractDefinition(org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition)

Aggregations

AbstractDefinition (org.eclipse.xtext.example.arithmetics.arithmetics.AbstractDefinition)3 BigDecimal (java.math.BigDecimal)1 EClass (org.eclipse.emf.ecore.EClass)1 EObject (org.eclipse.emf.ecore.EObject)1 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)1 DeclaredParameter (org.eclipse.xtext.example.arithmetics.arithmetics.DeclaredParameter)1 Definition (org.eclipse.xtext.example.arithmetics.arithmetics.Definition)1 IEObjectDescription (org.eclipse.xtext.resource.IEObjectDescription)1