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 }