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