plugins/base1/se.lu.onk/trunk/QPackage/src/qpackage/calculator/Operand.java

Code
Comments
Other
Rev Date Author Line
66 09 Feb 06 enell 1 /*
66 09 Feb 06 enell 2  * Created on 26-May-2004
66 09 Feb 06 enell 3  * 
66 09 Feb 06 enell 4  * Operand.java is a part of WeightedMerge
66 09 Feb 06 enell 5  * 
66 09 Feb 06 enell 6  * Copyright (C) 2004 Johan Enell, Dept Oncology, Lund University
66 09 Feb 06 enell 7  * 
66 09 Feb 06 enell 8  * This program is free software; you can redistribute it and/or modify it under
66 09 Feb 06 enell 9  * the terms of the GNU General Public License as published by the Free Software
66 09 Feb 06 enell 10  * Foundation; either version 2 of the License, or (at your option) any later
66 09 Feb 06 enell 11  * version.
66 09 Feb 06 enell 12  * 
66 09 Feb 06 enell 13  * This program is distributed in the hope that it will be useful, but WITHOUT
66 09 Feb 06 enell 14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
66 09 Feb 06 enell 15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
66 09 Feb 06 enell 16  * details.
66 09 Feb 06 enell 17  * 
66 09 Feb 06 enell 18  * You should have received a copy of the GNU General Public License along with
66 09 Feb 06 enell 19  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
66 09 Feb 06 enell 20  * Place - Suite 330, Boston, MA 02111-1307, USA.
66 09 Feb 06 enell 21  */
67 10 Feb 06 enell 22 package qpackage.calculator;
66 09 Feb 06 enell 23
66 09 Feb 06 enell 24 import java.util.HashSet;
66 09 Feb 06 enell 25
66 09 Feb 06 enell 26 /**
66 09 Feb 06 enell 27  * An Opreand is a Token that holds a value. It holds the value in te field
66 09 Feb 06 enell 28  * <code>value</code>. If for som reason the Operand dosen't has a value the
66 09 Feb 06 enell 29  * fields is equal to <code>Float.NaN</code>.
66 09 Feb 06 enell 30  * 
66 09 Feb 06 enell 31  * @author Johan Enell, johan.enell@onk.lu.se, Dept Oncology, Lund University,
66 09 Feb 06 enell 32  *         S-221 85 Lund, Sweden
66 09 Feb 06 enell 33  */
66 09 Feb 06 enell 34 public abstract class Operand extends Token
66 09 Feb 06 enell 35 {
66 09 Feb 06 enell 36
66 09 Feb 06 enell 37   /**
66 09 Feb 06 enell 38    * The float value of this Object.
66 09 Feb 06 enell 39    */
66 09 Feb 06 enell 40   protected float value;
66 09 Feb 06 enell 41
66 09 Feb 06 enell 42   /**
66 09 Feb 06 enell 43    * Constructa a new Operand with the float value value.
66 09 Feb 06 enell 44    * 
66 09 Feb 06 enell 45    * @param value
66 09 Feb 06 enell 46    *            the value of this Operand.
66 09 Feb 06 enell 47    */
66 09 Feb 06 enell 48   protected Operand(float value)
66 09 Feb 06 enell 49   {
66 09 Feb 06 enell 50     this.value = value;
66 09 Feb 06 enell 51   }
66 09 Feb 06 enell 52
66 09 Feb 06 enell 53   /**
66 09 Feb 06 enell 54    * Constructs a new Oprand using a String to retrive the value.
66 09 Feb 06 enell 55    * 
66 09 Feb 06 enell 56    * @param value
66 09 Feb 06 enell 57    */
66 09 Feb 06 enell 58   protected Operand(String value)
66 09 Feb 06 enell 59   {}
66 09 Feb 06 enell 60
66 09 Feb 06 enell 61   /*
66 09 Feb 06 enell 62    * (non-Javadoc)
66 09 Feb 06 enell 63    * 
66 09 Feb 06 enell 64    * @see calc.Token#setVariable(calc.Variable, float)
66 09 Feb 06 enell 65    */
66 09 Feb 06 enell 66   @Override
66 09 Feb 06 enell 67   protected void setVariable(Variable variable, float value)
66 09 Feb 06 enell 68   {}
66 09 Feb 06 enell 69
66 09 Feb 06 enell 70   @Override
66 09 Feb 06 enell 71   protected HashSet<Variable> getVariables()
66 09 Feb 06 enell 72   {
66 09 Feb 06 enell 73     return new HashSet<Variable>();
66 09 Feb 06 enell 74   }
66 09 Feb 06 enell 75
66 09 Feb 06 enell 76   /**
66 09 Feb 06 enell 77    * Returns a string representation of this Operand. The string
66 09 Feb 06 enell 78    * representation of an Operand is the string representation of it's float
66 09 Feb 06 enell 79    * value.
66 09 Feb 06 enell 80    * 
66 09 Feb 06 enell 81    * @return a string representation of this Operand.
66 09 Feb 06 enell 82    * 
66 09 Feb 06 enell 83    * @see java.lang.Object#toString()
66 09 Feb 06 enell 84    */
66 09 Feb 06 enell 85   @Override
66 09 Feb 06 enell 86   public String toString()
66 09 Feb 06 enell 87   {
66 09 Feb 06 enell 88     return String.valueOf(value);
66 09 Feb 06 enell 89   }
66 09 Feb 06 enell 90
66 09 Feb 06 enell 91   /**
66 09 Feb 06 enell 92    * Compares the specified object with this Operand for equality. Returnes
66 09 Feb 06 enell 93    * <code>true</code> if the specified object is also an Operand and the
66 09 Feb 06 enell 94    * float value of the two objects are equal.
66 09 Feb 06 enell 95    * 
66 09 Feb 06 enell 96    * @return <code>true</code> if the specified object is equal to this
66 09 Feb 06 enell 97    *         Operand.
66 09 Feb 06 enell 98    * 
66 09 Feb 06 enell 99    * @see java.lang.Object#equals(java.lang.Object)
66 09 Feb 06 enell 100    */
66 09 Feb 06 enell 101   @Override
66 09 Feb 06 enell 102   public boolean equals(Object obj)
66 09 Feb 06 enell 103   {
66 09 Feb 06 enell 104     if (obj instanceof Operand) return this.getValue() == ((Token) obj).getValue();
66 09 Feb 06 enell 105     return false;
66 09 Feb 06 enell 106   }
66 09 Feb 06 enell 107
66 09 Feb 06 enell 108   /**
66 09 Feb 06 enell 109    * Returns the hash code value for this Operator. The hash code is defined
66 09 Feb 06 enell 110    * as the hash code for the value as it is specifid in Float.hashCode().
66 09 Feb 06 enell 111    * This ensures that <code>o1.equals(o2)</code> implies that
66 09 Feb 06 enell 112    * <code>o1.hashCode() == o2.hashCode()</code> for any two Operands
66 09 Feb 06 enell 113    * <code>o1</code> and <code>o2</code>, as required by the general
66 09 Feb 06 enell 114    * contract of Object.hashCode.
66 09 Feb 06 enell 115    * 
66 09 Feb 06 enell 116    * @return the hash code value of this Operand.
66 09 Feb 06 enell 117    * 
66 09 Feb 06 enell 118    * @see java.lang.Object#hashCode()
66 09 Feb 06 enell 119    * @see java.lang.Float#hashCode()
66 09 Feb 06 enell 120    */
66 09 Feb 06 enell 121   @Override
66 09 Feb 06 enell 122   public int hashCode()
66 09 Feb 06 enell 123   {
66 09 Feb 06 enell 124     return new Float(this.getValue()).hashCode();
66 09 Feb 06 enell 125   }
66 09 Feb 06 enell 126 }