From 24c667bc9cf6c8231dda86f8611517065b5f5aa8 Mon Sep 17 00:00:00 2001 From: Infendro Date: Sun, 18 Jan 2026 21:48:05 +0100 Subject: [PATCH] implement decode exception --- .../infendro/encoding/exception/DecodeException.kt | 5 +++++ .../encoding/exception/IllegalByteException.kt | 12 ++++++++++++ .../com/infendro/encoding/numeric/NumericEncoding.kt | 8 ++++++-- .../com/infendro/encoding/stream/StreamEncoding.kt | 3 ++- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt create mode 100644 src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt diff --git a/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt b/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt new file mode 100644 index 0000000..f81ba30 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/exception/DecodeException.kt @@ -0,0 +1,5 @@ +package com.infendro.encoding.exception + +abstract class DecodeException : Exception() { + abstract override val message: String +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt b/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt new file mode 100644 index 0000000..5650bf6 --- /dev/null +++ b/src/commonMain/kotlin/com/infendro/encoding/exception/IllegalByteException.kt @@ -0,0 +1,12 @@ +package com.infendro.encoding.exception + +class IllegalByteException( + val byte: Byte, +) : DecodeException() { + override val message: String + get() { + val hex = "0x${byte.toHexString().padStart(2, '0')}" + val char = "'${byte.toInt().toChar()}'" + return "Illegal byte $hex ($char)." + } +} diff --git a/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt b/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt index 16b36d4..671a552 100644 --- a/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt +++ b/src/commonMain/kotlin/com/infendro/encoding/numeric/NumericEncoding.kt @@ -1,6 +1,7 @@ package com.infendro.encoding.numeric import com.infendro.encoding.Encoding +import com.infendro.encoding.exception.IllegalByteException import com.infendro.encoding.util.BigInt import com.infendro.encoding.util.log2 import kotlin.math.ceil @@ -30,8 +31,11 @@ open class NumericEncoding( var value = BigInt.zero for (i in 0..