55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2018 Spomky-Labs
|
|
*
|
|
* This software may be modified and distributed under the terms
|
|
* of the MIT license. See the LICENSE file for details.
|
|
*/
|
|
|
|
namespace CBOR\OtherObject;
|
|
|
|
use CBOR\OtherObject as Base;
|
|
use InvalidArgumentException;
|
|
|
|
final class SimpleObject extends Base
|
|
{
|
|
public static function supportedAdditionalInformation(): array
|
|
{
|
|
return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 24];
|
|
}
|
|
|
|
public static function createFromLoadedData(int $additionalInformation, ?string $data): Base
|
|
{
|
|
return new self($additionalInformation, $data);
|
|
}
|
|
|
|
public function getNormalizedData(bool $ignoreTags = false)
|
|
{
|
|
if (null === $this->data) {
|
|
return $this->getAdditionalInformation();
|
|
}
|
|
|
|
return gmp_intval(gmp_init(bin2hex($this->data), 16));
|
|
}
|
|
|
|
/**
|
|
* @return SimpleObject
|
|
*/
|
|
public static function create(int $value): self
|
|
{
|
|
switch (true) {
|
|
case $value < 24:
|
|
return new self($value, null);
|
|
case $value < 256:
|
|
return new self(24, \chr($value));
|
|
default:
|
|
throw new InvalidArgumentException('The value is not a valid simple value');
|
|
}
|
|
}
|
|
}
|