xref: /aosp_15_r20/external/leakcanary2/shark-hprof/src/main/java/shark/ValueHolder.kt (revision d9e8da70d8c9df9a41d7848ae506fb3115cae6e6)
1 package shark
2 
3 import shark.ValueHolder.ReferenceHolder
4 
5 /**
6  * A value in the heap dump, which can be a [ReferenceHolder] or
7  * a primitive type.
8  */
9 sealed class ValueHolder {
10   data class ReferenceHolder(val value: Long) : ValueHolder() {
11     val isNull
12       get() = value == NULL_REFERENCE
13   }
14 
15   data class BooleanHolder(val value: Boolean) : ValueHolder()
16   data class CharHolder(val value: Char) : ValueHolder()
17   data class FloatHolder(val value: Float) : ValueHolder()
18   data class DoubleHolder(val value: Double) : ValueHolder()
19   data class ByteHolder(val value: Byte) : ValueHolder()
20   data class ShortHolder(val value: Short) : ValueHolder()
21   data class IntHolder(val value: Int) : ValueHolder()
22   data class LongHolder(val value: Long) : ValueHolder()
23 
24   companion object {
25     const val NULL_REFERENCE = 0L
26   }
27 }