IntArray and LongArray serialization
This commit is contained in:
committed by
TeamCityServer
parent
387b84b37c
commit
ba5582de99
@@ -36,6 +36,36 @@ abstract class IrArrayReader(private val buffer: ReadBuffer) {
|
||||
class IrArrayFileReader(file: File) : IrArrayReader(ReadBuffer.WeakFileBuffer(file.javaFile()))
|
||||
class IrArrayMemoryReader(bytes: ByteArray) : IrArrayReader(ReadBuffer.MemoryBuffer(bytes))
|
||||
|
||||
class IrIntArrayMemoryReader(bytes: ByteArray) {
|
||||
|
||||
val array = run {
|
||||
val buffer = ReadBuffer.MemoryBuffer(bytes)
|
||||
|
||||
val result = IntArray(buffer.int)
|
||||
|
||||
for (i in result.indices) {
|
||||
result[i] = buffer.int
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
class IrLongArrayMemoryReader(bytes: ByteArray) {
|
||||
|
||||
val array = run {
|
||||
val buffer = ReadBuffer.MemoryBuffer(bytes)
|
||||
|
||||
val result = LongArray(buffer.int)
|
||||
|
||||
for (i in result.indices) {
|
||||
result[i] = buffer.long
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
abstract class IrMultiArrayReader(private val buffer: ReadBuffer) {
|
||||
private val indexToOffset: IntArray
|
||||
private val indexIndexToOffset = mutableMapOf<Int, IntArray>()
|
||||
@@ -188,3 +218,6 @@ class DeclarationIrMultiTableFileReader(file: File) :
|
||||
|
||||
class DeclarationIrMultiTableMemoryReader(bytes: ByteArray) :
|
||||
IrMultiTableReader<DeclarationId>(ReadBuffer.MemoryBuffer(bytes), { DeclarationId(int) })
|
||||
|
||||
|
||||
fun IrArrayReader.toArray(): Array<ByteArray> = Array(this.entryCount()) { i -> this.tableItemBytes(i) }
|
||||
@@ -74,6 +74,22 @@ class IrMemoryStringWriter(private val data: List<String>) : IrMemoryWriter() {
|
||||
}
|
||||
}
|
||||
|
||||
class IrMemoryIntArrayWriter(private val data: List<Int>) : IrMemoryWriter() {
|
||||
override fun writeData(dataOutput: DataOutput) {
|
||||
dataOutput.writeInt(data.size)
|
||||
|
||||
data.forEach { dataOutput.writeInt(it) }
|
||||
}
|
||||
}
|
||||
|
||||
class IrMemoryLongArrayWriter(private val data: List<Long>) : IrMemoryWriter() {
|
||||
override fun writeData(dataOutput: DataOutput) {
|
||||
dataOutput.writeInt(data.size)
|
||||
|
||||
data.forEach { dataOutput.writeLong(it) }
|
||||
}
|
||||
}
|
||||
|
||||
class IrByteArrayWriter(private val data: List<ByteArray>) : IrFileWriter() {
|
||||
override fun writeData(dataOutput: DataOutput) {
|
||||
dataOutput.writeInt(data.size)
|
||||
|
||||
Reference in New Issue
Block a user