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 IrArrayFileReader(file: File) : IrArrayReader(ReadBuffer.WeakFileBuffer(file.javaFile()))
|
||||||
class IrArrayMemoryReader(bytes: ByteArray) : IrArrayReader(ReadBuffer.MemoryBuffer(bytes))
|
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) {
|
abstract class IrMultiArrayReader(private val buffer: ReadBuffer) {
|
||||||
private val indexToOffset: IntArray
|
private val indexToOffset: IntArray
|
||||||
private val indexIndexToOffset = mutableMapOf<Int, IntArray>()
|
private val indexIndexToOffset = mutableMapOf<Int, IntArray>()
|
||||||
@@ -188,3 +218,6 @@ class DeclarationIrMultiTableFileReader(file: File) :
|
|||||||
|
|
||||||
class DeclarationIrMultiTableMemoryReader(bytes: ByteArray) :
|
class DeclarationIrMultiTableMemoryReader(bytes: ByteArray) :
|
||||||
IrMultiTableReader<DeclarationId>(ReadBuffer.MemoryBuffer(bytes), { DeclarationId(int) })
|
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() {
|
class IrByteArrayWriter(private val data: List<ByteArray>) : IrFileWriter() {
|
||||||
override fun writeData(dataOutput: DataOutput) {
|
override fun writeData(dataOutput: DataOutput) {
|
||||||
dataOutput.writeInt(data.size)
|
dataOutput.writeInt(data.size)
|
||||||
|
|||||||
Reference in New Issue
Block a user