• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
DoubleValueImpl(VirtualMachine aVm,double aValue)34     DoubleValueImpl(VirtualMachine aVm,double aValue) {
35         super(aVm);
36 
37         value = aValue;
38     }
39 
equals(Object obj)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 
compareTo(DoubleValue obj)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 
hashCode()60     public int hashCode() {
61         /*
62          * TO DO: Better hash code
63          */
64         return intValue();
65     }
66 
type()67     public Type type() {
68         return vm.theDoubleType();
69     }
70 
value()71     public double value() {
72         return value;
73     }
74 
booleanValue()75     public boolean booleanValue() {
76         return(value == 0.0)?false:true;
77     }
78 
byteValue()79     public byte byteValue() {
80         return(byte)value;
81     }
82 
charValue()83     public char charValue() {
84         return(char)value;
85     }
86 
shortValue()87     public short shortValue() {
88         return(short)value;
89     }
90 
intValue()91     public int intValue() {
92         return(int)value;
93     }
94 
longValue()95     public long longValue() {
96         return(long)value;
97     }
98 
floatValue()99     public float floatValue() {
100         return(float)value;
101     }
102 
doubleValue()103     public double doubleValue() {
104         return value;
105     }
106 
checkedByteValue()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 
checkedCharValue()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 
checkedShortValue()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 
checkedIntValue()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 
checkedLongValue()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 
checkedFloatValue()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 
toString()157     public String toString() {
158         return "" + value;
159     }
160 
typeValueKey()161     byte typeValueKey() {
162         return JDWP.Tag.DOUBLE;
163     }
164 }
165