org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.decompiler.stub.file
import com.intellij.openapi.vfs.VirtualFile
import java.io.DataInput
import java.io.DataOutput
data class CachedAttributeData(val value: T, val timeStamp: Long)
interface FileAttributeService {
fun register(id: String, version: Int, fixedSize: Boolean = true) {}
fun > writeEnumAttribute(id: String, file: VirtualFile, value: T): CachedAttributeData =
CachedAttributeData(value, timeStamp = file.timeStamp)
fun > readEnumAttribute(id: String, file: VirtualFile, klass: Class): CachedAttributeData? = null
fun writeBooleanAttribute(id: String, file: VirtualFile, value: Boolean): CachedAttributeData =
CachedAttributeData(value, timeStamp = file.timeStamp)
fun readBooleanAttribute(id: String, file: VirtualFile): CachedAttributeData? = null
fun write(file: VirtualFile, id: String, value: T, writeValueFun: (DataOutput, T) -> Unit): CachedAttributeData
fun read(file: VirtualFile, id: String, readValueFun: (DataInput) -> T): CachedAttributeData?
}