/** * Copyright (C) 2009 STMicroelectronics * * This file is part of "Mind Compiler" is free software: you can redistribute * it and/or modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact: mind@ow2.org * * Authors: Matthieu Leclercq * Contributors: */ package org.ow2.mind.value.ast; import static org.ow2.mind.CommonASTHelper.newNode; import org.objectweb.fractal.adl.NodeFactory; public final class ValueASTHelper { private ValueASTHelper() { } public static int getValue(final NumberLiteral intValue) { return Integer.parseInt(intValue.getValue()); } public static String getValue(final StringLiteral strValue) { return strValue.getValue(); } public static boolean getValue(final BooleanLiteral boolValue) { return boolValue.getValue() != null && boolValue.getValue().equals(BooleanLiteral.TRUE); } /** * Create a new {@link NumberLiteral} node using the given {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @param value the {@link NumberLiteral#getValue() literal value}. * @return a new {@link NumberLiteral} node. */ public static NumberLiteral newNumberLiteral(final NodeFactory nodeFactory, final int value) { final NumberLiteral literal = newNode(nodeFactory, "value", NumberLiteral.class); literal.setValue(Integer.toString(value)); return literal; } /** * Create a new {@link StringLiteral} node using the given {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @param value the {@link StringLiteral#getValue() literal value}. * @return a new {@link StringLiteral} node. */ public static StringLiteral newStringLiteral(final NodeFactory nodeFactory, final String value) { final StringLiteral literal = newNode(nodeFactory, "value", StringLiteral.class); literal.setValue("\"" + value + "\""); return literal; } /** * Create a new {@link BooleanLiteral} node using the given * {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @param value the {@link BooleanLiteral#getValue() literal value}. * @return a new {@link BooleanLiteral} node. */ public static BooleanLiteral newBooleanLiteral(final NodeFactory nodeFactory, final boolean value) { final BooleanLiteral literal = newNode(nodeFactory, "value", BooleanLiteral.class); literal.setValue((value) ? BooleanLiteral.TRUE : BooleanLiteral.FALSE); return literal; } /** * Create a new {@link NullLiteral} node using the given {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @return a new {@link NullLiteral} node. */ public static NullLiteral newNullLiteral(final NodeFactory nodeFactory) { return newNode(nodeFactory, "value", NullLiteral.class); } /** * Create a new {@link Reference} node using the given {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @param ref the value of the {@link Reference#getRef() referenced value}. * @return a new {@link Reference} node. */ public static Reference newReference(final NodeFactory nodeFactory, final String ref) { final Reference literal = newNode(nodeFactory, "value", Reference.class); literal.setRef(ref); return literal; } /** * Create a new {@link Array} node using the given {@link NodeFactory} * * @param nodeFactory the {@link NodeFactory} to use to create the node. * @return a new {@link Array} node. */ public static Array newArray(final NodeFactory nodeFactory) { return newNode(nodeFactory, "value", Array.class); } }