This repository was archived by the owner on Jan 20, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +19
-6
lines changed
src/main/kotlin/com/wrongwrong/mapk/core Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -6,20 +6,33 @@ import kotlin.reflect.jvm.isAccessible
66
77class KFunctionForCall <T >(private val function : KFunction <T >, instance : Any? = null ) {
88 val parameters: List <KParameter > = function.parameters
9- private val originalArgumentBucket: List <Any ?>
10- val argumentBucket: Array <Any ?> get() = originalArgumentBucket.toTypedArray()
9+ private val originalArgumentBucket: ArgumentBucket
10+
11+ fun getArgumentBucket (): ArgumentBucket = originalArgumentBucket.clone()
1112
1213 init {
1314 // この関数には確実にアクセスするためアクセシビリティ書き換え
1415 function.isAccessible = true
1516 originalArgumentBucket = if (instance != null ) {
16- List (parameters.size) { if (it == 0 ) instance else null }
17+ ArgumentBucket (
18+ Array (parameters.size) { if (it == 0 ) instance else null },
19+ 1 ,
20+ generateSequence(1 ) { it.shl(1 ) }
21+ .take(parameters.size)
22+ .toList()
23+ )
1724 } else {
18- List (parameters.size) { null }
25+ ArgumentBucket (
26+ Array (parameters.size) { null },
27+ 0 ,
28+ generateSequence(1 ) { it.shl(1 ) }
29+ .take(parameters.size)
30+ .toList()
31+ )
1932 }
2033 }
2134
22- fun call (arguments : Array < Any ?> ): T {
23- return function.call(* arguments )
35+ fun call (argumentBucket : ArgumentBucket ): T {
36+ return function.call(* argumentBucket.bucket )
2437 }
2538}
You can’t perform that action at this time.
0 commit comments