0N/A/*
157N/A * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
157N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
157N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
157N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
157N/A * or visit www.oracle.com if you need additional information or have any
157N/A * questions.
0N/A */
0N/A/*
0N/A * COMPONENT_NAME: idl.parser
0N/A *
0N/A * ORIGINS: 27
0N/A *
0N/A * Licensed Materials - Property of IBM
0N/A * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
0N/A * RMI-IIOP v1.0
0N/A *
0N/A */
0N/A
0N/Apackage com.sun.tools.corba.se.idl.constExpr;
0N/A
0N/A// NOTES:
0N/A
0N/Aimport com.sun.tools.corba.se.idl.Util;
0N/Aimport java.math.BigInteger;
0N/A
0N/Apublic class Times extends BinaryExpr
0N/A{
0N/A protected Times (Expression leftOperand, Expression rightOperand)
0N/A {
0N/A super ("*", leftOperand, rightOperand);
0N/A } // ctor
0N/A
0N/A public Object evaluate () throws EvaluationException
0N/A {
0N/A try
0N/A {
0N/A Number l = (Number)left ().evaluate ();
0N/A Number r = (Number)right ().evaluate ();
0N/A
0N/A boolean lIsNonInteger = l instanceof Float || l instanceof Double;
0N/A boolean rIsNonInteger = r instanceof Float || r instanceof Double;
0N/A
0N/A if (lIsNonInteger && rIsNonInteger)
0N/A value (new Double (l.doubleValue () * r.doubleValue ()));
0N/A else if (lIsNonInteger || rIsNonInteger)
0N/A {
0N/A String[] parameters = {Util.getMessage ("EvaluationException.times"), left ().value ().getClass ().getName (), right ().value ().getClass ().getName ()};
0N/A throw new EvaluationException (Util.getMessage ("EvaluationException.1", parameters));
0N/A }
0N/A else
0N/A {
0N/A // Multiplication (*)
0N/A BigInteger tmpL = (BigInteger)l, tmpR = (BigInteger)r;
0N/A value (tmpL.multiply (tmpR));
0N/A //daz value (new Long (l.longValue () * r.longValue ()));
0N/A }
0N/A }
0N/A catch (ClassCastException e)
0N/A {
0N/A String[] parameters = {Util.getMessage ("EvaluationException.times"), left ().value ().getClass ().getName (), right ().value ().getClass ().getName ()};
0N/A throw new EvaluationException (Util.getMessage ("EvaluationException.1", parameters));
0N/A }
0N/A return value ();
0N/A } // evaluate
0N/A} // class Times