| Server IP : 93.86.61.54 / Your IP : 216.73.216.60 Web Server : Apache/2.4.62 (Ubuntu) System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64 User : www-data ( 33) PHP Version : 8.4.22 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/projects/nextcloud/apps/mail/vendor/rubix/tensor/optimizers/ |
Upload File : |
<?php
namespace Zephir\Optimizers\FunctionCall;
use Zephir\Call;
use Zephir\CompilationContext;
use Zephir\CompiledExpression;
use Zephir\HeadersManager;
use Zephir\Exception\CompilerException;
use Zephir\Optimizers\OptimizerAbstract;
class TensorAddOptimizer extends OptimizerAbstract
{
/**
* @param mixed[] $expression
* @param \Zephir\Call $call
* @param \Zephir\CompilationContext $context
* @throws \Zephir\Exception\CompilerException
* @return \Zephir\CompiledExpression|bool
*/
public function optimize(array $expression, Call $call, CompilationContext $context)
{
if (!isset($expression['parameters'])) {
return false;
}
if (count($expression['parameters']) !== 2) {
throw new CompilerException(
'Tensor add accepts exactly two arguments, ' . count($expression['parameters']) . 'given.',
$expression
);
}
$call->processExpectedReturn($context);
$symbolVariable = $call->getSymbolVariable();
if ($symbolVariable->getType() !== 'variable') {
throw new CompilerException(
'Return value must only be assigned to a dynamic variable.',
$expression
);
}
if ($call->mustInitSymbolVariable()) {
$symbolVariable->initVariant($context);
}
$context->headersManager->add(
'include/arithmetic',
HeadersManager::POSITION_LAST
);
$resolvedParams = $call->getResolvedParams(
$expression['parameters'],
$context,
$expression
);
$symbol = $context->backend->getVariableCode($symbolVariable);
$context->codePrinter->output(
"tensor_add($symbol, {$resolvedParams[0]}, {$resolvedParams[1]});"
);
return new CompiledExpression(
'variable',
$symbolVariable->getRealName(),
$expression
);
}
}