Home | History | Annotate | Download | only in jdi
      1 /*
      2  * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
      3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      4  *
      5  * This code is free software; you can redistribute it and/or modify it
      6  * under the terms of the GNU General Public License version 2 only, as
      7  * published by the Free Software Foundation.  Oracle designates this
      8  * particular file as subject to the "Classpath" exception as provided
      9  * by Oracle in the LICENSE file that accompanied this code.
     10  *
     11  * This code is distributed in the hope that it will be useful, but WITHOUT
     12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     14  * version 2 for more details (a copy is included in the LICENSE file that
     15  * accompanied this code).
     16  *
     17  * You should have received a copy of the GNU General Public License version
     18  * 2 along with this work; if not, write to the Free Software Foundation,
     19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     20  *
     21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     22  * or visit www.oracle.com if you need additional information or have any
     23  * questions.
     24  */
     25 
     26 package com.sun.tools.jdi;
     27 
     28 import com.sun.jdi.*;
     29 
     30 public class DoubleValueImpl extends PrimitiveValueImpl
     31                              implements DoubleValue {
     32     private double value;
     33 
     34     DoubleValueImpl(VirtualMachine aVm,double aValue) {
     35         super(aVm);
     36 
     37         value = aValue;
     38     }
     39 
     40     public boolean equals(Object obj) {
     41         if ((obj != null) && (obj instanceof DoubleValue)) {
     42             return (value == ((DoubleValue)obj).value()) &&
     43                    super.equals(obj);
     44         } else {
     45             return false;
     46         }
     47     }
     48 
     49     public int compareTo(DoubleValue obj) {
     50         double other = obj.value();
     51         if (value() < other) {
     52             return -1;
     53         } else if (value() == other) {
     54             return 0;
     55         } else {
     56             return 1;
     57         }
     58     }
     59 
     60     public int hashCode() {
     61         /*
     62          * TO DO: Better hash code
     63          */
     64         return intValue();
     65     }
     66 
     67     public Type type() {
     68         return vm.theDoubleType();
     69     }
     70 
     71     public double value() {
     72         return value;
     73     }
     74 
     75     public boolean booleanValue() {
     76         return(value == 0.0)?false:true;
     77     }
     78 
     79     public byte byteValue() {
     80         return(byte)value;
     81     }
     82 
     83     public char charValue() {
     84         return(char)value;
     85     }
     86 
     87     public short shortValue() {
     88         return(short)value;
     89     }
     90 
     91     public int intValue() {
     92         return(int)value;
     93     }
     94 
     95     public long longValue() {
     96         return(long)value;
     97     }
     98 
     99     public float floatValue() {
    100         return(float)value;
    101     }
    102 
    103     public double doubleValue() {
    104         return value;
    105     }
    106 
    107     byte checkedByteValue() throws InvalidTypeException {
    108         if ((value > Byte.MAX_VALUE) || (value < Byte.MIN_VALUE)) {
    109             throw new InvalidTypeException("Can't convert " + value + " to byte");
    110         } else {
    111             return super.checkedByteValue();
    112         }
    113     }
    114 
    115     char checkedCharValue() throws InvalidTypeException {
    116         if ((value > Character.MAX_VALUE) || (value < Character.MIN_VALUE)) {
    117             throw new InvalidTypeException("Can't convert " + value + " to char");
    118         } else {
    119             return super.checkedCharValue();
    120         }
    121     }
    122 
    123     short checkedShortValue() throws InvalidTypeException {
    124         if ((value > Short.MAX_VALUE) || (value < Short.MIN_VALUE)) {
    125             throw new InvalidTypeException("Can't convert " + value + " to short");
    126         } else {
    127             return super.checkedShortValue();
    128         }
    129     }
    130 
    131     int checkedIntValue() throws InvalidTypeException {
    132         if ((value > Integer.MAX_VALUE) || (value < Integer.MIN_VALUE)) {
    133             throw new InvalidTypeException("Can't convert " + value + " to int");
    134         } else {
    135             return super.checkedIntValue();
    136         }
    137     }
    138 
    139     long checkedLongValue() throws InvalidTypeException {
    140         long longValue = (long)value;
    141         if (longValue != value) {
    142             throw new InvalidTypeException("Can't convert " + value + " to long");
    143         } else {
    144             return super.checkedLongValue();
    145         }
    146     }
    147 
    148     float checkedFloatValue() throws InvalidTypeException {
    149         float floatValue = (float)value;
    150         if (floatValue != value) {
    151             throw new InvalidTypeException("Can't convert " + value + " to float");
    152         } else {
    153             return super.checkedFloatValue();
    154         }
    155     }
    156 
    157     public String toString() {
    158         return "" + value;
    159     }
    160 
    161     byte typeValueKey() {
    162         return JDWP.Tag.DOUBLE;
    163     }
    164 }
    165