summaryrefslogtreecommitdiff
path: root/src/main/kotlin/SizedInteger.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/SizedInteger.kt')
-rw-r--r--src/main/kotlin/SizedInteger.kt36
1 files changed, 0 insertions, 36 deletions
diff --git a/src/main/kotlin/SizedInteger.kt b/src/main/kotlin/SizedInteger.kt
deleted file mode 100644
index 48e4e25..0000000
--- a/src/main/kotlin/SizedInteger.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-import java.math.BigInteger
-
-/**
- * [SizedInteger] represents an unsigned integer number of arbitrary yet fixed length. It's useful for storing integers
- * got from a connection as message fields.
- *
- * @param size The size of the field, measured in bytes.
- * @param value The value of the field.
- *
- * @throws IllegalArgumentException if the size required to store the provided value is bigger than the provided size.
- */
-class SizedInteger(val size: ULong, value: BigInteger) {
- init {
- if (!this.sizeOk(size, value)) {
- throw IllegalArgumentException()
- }
- }
-
- constructor(size: ULong) : this(size, 0.toBigInteger())
-
- /**
- * @throws IllegalStateException on set if the declared size is not enough for the new value.
- */
- var value = value
- set(value) {
- if (!this.sizeOk(value)) {
- throw IllegalStateException()
- }
- }
-
- private fun sizeOk(size: ULong, value: BigInteger): Boolean {
- val requiredSize = value.toByteArray().size.toUInt()
- return requiredSize <= size
- }
- private fun sizeOk(value: BigInteger): Boolean = sizeOk(this.size, value)
-} \ No newline at end of file