use Org\Mxchange\CoreFramework\Stack\BaseStacker;
use Org\Mxchange\CoreFramework\Traits\Index\IndexableTrait;
use Org\Mxchange\CoreFramework\Traits\Iterator\IteratorTrait;
-use Org\Mxchange\CoreFramework\Utils\String\StringUtils;
+use Org\Mxchange\CoreFramework\Utils\Strings\StringUtils;
+use Org\Mxchange\CoreFramework\Utils\Arrays\ArrayUtils;
// Import SPL stuff
use \InvalidArgumentException;
*/
$header = explode(chr(BinaryFile::SEPARATOR_HEADER_DATA), $data);
+ // Map numeric indexes to associative indexes
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: header()=%d', count($header)));
+ $header = ArrayUtils::mapNumericKeysToAssociative($header, [
+ BinaryFile::HEADER_NAME_MAGIC,
+ BinaryFile::HEADER_NAME_TOTAL_ENTRIES,
+ BinaryFile::HEADER_NAME_SEEK_POSITION,
+ ]);
+
// Check if the array has only 3 elements
- /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: header(%d)=%s', count($header), print_r($header, true)));
- if (count($header) != 3) {
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('BASE-FILE-STACK: HEADER_ELEMENT_COUNT=%d,header(%d)=%s', BinaryFile::HEADER_ELEMENT_COUNT, count($header), print_r($header, true)));
+ if (count($header) != BinaryFile::HEADER_ELEMENT_COUNT) {
// Header array count is not expected
- throw new UnexpectedValueException(sprintf('data=%s has %d elements, expected 3',
+ throw new UnexpectedValueException(sprintf('data=%s has %d elements, but expected is %d',
$data,
- count($header)
+ count($header),
+ BinaryFile::HEADER_ELEMENT_COUNT
));
- } elseif ($header[0] != StackableFile::STACK_MAGIC) {
+ } elseif ($header[BinaryFile::HEADER_NAME_MAGIC] != StackableFile::STACK_MAGIC) {
// Bad magic
throw new InvalidMagicException($data, self::EXCEPTION_BAD_MAGIC);
}
// Check length of count and seek position
- if (strlen($header[1]) != BinaryFile::LENGTH_COUNT) {
+ if (strlen($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]) != BinaryFile::LENGTH_COUNT) {
// Count length not valid
- throw new UnexpectedValueException(sprintf('header[1](%d)=%s is not expected %d length',
- strlen($header[1]),
- $header[1],
+ throw new UnexpectedValueException(sprintf('header[%s](%d)=%s is not expected %d length',
+ BinaryFile::HEADER_NAME_TOTAL_ENTRIES,
+ strlen($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]),
+ $header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES],
BinaryFile::LENGTH_COUNT
));
- } elseif (strlen($header[1]) != BinaryFile::LENGTH_POSITION) {
+ } elseif (strlen($header[BinaryFile::HEADER_NAME_SEEK_POSITION]) != BinaryFile::LENGTH_POSITION) {
// Position length not valid
- throw new UnexpectedValueException(sprintf('header[2](%d)=%s is not expected %d length',
- strlen($header[1]),
- $header[1],
+ throw new UnexpectedValueException(sprintf('header[%s](%d)=%s is not expected %d length',
+ BinaryFile::HEADER_NAME_SEEK_POSITION,
+ strlen($header[BinaryFile::HEADER_NAME_SEEK_POSITION]),
+ $header[BinaryFile::HEADER_NAME_SEEK_POSITION],
BinaryFile::LENGTH_POSITION
));
}
// Decode count and seek position
- $header[1] = hex2bin($header[1]);
- $header[2] = hex2bin($header[2]);
+ $header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES] = hex2bin($header[BinaryFile::HEADER_NAME_TOTAL_ENTRIES]);
+ $header[BinaryFile::HEADER_NAME_SEEK_POSITION] = hex2bin($header[BinaryFile::HEADER_NAME_SEEK_POSITION]);
// Set header here
$this->getIteratorInstance()->getBinaryFileInstance()->setHeader($header);