xref: /aosp_15_r20/external/leakcanary2/shark-hprof-test/src/main/kotlin/shark/ProguardMappingHelper.kt (revision d9e8da70d8c9df9a41d7848ae506fb3115cae6e6)

<lambda>null1 package shark
2 
3 class ProguardMappingHelper(
4   private val proguardMapping: ProguardMapping
5 ) {
6   fun clazz(
7     className: Pair<String, String>,
8     fieldsBlock: Class.() -> Unit = {}
9   ) {
10     val clazz = Class(className)
11     fieldsBlock(clazz)
12     proguardMapping.addMapping(clazz.nameMapping.second, clazz.nameMapping.first)
13     clazz.fieldMappings.forEach { field ->
14       proguardMapping.addMapping("${clazz.nameMapping.second}.${field.second}", field.first)
15     }
16   }
17 
18   inner class Class(val nameMapping: Pair<String, String>) {
19     val fieldMappings = mutableSetOf<Pair<String, String>>()
20   }
21 
22   fun Class.field(block: () -> Pair<String, String>) {
23     fieldMappings.add(block())
24   }
25 }
26 
createnull27 fun ProguardMapping.create(block: ProguardMappingHelper.() -> Unit): ProguardMapping {
28   block(ProguardMappingHelper(this))
29   return this
30 }