Introduce SIZE_BYTES and SIZE_BITS constants for all integral types

#KT-8247 Fixed
This commit is contained in:
Ilya Gorbunov
2018-06-28 00:44:05 +03:00
parent 31d7aae98d
commit 0c50014e7a
17 changed files with 288 additions and 16 deletions
@@ -48,6 +48,12 @@ private object IntCompanionObject {
@JsName("MAX_VALUE")
val MAX_VALUE: Int = 2147483647
@JsName("SIZE_BYTES")
const val SIZE_BYTES = 4
@JsName("SIZE_BITS")
const val SIZE_BITS = 32
}
@JsName("LongCompanionObject")
@@ -57,6 +63,12 @@ private object LongCompanionObject {
@JsName("MAX_VALUE")
val MAX_VALUE: Long = js("Kotlin.Long.MAX_VALUE")
@JsName("SIZE_BYTES")
const val SIZE_BYTES = 8
@JsName("SIZE_BITS")
const val SIZE_BITS = 64
}
@JsName("ShortCompanionObject")
@@ -66,6 +78,12 @@ private object ShortCompanionObject {
@JsName("MAX_VALUE")
val MAX_VALUE: Short = 32767
@JsName("SIZE_BYTES")
const val SIZE_BYTES = 2
@JsName("SIZE_BITS")
const val SIZE_BITS = 16
}
@JsName("ByteCompanionObject")
@@ -75,6 +93,12 @@ private object ByteCompanionObject {
@JsName("MAX_VALUE")
val MAX_VALUE: Byte = 127
@JsName("SIZE_BYTES")
const val SIZE_BYTES = 1
@JsName("SIZE_BITS")
const val SIZE_BITS = 8
}
@JsName("CharCompanionObject")
@@ -96,6 +120,12 @@ private object CharCompanionObject {
@JsName("MAX_SURROGATE")
public const val MAX_SURROGATE: Char = MAX_LOW_SURROGATE
@JsName("SIZE_BYTES")
const val SIZE_BYTES = 2
@JsName("SIZE_BITS")
const val SIZE_BITS = 16
}
private object StringCompanionObject {}
@@ -24,21 +24,29 @@ internal object FloatCompanionObject {
internal object IntCompanionObject {
const val MIN_VALUE: Int = java.lang.Integer.MIN_VALUE
const val MAX_VALUE: Int = java.lang.Integer.MAX_VALUE
const val SIZE_BYTES: Int = 4
const val SIZE_BITS: Int = SIZE_BYTES * 8
}
internal object LongCompanionObject {
const val MIN_VALUE: Long = java.lang.Long.MIN_VALUE
const val MAX_VALUE: Long = java.lang.Long.MAX_VALUE
const val SIZE_BYTES: Int = 8
const val SIZE_BITS: Int = SIZE_BYTES * 8
}
internal object ShortCompanionObject {
const val MIN_VALUE: Short = java.lang.Short.MIN_VALUE
const val MAX_VALUE: Short = java.lang.Short.MAX_VALUE
const val SIZE_BYTES: Int = 2
const val SIZE_BITS: Int = SIZE_BYTES * 8
}
internal object ByteCompanionObject {
const val MIN_VALUE: Byte = java.lang.Byte.MIN_VALUE
const val MAX_VALUE: Byte = java.lang.Byte.MAX_VALUE
const val SIZE_BYTES: Int = 1
const val SIZE_BITS: Int = SIZE_BYTES * 8
}
@@ -49,6 +57,8 @@ internal object CharCompanionObject {
const val MAX_LOW_SURROGATE: Char = '\uDFFF'
const val MIN_SURROGATE: Char = MIN_HIGH_SURROGATE
const val MAX_SURROGATE: Char = MAX_LOW_SURROGATE
const val SIZE_BYTES: Int = 2
const val SIZE_BITS: Int = SIZE_BYTES * 8
}
internal object StringCompanionObject {}
@@ -24,6 +24,16 @@ public inline class UByte internal constructor(private val data: Byte) : Compara
* A constant holding the maximum value an instance of UByte can have.
*/
public const val MAX_VALUE: UByte = UByte(-1)
/**
* The number of bytes used to represent an instance of UByte in a binary form.
*/
public const val SIZE_BYTES: Int = 1
/**
* The number of bits used to represent an instance of UByte in a binary form.
*/
public const val SIZE_BITS: Int = 8
}
/**
@@ -24,6 +24,16 @@ public inline class UInt internal constructor(private val data: Int) : Comparabl
* A constant holding the maximum value an instance of UInt can have.
*/
public const val MAX_VALUE: UInt = UInt(-1)
/**
* The number of bytes used to represent an instance of UInt in a binary form.
*/
public const val SIZE_BYTES: Int = 4
/**
* The number of bits used to represent an instance of UInt in a binary form.
*/
public const val SIZE_BITS: Int = 32
}
/**
@@ -24,6 +24,16 @@ public inline class ULong internal constructor(private val data: Long) : Compara
* A constant holding the maximum value an instance of ULong can have.
*/
public const val MAX_VALUE: ULong = ULong(-1)
/**
* The number of bytes used to represent an instance of ULong in a binary form.
*/
public const val SIZE_BYTES: Int = 8
/**
* The number of bits used to represent an instance of ULong in a binary form.
*/
public const val SIZE_BITS: Int = 64
}
/**
@@ -24,6 +24,16 @@ public inline class UShort internal constructor(private val data: Short) : Compa
* A constant holding the maximum value an instance of UShort can have.
*/
public const val MAX_VALUE: UShort = UShort(-1)
/**
* The number of bytes used to represent an instance of UShort in a binary form.
*/
public const val SIZE_BYTES: Int = 2
/**
* The number of bits used to represent an instance of UShort in a binary form.
*/
public const val SIZE_BITS: Int = 16
}
/**
@@ -380,6 +380,8 @@ public final class kotlin/jvm/internal/ByteCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/ByteCompanionObject;
public static final field MAX_VALUE B
public static final field MIN_VALUE B
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/ByteSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -421,6 +423,8 @@ public final class kotlin/jvm/internal/CharCompanionObject {
public static final field MIN_HIGH_SURROGATE C
public static final field MIN_LOW_SURROGATE C
public static final field MIN_SURROGATE C
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/CharSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -572,6 +576,8 @@ public final class kotlin/jvm/internal/IntCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/IntCompanionObject;
public static final field MAX_VALUE I
public static final field MIN_VALUE I
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/IntSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -638,6 +644,8 @@ public final class kotlin/jvm/internal/LongCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/LongCompanionObject;
public static final field MAX_VALUE J
public static final field MIN_VALUE J
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/LongSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -921,6 +929,8 @@ public final class kotlin/jvm/internal/ShortCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/ShortCompanionObject;
public static final field MAX_VALUE S
public static final field MIN_VALUE S
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/ShortSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -216,6 +216,8 @@ public final class kotlin/UByte : java/lang/Comparable {
public static final field Companion Lkotlin/UByte$Companion;
public static final field MAX_VALUE B
public static final field MIN_VALUE B
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
public final fun and (B)B
public fun compareTo (B)I
public final fun compareTo (I)I
@@ -358,6 +360,8 @@ public final class kotlin/UInt : java/lang/Comparable {
public static final field Companion Lkotlin/UInt$Companion;
public static final field MAX_VALUE I
public static final field MIN_VALUE I
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
public final fun and (I)I
public final fun compareTo (B)I
public fun compareTo (I)I
@@ -504,6 +508,8 @@ public final class kotlin/ULong : java/lang/Comparable {
public static final field Companion Lkotlin/ULong$Companion;
public static final field MAX_VALUE J
public static final field MIN_VALUE J
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
public final fun and (J)J
public final fun compareTo (B)I
public final fun compareTo (I)I
@@ -650,6 +656,8 @@ public final class kotlin/UShort : java/lang/Comparable {
public static final field Companion Lkotlin/UShort$Companion;
public static final field MAX_VALUE S
public static final field MIN_VALUE S
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
public final fun and (S)S
public final fun compareTo (B)I
public final fun compareTo (I)I
@@ -3194,6 +3202,8 @@ public final class kotlin/jvm/internal/ByteCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/ByteCompanionObject;
public static final field MAX_VALUE B
public static final field MIN_VALUE B
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/ByteSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -3235,6 +3245,8 @@ public final class kotlin/jvm/internal/CharCompanionObject {
public static final field MIN_HIGH_SURROGATE C
public static final field MIN_LOW_SURROGATE C
public static final field MIN_SURROGATE C
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/CharSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -3386,6 +3398,8 @@ public final class kotlin/jvm/internal/IntCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/IntCompanionObject;
public static final field MAX_VALUE I
public static final field MIN_VALUE I
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/IntSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -3452,6 +3466,8 @@ public final class kotlin/jvm/internal/LongCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/LongCompanionObject;
public static final field MAX_VALUE J
public static final field MIN_VALUE J
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/LongSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {
@@ -3735,6 +3751,8 @@ public final class kotlin/jvm/internal/ShortCompanionObject {
public static final field INSTANCE Lkotlin/jvm/internal/ShortCompanionObject;
public static final field MAX_VALUE S
public static final field MIN_VALUE S
public static final field SIZE_BITS I
public static final field SIZE_BYTES I
}
public final class kotlin/jvm/internal/ShortSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder {