diff --git a/src/core/org/luaj/vm/LDouble.java b/src/core/org/luaj/vm/LDouble.java index c5e857a7..efe31dcb 100644 --- a/src/core/org/luaj/vm/LDouble.java +++ b/src/core/org/luaj/vm/LDouble.java @@ -103,10 +103,18 @@ public class LDouble extends LNumber { return (int) m_value; } + public long toJavaLong() { + return (long) m_value; + } + + public float toJavaFloat() { + return (float) m_value; + } + public double toJavaDouble() { return m_value; } - + // binary compares on integers, first dispatch public boolean luaBinCmpUnknown(int opcode, LValue lhs) { return lhs.luaBinCmpDouble( opcode, this.m_value ); diff --git a/src/core/org/luaj/vm/LInteger.java b/src/core/org/luaj/vm/LInteger.java index 6b5809d6..2cb50f62 100644 --- a/src/core/org/luaj/vm/LInteger.java +++ b/src/core/org/luaj/vm/LInteger.java @@ -58,6 +58,18 @@ public class LInteger extends LNumber { return m_value; } + public long toJavaLong() { + return m_value; + } + + public float toJavaFloat() { + return m_value; + } + + public double toJavaDouble() { + return m_value; + } + public LString luaAsString() { return LString.valueOf(m_value); } diff --git a/src/core/org/luaj/vm/LValue.java b/src/core/org/luaj/vm/LValue.java index 6d21ac93..bcd7496a 100644 --- a/src/core/org/luaj/vm/LValue.java +++ b/src/core/org/luaj/vm/LValue.java @@ -206,22 +206,26 @@ public class LValue { /** Return value as a byte */ public byte toJavaByte() { - return (byte) toJavaInt(); + conversionError("number"); + return 0; } /** Return value as a char */ public char toJavaChar() { - return (char) toJavaInt(); + conversionError("number"); + return 0; } /** Return value as a double */ public double toJavaDouble() { - return toJavaInt(); + conversionError("number"); + return 0; } /** Return value as a float */ public float toJavaFloat() { - return (float) toJavaDouble(); + conversionError("number"); + return 0; } /** Return value as an integer */ @@ -232,12 +236,14 @@ public class LValue { /** Return value as a long */ public long toJavaLong() { - return (long) toJavaDouble(); + conversionError("number"); + return 0; } /** Return value as a double */ public short toJavaShort() { - return (short) toJavaInt(); + conversionError("number"); + return 0; } /** Convert to a Boolean value */