Implement copy for DataViewMemory

This commit is contained in:
Iaroslav 2020-06-16 01:50:20 +07:00
parent 3f2520eecb
commit 548966f5bd
No known key found for this signature in database
GPG Key ID: 46E15E4A31B3BCD7

View File

@ -11,16 +11,15 @@ class DataViewMemory(val view: DataView) : Memory {
override fun view(offset: Int, length: Int): Memory { override fun view(offset: Int, length: Int): Memory {
require(offset >= 0) { "offset shouldn't be negative: $offset" } require(offset >= 0) { "offset shouldn't be negative: $offset" }
require(length >= 0) { "length shouldn't be negative: $length" } require(length >= 0) { "length shouldn't be negative: $length" }
if (offset + length > size) {
if (offset + length > size)
throw IndexOutOfBoundsException("offset + length > size: $offset + $length > $size") throw IndexOutOfBoundsException("offset + length > size: $offset + $length > $size")
}
return DataViewMemory(DataView(view.buffer, view.byteOffset + offset, length)) return DataViewMemory(DataView(view.buffer, view.byteOffset + offset, length))
} }
override fun copy(): Memory { override fun copy(): Memory = DataViewMemory(DataView(view.buffer.slice(0)))
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
private val reader = object : MemoryReader { private val reader = object : MemoryReader {
override val memory: Memory get() = this@DataViewMemory override val memory: Memory get() = this@DataViewMemory
@ -94,4 +93,4 @@ actual fun Memory.Companion.allocate(length: Int): Memory {
actual fun Memory.Companion.wrap(array: ByteArray): Memory { actual fun Memory.Companion.wrap(array: ByteArray): Memory {
@Suppress("CAST_NEVER_SUCCEEDS") val int8Array = array as Int8Array @Suppress("CAST_NEVER_SUCCEEDS") val int8Array = array as Int8Array
return DataViewMemory(DataView(int8Array.buffer, int8Array.byteOffset, int8Array.length)) return DataViewMemory(DataView(int8Array.buffer, int8Array.byteOffset, int8Array.length))
} }