xref: /aosp_15_r20/external/leakcanary2/shark/src/main/java/shark/internal/ReferenceReader.kt (revision d9e8da70d8c9df9a41d7848ae506fb3115cae6e6)
1 package shark.internal
2 
3 import shark.HeapGraph
4 import shark.HeapObject
5 
6 internal fun interface ReferenceReader<T : HeapObject> {
7 
8   /**
9    * Returns the sequences of non null outgoing references from [source]. Outgoing refs
10    * can be actual JVM references or they can be virtual references when simplifying known data
11    * structures.
12    *
13    * Whenever possible, the returned sequence should be sorted in a way that ensures consistent
14    * graph traversal across heap dumps.
15    *
16    * The returned sequence may contain several [Reference] with an identical
17    * [Reference.valueObjectId].
18    */
readnull19   fun read(source: T): Sequence<Reference>
20 
21   fun interface Factory<T : HeapObject> {
22     fun create(graph: HeapGraph): ReferenceReader<T>
23   }
24 }
25