mirror of
https://github.com/revanced/revanced-patcher.git
synced 2025-04-30 05:14:26 +02:00
33 lines
884 B
Kotlin
33 lines
884 B
Kotlin
package app.revanced.patcher.util.proxy
|
|
|
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
|
|
import com.android.tools.smali.dexlib2.iface.ClassDef
|
|
|
|
/**
|
|
* A proxy class for a [ClassDef].
|
|
*
|
|
* A class proxy simply holds a reference to the original class
|
|
* and allocates a mutable clone for the original class if needed.
|
|
* @param immutableClass The class to proxy.
|
|
*/
|
|
class ClassProxy internal constructor(
|
|
val immutableClass: ClassDef,
|
|
) {
|
|
/**
|
|
* Weather the proxy was actually used.
|
|
*/
|
|
internal var resolved = false
|
|
|
|
/**
|
|
* The mutable clone of the original class.
|
|
*
|
|
* Note: This is only allocated if the proxy is actually used.
|
|
*/
|
|
val mutableClass by lazy {
|
|
resolved = true
|
|
if (immutableClass is MutableClass) {
|
|
immutableClass
|
|
} else
|
|
MutableClass(immutableClass)
|
|
}
|
|
} |