blob: 44a45b3706abbff6847a8a6a53d3404093c86911 [file] [log] [blame]
/*
* Copyright (c) 2013, 2014 Eike Stepper (Berlin, Germany) and 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.expressions.util;
import org.eclipse.emf.cdo.expressions.BooleanValue;
import org.eclipse.emf.cdo.expressions.ByteValue;
import org.eclipse.emf.cdo.expressions.CharValue;
import org.eclipse.emf.cdo.expressions.DoubleValue;
import org.eclipse.emf.cdo.expressions.Expression;
import org.eclipse.emf.cdo.expressions.ExpressionsFactory;
import org.eclipse.emf.cdo.expressions.FloatValue;
import org.eclipse.emf.cdo.expressions.FunctionInvocation;
import org.eclipse.emf.cdo.expressions.IntValue;
import org.eclipse.emf.cdo.expressions.ListConstruction;
import org.eclipse.emf.cdo.expressions.LongValue;
import org.eclipse.emf.cdo.expressions.MemberInvocation;
import org.eclipse.emf.cdo.expressions.ShortValue;
import org.eclipse.emf.cdo.expressions.StringValue;
import java.util.Arrays;
/**
* Provides static factory methods for common {@link Expression expressions}.
*
* @author Eike Stepper
*/
public class ExpressionsUtil
{
public ExpressionsUtil()
{
}
public static BooleanValue value(boolean literal)
{
BooleanValue value = ExpressionsFactory.eINSTANCE.createBooleanValue();
value.setLiteral(literal);
return value;
}
public static ByteValue value(byte literal)
{
ByteValue value = ExpressionsFactory.eINSTANCE.createByteValue();
value.setLiteral(literal);
return value;
}
public static CharValue value(char literal)
{
CharValue value = ExpressionsFactory.eINSTANCE.createCharValue();
value.setLiteral(literal);
return value;
}
public static DoubleValue value(double literal)
{
DoubleValue value = ExpressionsFactory.eINSTANCE.createDoubleValue();
value.setLiteral(literal);
return value;
}
public static FloatValue value(float literal)
{
FloatValue value = ExpressionsFactory.eINSTANCE.createFloatValue();
value.setLiteral(literal);
return value;
}
public static IntValue value(int literal)
{
IntValue value = ExpressionsFactory.eINSTANCE.createIntValue();
value.setLiteral(literal);
return value;
}
public static LongValue value(long literal)
{
LongValue value = ExpressionsFactory.eINSTANCE.createLongValue();
value.setLiteral(literal);
return value;
}
public static ShortValue value(short literal)
{
ShortValue value = ExpressionsFactory.eINSTANCE.createShortValue();
value.setLiteral(literal);
return value;
}
public static StringValue value(String literal)
{
StringValue value = ExpressionsFactory.eINSTANCE.createStringValue();
value.setLiteral(literal);
return value;
}
public static ListConstruction list(Expression... elements)
{
ListConstruction value = ExpressionsFactory.eINSTANCE.createListConstruction();
value.getElements().addAll(Arrays.asList(elements));
return value;
}
public static MemberInvocation invokeMember(Expression object, Expression name, Expression... arguments)
{
MemberInvocation expression = ExpressionsFactory.eINSTANCE.createMemberInvocation();
expression.setObject(object);
expression.setName(name);
expression.getArguments().addAll(Arrays.asList(arguments));
return expression;
}
public static FunctionInvocation invoke(Expression name, Expression... arguments)
{
FunctionInvocation expression = ExpressionsFactory.eINSTANCE.createFunctionInvocation();
expression.setName(name);
expression.getArguments().addAll(Arrays.asList(arguments));
return expression;
}
public static FunctionInvocation construct(Expression className, Expression... arguments)
{
return invoke(value(className + ".new"), arguments);
}
// public static void main(String[] args)
// {
// System.out.println(Math.min(2, 4));
// System.out.println(invoke(value("Math.min"), value(2), value(4)).evaluate(new EvaluationContextImpl()));
// }
}