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 CharValueImpl extends PrimitiveValueImpl
     31                            implements CharValue {
     32     private char value;
     33 
     34     CharValueImpl(VirtualMachine aVm,char aValue) {
     35         super(aVm);
     36 
     37         value = aValue;
     38     }
     39 
     40     public boolean equals(Object obj) {
     41         if ((obj != null) && (obj instanceof CharValue)) {
     42             return (value == ((CharValue)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(CharValue obj) {
     57         char other = obj.value();
     58         return value() - other;
     59     }
     60 
     61     public Type type() {
     62         return vm.theCharType();
     63     }
     64 
     65     public char value() {
     66         return value;
     67     }
     68 
     69     public boolean booleanValue() {
     70         return(value == 0)?false:true;
     71     }
     72 
     73     public byte byteValue() {
     74         return(byte)value;
     75     }
     76 
     77     public char charValue() {
     78         return value;
     79     }
     80 
     81     public short shortValue() {
     82         return(short)value;
     83     }
     84 
     85     public int intValue() {
     86         return(int)value;
     87     }
     88 
     89     public long longValue() {
     90         return(long)value;
     91     }
     92 
     93     public float floatValue() {
     94         return(float)value;
     95     }
     96 
     97     public double doubleValue() {
     98         return(double)value;
     99     }
    100 
    101     public String toString() {
    102         return "" + value;
    103     }
    104 
    105     byte checkedByteValue() throws InvalidTypeException {
    106         // Note: since char is unsigned, don't check against MIN_VALUE
    107         if (value > Byte.MAX_VALUE) {
    108             throw new InvalidTypeException("Can't convert " + value + " to byte");
    109         } else {
    110             return super.checkedByteValue();
    111         }
    112     }
    113 
    114     short checkedShortValue() throws InvalidTypeException {
    115         // Note: since char is unsigned, don't check against MIN_VALUE
    116         if (value > Short.MAX_VALUE) {
    117             throw new InvalidTypeException("Can't convert " + value + " to short");
    118         } else {
    119             return super.checkedShortValue();
    120         }
    121     }
    122 
    123     byte typeValueKey() {
    124         return JDWP.Tag.CHAR;
    125     }
    126 }
    127