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 LongValueImpl extends PrimitiveValueImpl
     31                            implements LongValue {
     32     private long value;
     33 
     34     LongValueImpl(VirtualMachine aVm,long aValue) {
     35         super(aVm);
     36 
     37         value = aValue;
     38     }
     39 
     40     public boolean equals(Object obj) {
     41         if ((obj != null) && (obj instanceof LongValue)) {
     42             return (value == ((LongValue)obj).value()) &&
     43                    super.equals(obj);
     44         } else {
     45             return false;
     46         }
     47     }
     48 
     49     public int hashCode() {
     50         /*
     51          * TO DO: Better hash code
     52          */
     53         return intValue();
     54     }
     55 
     56     public int compareTo(LongValue obj) {
     57         long other = obj.value();
     58         if (value() < other) {
     59             return -1;
     60         } else if (value() == other) {
     61             return 0;
     62         } else {
     63             return 1;
     64         }
     65     }
     66 
     67     public Type type() {
     68         return vm.theLongType();
     69     }
     70 
     71     public long value() {
     72         return value;
     73     }
     74 
     75     public boolean booleanValue() {
     76         return(value == 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 value;
     97     }
     98 
     99     public float floatValue() {
    100         return(float)value;
    101     }
    102 
    103     public double doubleValue() {
    104         return(double)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     public String toString() {
    140         return "" + value;
    141     }
    142 
    143     byte typeValueKey() {
    144         return JDWP.Tag.LONG;
    145     }
    146 }
    147