| 1: | <?php declare(strict_types = 1); |
| 2: | |
| 3: | namespace ApiGen\Info\Expr; |
| 4: | |
| 5: | use ApiGen\Info\ExprInfo; |
| 6: | |
| 7: | use function abs; |
| 8: | use function base_convert; |
| 9: | |
| 10: | |
| 11: | class IntegerExprInfo implements ExprInfo |
| 12: | { |
| 13: | public function __construct( |
| 14: | public int $value, |
| 15: | public int $base, |
| 16: | public string $raw, |
| 17: | ) { |
| 18: | } |
| 19: | |
| 20: | |
| 21: | public function toString(): string |
| 22: | { |
| 23: | if ($this->base === 10) { |
| 24: | return (string) $this->value; |
| 25: | } |
| 26: | |
| 27: | $sign = $this->value < 0 ? '-' : ''; |
| 28: | $base = [2 => '0b', 8 => '0', 16 => '0x'][$this->base]; |
| 29: | return $sign . $base . base_convert((string) abs($this->value), 10, $this->base); |
| 30: | } |
| 31: | } |
| 32: | |