Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
11 / 11 |
ByteMatrix | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
5 | |
100.00% |
11 / 11 |
__construct($dimension) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
getSize() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
get($line, $column) | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
set($line, $column, $value) | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
<?php | |
/* | |
* Mondrian | |
*/ | |
namespace Trismegiste\Mondrian\Algebra; | |
/** | |
* ByteMatrix is a compressed matrix of unsigned shortint | |
* | |
* @author florent | |
*/ | |
class ByteMatrix implements Matrix | |
{ | |
const CHAR_PER_COEFF = 4; | |
protected $dimension; | |
protected $content; | |
/** | |
* build a square matrix | |
* | |
* @param int $dimension size of matrix | |
*/ | |
public function __construct($dimension) | |
{ | |
$this->content = str_repeat(0, self::CHAR_PER_COEFF * $dimension * $dimension); | |
$this->dimension = $dimension; | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
public function getSize() | |
{ | |
return $this->dimension; | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
public function get($line, $column) | |
{ | |
return hexdec(substr($this->content, self::CHAR_PER_COEFF * ($line * $this->dimension + $column), self::CHAR_PER_COEFF)); | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
public function set($line, $column, $value) | |
{ | |
$delta = self::CHAR_PER_COEFF * ($line * $this->dimension + $column); | |
$hex = sprintf('%0' . self::CHAR_PER_COEFF . 'x', $value); | |
for ($i = 0; $i < self::CHAR_PER_COEFF; $i++) { | |
$this->content[$delta + $i] = $hex[$i]; | |
} | |
} | |
} |