philips-cnc6600-interpreter/src/Automata/Memory/ToolMemory.php

34 lines
544 B
PHP

<?php
namespace Automata\Memory;
use Automata\ToolData;
use InvalidArgumentException;
class ToolMemory
{
/** @var ToolData[] */
private array $memory = [];
public function write(ToolData $tool): void
{
$this->guardInvalidToolNumber($tool->T);
$this->memory[$tool->T] = $tool;
}
public function read(int $T): ?ToolData
{
return @$this->memory[$T];
}
private function guardInvalidToolNumber(int $T): void
{
if ($T < 1 || $T > 64) {
throw new InvalidArgumentException('Tool number must be in range 1 - 64');
}
}
}