INNER CODE UNIT · Kotlin
ScopedHook
NexAlloy/NexAlloy · app/src/main/java/io/github/nexalloy/Helper.kt:117
class ScopedHook : XC_MethodHook() {
inline fun hookInnerMethod(
hookMethod: Member,
crossinline before: IScopedHookCallback,
crossinline after: IScopedHookCallback
) {
hookMethod.hookMethod {
before {
val outerParam = outerParam.get() ?: return@before
val depth = innerDepth.get() ?: 0
innerDepth.set(depth + 1)
before(ScopedHookParam(outerParam, depth), it)
}
after {
val outerParam = outerParam.get() ?: return@after
val depth = ((innerDepth.get() ?: 0) - 1).coerceAtLeast(0)
innerDepth.set(depth)