add return types

This commit is contained in:
2026-01-15 14:56:46 +01:00
parent d55ec62be9
commit dddf2bab93
10 changed files with 42 additions and 42 deletions

View File

@@ -5,25 +5,6 @@ import kotlin.experimental.inv
import kotlin.experimental.or import kotlin.experimental.or
import kotlin.experimental.xor import kotlin.experimental.xor
fun ByteArray.invInto(
destination: ByteArray,
destinationOffset: Int = 0,
startIndex: Int = 0,
endIndex: Int = size,
) {
val length = endIndex - startIndex
require(length >= 0)
require(startIndex in 0..(size - length))
require(destinationOffset in 0..(destination.size - length))
repeat(length) { i ->
destination[destinationOffset + i] = this[startIndex + i].inv()
}
}
fun ByteArray.inv() =
ByteArray(size).also { invInto(it) }
private inline fun ByteArray.combineInto( private inline fun ByteArray.combineInto(
that: ByteArray, that: ByteArray,
destination: ByteArray, destination: ByteArray,
@@ -53,6 +34,25 @@ private inline fun ByteArray.combine(
return ByteArray(size).also { combineInto(that, it, combine = combine) } return ByteArray(size).also { combineInto(that, it, combine = combine) }
} }
fun ByteArray.invInto(
destination: ByteArray,
destinationOffset: Int = 0,
startIndex: Int = 0,
endIndex: Int = size,
) {
val length = endIndex - startIndex
require(length >= 0)
require(startIndex in 0..(size - length))
require(destinationOffset in 0..(destination.size - length))
repeat(length) { i ->
destination[destinationOffset + i] = this[startIndex + i].inv()
}
}
fun ByteArray.inv(): ByteArray =
ByteArray(size).also { invInto(it) }
fun ByteArray.andInto( fun ByteArray.andInto(
that: ByteArray, that: ByteArray,
destination: ByteArray, destination: ByteArray,
@@ -62,7 +62,7 @@ fun ByteArray.andInto(
thatStartIndex: Int = 0, thatStartIndex: Int = 0,
) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a and b } ) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a and b }
infix fun ByteArray.and(that: ByteArray) = infix fun ByteArray.and(that: ByteArray): ByteArray =
combine(that) { a, b -> a and b } combine(that) { a, b -> a and b }
fun ByteArray.orInto( fun ByteArray.orInto(
@@ -74,7 +74,7 @@ fun ByteArray.orInto(
thatStartIndex: Int = 0, thatStartIndex: Int = 0,
) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a or b } ) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a or b }
infix fun ByteArray.or(that: ByteArray) = infix fun ByteArray.or(that: ByteArray): ByteArray =
combine(that) { a, b -> a or b } combine(that) { a, b -> a or b }
fun ByteArray.xorInto( fun ByteArray.xorInto(
@@ -86,5 +86,5 @@ fun ByteArray.xorInto(
thatStartIndex: Int = 0, thatStartIndex: Int = 0,
) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a xor b } ) = combineInto(that, destination, destinationOffset, startIndex, endIndex, thatStartIndex) { a, b -> a xor b }
infix fun ByteArray.xor(that: ByteArray) = infix fun ByteArray.xor(that: ByteArray): ByteArray =
combine(that) { a, b -> a xor b } combine(that) { a, b -> a xor b }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.int
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun Int.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun Int.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(4).also { copyInto(it, order = order) } ByteArray(4).also { copyInto(it, order = order) }
fun Int.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun Int.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(4).also { copyInto(it, order = order) } UByteArray(4).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.intarray
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun IntArray.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun IntArray.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(size * 4).also { copyInto(it, order = order) } ByteArray(size * 4).also { copyInto(it, order = order) }
fun IntArray.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun IntArray.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(size * 4).also { copyInto(it, order = order) } UByteArray(size * 4).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.long
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun Long.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun Long.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(8).also { copyInto(it, order = order) } ByteArray(8).also { copyInto(it, order = order) }
fun Long.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun Long.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(8).also { copyInto(it, order = order) } UByteArray(8).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.longarray
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun LongArray.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun LongArray.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(size * 8).also { copyInto(it, order = order) } ByteArray(size * 8).also { copyInto(it, order = order) }
fun LongArray.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun LongArray.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(size * 8).also { copyInto(it, order = order) } UByteArray(size * 8).also { copyInto(it, order = order) }

