diff options
Diffstat (limited to 'library/src/main/scala/scala/scalajs/runtime/NumberReflectiveCall.scala')
-rw-r--r-- | library/src/main/scala/scala/scalajs/runtime/NumberReflectiveCall.scala | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/library/src/main/scala/scala/scalajs/runtime/NumberReflectiveCall.scala b/library/src/main/scala/scala/scalajs/runtime/NumberReflectiveCall.scala new file mode 100644 index 0000000..a237861 --- /dev/null +++ b/library/src/main/scala/scala/scalajs/runtime/NumberReflectiveCall.scala @@ -0,0 +1,162 @@ +package scala.scalajs.runtime + +import java.lang.{Double => JDouble, Integer => JInteger} + +/** Explicit box for number values when doing a reflective call. + * This class and its methods are only here to properly support reflective + * calls on numbers. + */ +class NumberReflectiveCall(value: Double) { + + // Methods of java.lang.Double and java.lang.Integer + + def byteValue(): Byte = value.toByte + def shortValue(): Short = value.toShort + def intValue(): Int = value.toInt + def longValue(): scala.Long = value.toLong + def floatValue(): Float = value.toFloat + def doubleValue(): Double = value + + def compareTo(that: JDouble): Int = + new JDouble(value).compareTo(that) + def compareTo(that: JInteger): Int = + new JDouble(value).compareTo(new JDouble(that.doubleValue())) + def compareTo(that: AnyRef): Int = + new JDouble(value).compareTo(that.asInstanceOf[JDouble]) + + def isNaN(): scala.Boolean = new JDouble(value).isNaN() + def isInfinite(): scala.Boolean = new JDouble(value).isInfinite() + + // Methods of scala.Double + + def toByte: scala.Byte = value.toByte + def toShort: scala.Short = value.toShort + def toChar: scala.Char = value.toChar + def toInt: scala.Int = value.toInt + def toLong: scala.Long = value.toLong + def toFloat: scala.Float = value.toFloat + def toDouble: scala.Double = value + + def unary_+ : scala.Double = value + def unary_- : scala.Double = -value + + def +(x: String): String = value + x + + def ==(x: scala.Byte): scala.Boolean = value == x + def ==(x: scala.Short): scala.Boolean = value == x + def ==(x: scala.Char): scala.Boolean = value == x + def ==(x: scala.Int): scala.Boolean = value == x + def ==(x: scala.Long): scala.Boolean = value == x + def ==(x: scala.Float): scala.Boolean = value == x + def ==(x: scala.Double): scala.Boolean = value == x + + def !=(x: scala.Byte): scala.Boolean = value != x + def !=(x: scala.Short): scala.Boolean = value != x + def !=(x: scala.Char): scala.Boolean = value != x + def !=(x: scala.Int): scala.Boolean = value != x + def !=(x: scala.Long): scala.Boolean = value != x + def !=(x: scala.Float): scala.Boolean = value != x + def !=(x: scala.Double): scala.Boolean = value != x + + def <(x: scala.Byte): scala.Boolean = value < x + def <(x: scala.Short): scala.Boolean = value < x + def <(x: scala.Char): scala.Boolean = value < x + def <(x: scala.Int): scala.Boolean = value < x + def <(x: scala.Long): scala.Boolean = value < x + def <(x: scala.Float): scala.Boolean = value < x + def <(x: scala.Double): scala.Boolean = value < x + + def <=(x: scala.Byte): scala.Boolean = value <= x + def <=(x: scala.Short): scala.Boolean = value <= x + def <=(x: scala.Char): scala.Boolean = value <= x + def <=(x: scala.Int): scala.Boolean = value <= x + def <=(x: scala.Long): scala.Boolean = value <= x + def <=(x: scala.Float): scala.Boolean = value <= x + def <=(x: scala.Double): scala.Boolean = value <= x + + def >(x: scala.Byte): scala.Boolean = value > x + def >(x: scala.Short): scala.Boolean = value > x + def >(x: scala.Char): scala.Boolean = value > x + def >(x: scala.Int): scala.Boolean = value > x + def >(x: scala.Long): scala.Boolean = value > x + def >(x: scala.Float): scala.Boolean = value > x + def >(x: scala.Double): scala.Boolean = value > x + + def >=(x: scala.Byte): scala.Boolean = value >= x + def >=(x: scala.Short): scala.Boolean = value >= x + def >=(x: scala.Char): scala.Boolean = value >= x + def >=(x: scala.Int): scala.Boolean = value >= x + def >=(x: scala.Long): scala.Boolean = value >= x + def >=(x: scala.Float): scala.Boolean = value >= x + def >=(x: scala.Double): scala.Boolean = value >= x + + def +(x: scala.Byte): scala.Double = value + x + def +(x: scala.Short): scala.Double = value + x + def +(x: scala.Char): scala.Double = value + x + def +(x: scala.Int): scala.Double = value + x + def +(x: scala.Long): scala.Double = value + x + def +(x: scala.Float): scala.Double = value + x + def +(x: scala.Double): scala.Double = value + x + + def -(x: scala.Byte): scala.Double = value - x + def -(x: scala.Short): scala.Double = value - x + def -(x: scala.Char): scala.Double = value - x + def -(x: scala.Int): scala.Double = value - x + def -(x: scala.Long): scala.Double = value - x + def -(x: scala.Float): scala.Double = value - x + def -(x: scala.Double): scala.Double = value - x + + def *(x: scala.Byte): scala.Double = value * x + def *(x: scala.Short): scala.Double = value * x + def *(x: scala.Char): scala.Double = value * x + def *(x: scala.Int): scala.Double = value * x + def *(x: scala.Long): scala.Double = value * x + def *(x: scala.Float): scala.Double = value * x + def *(x: scala.Double): scala.Double = value * x + + def /(x: scala.Byte): scala.Double = value / x + def /(x: scala.Short): scala.Double = value / x + def /(x: scala.Char): scala.Double = value / x + def /(x: scala.Int): scala.Double = value / x + def /(x: scala.Long): scala.Double = value / x + def /(x: scala.Float): scala.Double = value / x + def /(x: scala.Double): scala.Double = value / x + + def %(x: scala.Byte): scala.Double = value % x + def %(x: scala.Short): scala.Double = value % x + def %(x: scala.Char): scala.Double = value % x + def %(x: scala.Int): scala.Double = value % x + def %(x: scala.Long): scala.Double = value % x + def %(x: scala.Float): scala.Double = value % x + def %(x: scala.Double): scala.Double = value % x + + // Methods of scala.Int that are not defined on scala.Double + + def unary_~ : scala.Int = ~value.toInt + + def <<(x: scala.Int): scala.Int = value.toInt << x + def <<(x: scala.Long): scala.Int = value.toInt << x + def >>>(x: scala.Int): scala.Int = value.toInt >>> x + def >>>(x: scala.Long): scala.Int = value.toInt >>> x + def >>(x: scala.Int): scala.Int = value.toInt >> x + def >>(x: scala.Long): scala.Int = value.toInt >> x + + def |(x: scala.Byte): scala.Int = value.toInt | x + def |(x: scala.Short): scala.Int = value.toInt | x + def |(x: scala.Char): scala.Int = value.toInt | x + def |(x: scala.Int): scala.Int = value.toInt | x + def |(x: scala.Long): scala.Long = value.toInt | x + + def &(x: scala.Byte): scala.Int = value.toInt & x + def &(x: scala.Short): scala.Int = value.toInt & x + def &(x: scala.Char): scala.Int = value.toInt & x + def &(x: scala.Int): scala.Int = value.toInt & x + def &(x: scala.Long): scala.Long = value.toInt & x + + def ^(x: scala.Byte): scala.Int = value.toInt ^ x + def ^(x: scala.Short): scala.Int = value.toInt ^ x + def ^(x: scala.Char): scala.Int = value.toInt ^ x + def ^(x: scala.Int): scala.Int = value.toInt ^ x + def ^(x: scala.Long): scala.Long = value.toInt ^ x + +} |