xref: /aosp_15_r20/external/leakcanary2/shark/src/main/java/shark/internal/DelegatingObjectReferenceReader.kt (revision d9e8da70d8c9df9a41d7848ae506fb3115cae6e6)
1 package shark.internal
2 
3 import shark.HeapObject
4 import shark.HeapObject.HeapClass
5 import shark.HeapObject.HeapInstance
6 import shark.HeapObject.HeapObjectArray
7 import shark.HeapObject.HeapPrimitiveArray
8 
9 internal class DelegatingObjectReferenceReader(
10   private val classReferenceReader: ReferenceReader<HeapClass>,
11   private val instanceReferenceReader: ReferenceReader<HeapInstance>,
12   private val objectArrayReferenceReader: ReferenceReader<HeapObjectArray>,
13 ) : ReferenceReader<HeapObject> {
readnull14   override fun read(source: HeapObject): Sequence<Reference> {
15     return when(source) {
16       is HeapClass -> classReferenceReader.read(source)
17       is HeapInstance -> instanceReferenceReader.read(source)
18       is HeapObjectArray -> objectArrayReferenceReader.read(source)
19       is HeapPrimitiveArray -> emptySequence()
20     }
21   }
22 }
23