summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Taggart <alex.taggart@expojure.com>2011-04-25 16:15:32 -0700
committerStuart Halloway <stu@thinkrelevance.com>2011-05-06 09:45:12 -0400
commite89e95fe82f430cc5fe9ea1c3f1974434a9ccda3 (patch)
tree8c2dfea653fbf089c7c3c2a55ac9e4d07084105e
parentbf22d2a456909f40faa03f87e9509ff28b96abe0 (diff)
Add missing primitive casts
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
-rw-r--r--src/jvm/clojure/lang/RT.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index d19319e0..21e81b3e 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -905,6 +905,50 @@ static public char charCast(Object x){
return (char) n;
}
+static public char charCast(byte x){
+ char i = (char) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+ return i;
+}
+
+static public char charCast(short x){
+ char i = (char) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+ return i;
+}
+
+static public char charCast(char x){
+ return x;
+}
+
+static public char charCast(int x){
+ char i = (char) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+ return i;
+}
+
+static public char charCast(long x){
+ char i = (char) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+ return i;
+}
+
+static public char charCast(float x){
+ if(x >= Character.MIN_VALUE && x <= Character.MAX_VALUE)
+ return (char) x;
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+}
+
+static public char charCast(double x){
+ if(x >= Character.MIN_VALUE && x <= Character.MAX_VALUE)
+ return (char) x;
+ throw new IllegalArgumentException("Value out of range for char: " + x);
+}
+
static public boolean booleanCast(Object x){
if(x instanceof Boolean)
return ((Boolean) x).booleanValue();
@@ -925,6 +969,43 @@ static public byte byteCast(Object x){
return (byte) n;
}
+static public byte byteCast(byte x){
+ return x;
+}
+
+static public byte byteCast(short x){
+ byte i = (byte) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for byte: " + x);
+ return i;
+}
+
+static public byte byteCast(int x){
+ byte i = (byte) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for byte: " + x);
+ return i;
+}
+
+static public byte byteCast(long x){
+ byte i = (byte) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for byte: " + x);
+ return i;
+}
+
+static public byte byteCast(float x){
+ if(x >= Byte.MIN_VALUE && x <= Byte.MAX_VALUE)
+ return (byte) x;
+ throw new IllegalArgumentException("Value out of range for byte: " + x);
+}
+
+static public byte byteCast(double x){
+ if(x >= Byte.MIN_VALUE && x <= Byte.MAX_VALUE)
+ return (byte) x;
+ throw new IllegalArgumentException("Value out of range for byte: " + x);
+}
+
static public short shortCast(Object x){
if(x instanceof Short)
return ((Short) x).shortValue();
@@ -935,6 +1016,40 @@ static public short shortCast(Object x){
return (short) n;
}
+static public short shortCast(byte x){
+ return x;
+}
+
+static public short shortCast(short x){
+ return x;
+}
+
+static public short shortCast(int x){
+ short i = (short) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for short: " + x);
+ return i;
+}
+
+static public short shortCast(long x){
+ short i = (short) x;
+ if(i != x)
+ throw new IllegalArgumentException("Value out of range for short: " + x);
+ return i;
+}
+
+static public short shortCast(float x){
+ if(x >= Short.MIN_VALUE && x <= Short.MAX_VALUE)
+ return (short) x;
+ throw new IllegalArgumentException("Value out of range for short: " + x);
+}
+
+static public short shortCast(double x){
+ if(x >= Short.MIN_VALUE && x <= Short.MAX_VALUE)
+ return (short) x;
+ throw new IllegalArgumentException("Value out of range for short: " + x);
+}
+
static public int intCast(Object x){
if(x instanceof Integer)
return ((Integer)x).intValue();
@@ -1008,6 +1123,14 @@ static public long longCast(Object x){
return longCast(((Number)x).doubleValue());
}
+static public long longCast(byte x){
+ return x;
+}
+
+static public long longCast(short x){
+ return x;
+}
+
static public long longCast(int x){
return x;
}
@@ -1040,6 +1163,14 @@ static public float floatCast(Object x){
}
+static public float floatCast(byte x){
+ return x;
+}
+
+static public float floatCast(short x){
+ return x;
+}
+
static public float floatCast(int x){
return x;
}
@@ -1063,6 +1194,14 @@ static public double doubleCast(Object x){
return ((Number) x).doubleValue();
}
+static public double doubleCast(byte x){
+ return x;
+}
+
+static public double doubleCast(short x){
+ return x;
+}
+
static public double doubleCast(int x){
return x;
}