blob: 3f7000046cf29273854bd9bb9e8c3775dc3c8987 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation.
* 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:
* Cameron Bateman/Oracle - initial API and implementation
*
********************************************************************************/
package org.eclipse.jst.jsf.validation.internal.el.operators;
import java.math.BigDecimal;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.jst.jsf.common.internal.types.ValueType;
import org.eclipse.jst.jsf.validation.internal.el.diagnostics.DiagnosticFactory;
/**
* Super for all arithmetic binary operators -- +, -, *,/,%
*
* @author cbateman
*
*/
/*package*/ abstract class ArithmeticBinaryOperator extends BinaryOperator
{
ArithmeticBinaryOperator(DiagnosticFactory diagnosticFactory)
{
super(diagnosticFactory);
}
public abstract ValueType performOperation(ValueType firstArg, ValueType secondArg);
public abstract Diagnostic validate(ValueType firstArg, ValueType secondArg);
/**
* @param firstArg
* @param secondArg
* @return the result of firstArg op secondArg
*/
protected abstract Long doRealOperation(Long firstArg, Long secondArg);
/**
* @param firstArg
* @param secondArg
* @return the result of firstArg op secondArg
*/
protected abstract Double doRealOperation(Double firstArg, Double secondArg);
/**
* @param firstArg
* @param secondArg
* @return the result of firstArg op secondArg
*/
protected abstract BigDecimal doRealOperation(BigDecimal firstArg, BigDecimal secondArg);
/**
* @return human-readable name of the operator
*/
protected abstract String getOperatorName();
}