View File

@@ -12,7 +12,7 @@ fun UByteArray.invInto(
endIndex: Int = size, endIndex: Int = size,
) = asByteArray().invInto(destination.asByteArray(), destinationOffset, startIndex, endIndex) ) = asByteArray().invInto(destination.asByteArray(), destinationOffset, startIndex, endIndex)
fun UByteArray.inv() = fun UByteArray.inv(): UByteArray =
UByteArray(size).also { invInto(it) } UByteArray(size).also { invInto(it) }
fun UByteArray.andInto( fun UByteArray.andInto(
@@ -31,7 +31,7 @@ fun UByteArray.andInto(
thatStartIndex, thatStartIndex,
) )
infix fun UByteArray.and(that: UByteArray) = infix fun UByteArray.and(that: UByteArray): UByteArray =
UByteArray(size).also { andInto(that, it) } UByteArray(size).also { andInto(that, it) }
fun UByteArray.orInto( fun UByteArray.orInto(
@@ -50,7 +50,7 @@ fun UByteArray.orInto(
thatStartIndex, thatStartIndex,
) )
infix fun UByteArray.or(that: UByteArray) = infix fun UByteArray.or(that: UByteArray): UByteArray =
UByteArray(size).also { orInto(that, it) } UByteArray(size).also { orInto(that, it) }
fun UByteArray.xorInto( fun UByteArray.xorInto(
@@ -69,5 +69,5 @@ fun UByteArray.xorInto(
thatStartIndex, thatStartIndex,
) )
infix fun UByteArray.xor(that: UByteArray) = infix fun UByteArray.xor(that: UByteArray): UByteArray =
UByteArray(size).also { xorInto(that, it) } UByteArray(size).also { xorInto(that, it) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.uint
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun UInt.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun UInt.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(4).also { copyInto(it, order = order) } ByteArray(4).also { copyInto(it, order = order) }
fun UInt.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun UInt.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(4).also { copyInto(it, order = order) } UByteArray(4).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.uintarray
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun UIntArray.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun UIntArray.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(size * 4).also { copyInto(it, order = order) } ByteArray(size * 4).also { copyInto(it, order = order) }
fun UIntArray.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun UIntArray.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(size * 4).also { copyInto(it, order = order) } UByteArray(size * 4).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.ulong
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun ULong.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun ULong.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(8).also { copyInto(it, order = order) } ByteArray(8).also { copyInto(it, order = order) }
fun ULong.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun ULong.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(8).also { copyInto(it, order = order) } UByteArray(8).also { copyInto(it, order = order) }

View File

@@ -3,8 +3,8 @@ package com.infendro.bytes.ulongarray
import com.infendro.bytes.ByteOrder import com.infendro.bytes.ByteOrder
import com.infendro.bytes.ByteOrder.BIG_ENDIAN import com.infendro.bytes.ByteOrder.BIG_ENDIAN
fun ULongArray.toByteArray(order: ByteOrder = BIG_ENDIAN) = fun ULongArray.toByteArray(order: ByteOrder = BIG_ENDIAN): ByteArray =
ByteArray(size * 8).also { copyInto(it, order = order) } ByteArray(size * 8).also { copyInto(it, order = order) }
fun ULongArray.toUByteArray(order: ByteOrder = BIG_ENDIAN) = fun ULongArray.toUByteArray(order: ByteOrder = BIG_ENDIAN): UByteArray =
UByteArray(size * 8).also { copyInto(it, order = order) } UByteArray(size * 8).also { copyInto(it, order = order) }