Files
hash.kt/src/commonMain/kotlin/com/infendro/hash/util/Buffer.kt
2026-03-11 18:53:00 +01:00

47 lines
1.1 KiB
Kotlin

package com.infendro.hash.util
import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN
import com.infendro.bytes.int.copyInto
import com.infendro.bytes.long.copyInto
internal class Buffer(val size: Int) {
val value = ByteArray(size)
var offset = 0
val free: Int
get() = size - offset
fun isEmpty(): Boolean = offset == 0
fun isNotEmpty(): Boolean = !isEmpty()
fun isFull(): Boolean = offset == size
fun reset() {
value.fill(0x00)
offset = 0
}
fun jumpTo(offset: Int) {
this.offset = offset
}
fun append(byte: Byte) {
value[offset++] = byte
}
fun append(bytes: ByteArray, startIndex: Int = 0, endIndex: Int = bytes.size) {
bytes.copyInto(value, offset, startIndex, endIndex)
offset += (endIndex - startIndex)
}
fun append(n: Int, order: ByteOrder = BIG_ENDIAN) {
n.copyInto(value, offset, order = order)
offset += 4
}
fun append(n: Long, order: ByteOrder = BIG_ENDIAN) {
n.copyInto(value, offset, order = order)
offset += 8
}
}