From 46c58f21fd9d0248833a3cd435a3d96e78ac1473 Mon Sep 17 00:00:00 2001 From: memory-agape Date: Thu, 2 May 2019 11:02:19 +0900 Subject: [PATCH 1/4] Rename converter to normalizer --- src/Kernel/Mnemonics/_invokevirtual.php | 4 ++-- src/Utilities/{Converter.php => Normalizer.php} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/Utilities/{Converter.php => Normalizer.php} (98%) diff --git a/src/Kernel/Mnemonics/_invokevirtual.php b/src/Kernel/Mnemonics/_invokevirtual.php index 6ed384d6..7480e6cf 100644 --- a/src/Kernel/Mnemonics/_invokevirtual.php +++ b/src/Kernel/Mnemonics/_invokevirtual.php @@ -10,7 +10,7 @@ use PHPJava\Utilities\AttributionResolver; use PHPJava\Utilities\BinaryTool; use PHPJava\Utilities\ClassResolver; -use PHPJava\Utilities\Converter; +use PHPJava\Utilities\Normalizer; use PHPJava\Utilities\Formatter; use PHPJava\Utilities\TypeResolver; @@ -37,7 +37,7 @@ public function execute(): void $arguments[$i] = $this->popFromOperandStack(); } - $arguments = Converter::normalizeArguments( + $arguments = Normalizer::normalizeArguments( $arguments, $signature['arguments'] ); diff --git a/src/Utilities/Converter.php b/src/Utilities/Normalizer.php similarity index 98% rename from src/Utilities/Converter.php rename to src/Utilities/Normalizer.php index 6d29e0e1..cd2b472b 100644 --- a/src/Utilities/Converter.php +++ b/src/Utilities/Normalizer.php @@ -5,7 +5,7 @@ use PHPJava\Kernel\Types\_Array\Collection; use PHPJava\Kernel\Types\Type; -class Converter +class Normalizer { /** From e7c3a432f9f1f22995b74125de6ea2e267f10f84 Mon Sep 17 00:00:00 2001 From: memory-agape Date: Thu, 2 May 2019 11:21:39 +0900 Subject: [PATCH 2/4] Rename --- src/Exceptions/ConverterException.php | 6 ---- src/Exceptions/NormalizerException.php | 6 ++++ src/Kernel/Types/_Array/Collection.php | 13 +++++++- src/Utilities/Normalizer.php | 45 +++++++++++++++----------- 4 files changed, 45 insertions(+), 25 deletions(-) delete mode 100644 src/Exceptions/ConverterException.php create mode 100644 src/Exceptions/NormalizerException.php diff --git a/src/Exceptions/ConverterException.php b/src/Exceptions/ConverterException.php deleted file mode 100644 index e11c9456..00000000 --- a/src/Exceptions/ConverterException.php +++ /dev/null @@ -1,6 +0,0 @@ -data[$offset] = $value; } + + public function count() + { + return count($this->data); + } + + public function getIterator() + { + return new \ArrayIterator($this->data); + } } diff --git a/src/Utilities/Normalizer.php b/src/Utilities/Normalizer.php index cd2b472b..88cdf046 100644 --- a/src/Utilities/Normalizer.php +++ b/src/Utilities/Normalizer.php @@ -1,7 +1,7 @@ &$argument) { + foreach ($values as $key => &$value) { + $realType = $normalizeTypes[$key] ?? null; + if ($realType === null) { + throw new NormalizerException('Broken arguments parser.'); + } /** - * @var Type|Collection $argument + * @var Type|Collection $value */ - if ($argument instanceof Collection) { - // TODO: convert an array contents. + if ($value instanceof Collection) { + $value = static::normalizeValues( + $value, + array_fill( + 0, + count($value), + $realType + ) + ); continue; } - $realType = $acceptedArguments[$key] ?? null; - if ($realType === null) { - throw new ConverterException('Broken arguments parser.'); - } if ($realType['type'] === 'class') { // TODO: implements up-cast and down-cast continue; } $initiateClass = TypeResolver::TYPES_MAP[$realType['type']]; - if ($argument instanceof $initiateClass) { + if ($value instanceof $initiateClass) { continue; } - $argument = new $initiateClass(Extractor::realValue($argument)); + $value = new $initiateClass( + Extractor::realValue($value) + ); } - return $arguments; + return $values; } } From ecce4c2b43cf26c052e4ddb711ca31f62e6e98aa Mon Sep 17 00:00:00 2001 From: memory-agape Date: Thu, 2 May 2019 11:22:31 +0900 Subject: [PATCH 3/4] Fix PHP Doc --- src/Utilities/Normalizer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Utilities/Normalizer.php b/src/Utilities/Normalizer.php index 88cdf046..f769ac61 100644 --- a/src/Utilities/Normalizer.php +++ b/src/Utilities/Normalizer.php @@ -11,7 +11,7 @@ class Normalizer /** * @param array|Collection $values * @param array $normalizeTypes - * @return array + * @return array|Collection * @throws NormalizerException */ public static function normalizeValues($values, array $normalizeTypes) From 10c589de0c31ab08f0ada6871d05224467d1d902 Mon Sep 17 00:00:00 2001 From: memory-agape Date: Thu, 2 May 2019 12:08:13 +0900 Subject: [PATCH 4/4] Forgot to replace --- src/Kernel/Mnemonics/_invokevirtual.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Kernel/Mnemonics/_invokevirtual.php b/src/Kernel/Mnemonics/_invokevirtual.php index 7480e6cf..cb65c6be 100644 --- a/src/Kernel/Mnemonics/_invokevirtual.php +++ b/src/Kernel/Mnemonics/_invokevirtual.php @@ -37,7 +37,7 @@ public function execute(): void $arguments[$i] = $this->popFromOperandStack(); } - $arguments = Normalizer::normalizeArguments( + $arguments = Normalizer::normalizeValues( $arguments, $signature['arguments'] );