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

34 lines
573 B
PHP

<?php
namespace Automata\Memory;
use InvalidArgumentException;
use Program\Program;
class ProgramMemory
{
/** @var Program[] */
private array $memory = [];
public function write(Program $program): void
{
$this->guardInvalidProgramNumber($program->N);
$this->memory[$program->N] = $program;
}
public function read(int $N): ?Program
{
return @$this->memory[$N];
}
private function guardInvalidProgramNumber(int $N): void
{
if ($N > 9998 || $N < 9001) {
throw new InvalidArgumentException('Program number must be in range 9001 - 9998');
}
}
}