Convert PackageStructure constants to enum cases

This commit is contained in:
netkas 2024-09-14 00:19:53 -04:00
parent c687d0394d
commit 321fef4228
3 changed files with 48 additions and 48 deletions

View file

@ -168,7 +168,7 @@
throw new IOException(sprintf('File \'%s\' is not a valid package file (corrupted header)', $file_path), $e);
}
if(!isset($this->headers[PackageStructure::FILE_VERSION]))
if(!isset($this->headers[PackageStructure::FILE_VERSION->value]))
{
throw new IOException(sprintf('File \'%s\' is not a valid package file (invalid header)', $file_path));
}
@ -213,7 +213,7 @@
*/
public function getFileVersion(): string
{
return $this->headers[PackageStructure::FILE_VERSION];
return $this->headers[PackageStructure::FILE_VERSION->value];
}
/**
@ -223,7 +223,7 @@
*/
public function getFlags(): array
{
return $this->headers[PackageStructure::FLAGS];
return $this->headers[PackageStructure::FLAGS->value];
}
/**
@ -234,7 +234,7 @@
*/
public function getFlag(string $name): bool
{
return in_array($name, $this->headers[PackageStructure::FLAGS], true);
return in_array($name, $this->headers[PackageStructure::FLAGS->value], true);
}
/**
@ -244,7 +244,7 @@
*/
public function getDirectory(): array
{
return $this->headers[PackageStructure::DIRECTORY];
return $this->headers[PackageStructure::DIRECTORY->value];
}
/**
@ -255,15 +255,15 @@
*/
public function get(string $name): string
{
if(!isset($this->headers[PackageStructure::DIRECTORY][$name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value][$name]))
{
throw new RuntimeException(sprintf('File \'%s\' not found in package', $name));
}
$location = explode(':', $this->headers[PackageStructure::DIRECTORY][$name]);
$location = explode(':', $this->headers[PackageStructure::DIRECTORY->value][$name]);
fseek($this->package_file, ($this->data_offset + (int)$location[0]));
if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS], true))
if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true))
{
return gzuncompress(fread($this->package_file, (int)$location[1]));
}
@ -279,12 +279,12 @@
*/
public function getPointer(string $name): array
{
if(!isset($this->headers[PackageStructure::DIRECTORY][$name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$name]]))
{
throw new RuntimeException(sprintf('Resource \'%s\' not found in package', $name));
}
$location = explode(':', $this->headers[PackageStructure::DIRECTORY][$name]);
$location = explode(':', $this->headers[PackageStructure::DIRECTORY->value[$name]]);
return [(int)$location[0], (int)$location[1]];
}
@ -296,7 +296,7 @@
*/
public function exists(string $name): bool
{
return isset($this->headers[PackageStructure::DIRECTORY][$name]);
return isset($this->headers[PackageStructure::DIRECTORY->value[$name]]);
}
/**
@ -327,7 +327,7 @@
return $this->cache[$directory];
}
if(!isset($this->headers[PackageStructure::DIRECTORY][$directory]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]]))
{
throw new ConfigurationException('Package does not contain an assembly');
}
@ -353,7 +353,7 @@
return $this->cache[$directory];
}
if(!isset($this->headers[PackageStructure::DIRECTORY][$directory]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]]))
{
throw new ConfigurationException('Package does not contain metadata');
}
@ -382,7 +382,7 @@
return $this->cache[$directory];
}
if(!isset($this->headers[PackageStructure::DIRECTORY][$directory]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]]))
{
return null;
}
@ -402,7 +402,7 @@
$dependencies = [];
$directory = sprintf('@%s:', PackageDirectory::DEPENDENCIES);
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_starts_with($name, $directory))
{
@ -423,7 +423,7 @@
public function getDependency(string $name): Dependency
{
$dependency_name = sprintf('@%s:%s', PackageDirectory::DEPENDENCIES, $name);
if(!isset($this->headers[PackageStructure::DIRECTORY][$dependency_name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$dependency_name]]))
{
throw new ConfigurationException(sprintf('Dependency \'%s\' not found in package', $name));
}
@ -454,7 +454,7 @@
$execution_units = [];
$directory = sprintf('@%s:', PackageDirectory::EXECUTION_UNITS);
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_starts_with($name, $directory))
{
@ -475,7 +475,7 @@
public function getExecutionUnit(string $name): ExecutionUnit
{
$execution_unit_name = sprintf('@%s:%s', PackageDirectory::EXECUTION_UNITS, $name);
if(!isset($this->headers[PackageStructure::DIRECTORY][$execution_unit_name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$execution_unit_name]]))
{
throw new ConfigurationException(sprintf('Execution unit \'%s\' not found in package', $name));
}
@ -506,7 +506,7 @@
$components = [];
$directory = sprintf('@%s:', PackageDirectory::COMPONENTS);
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_starts_with($name, $directory))
{
@ -527,7 +527,7 @@
$class_map = [];
$directory = sprintf('@%s:', PackageDirectory::CLASS_POINTER);
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_starts_with($name, $directory))
{
@ -548,7 +548,7 @@
public function getComponent(string $name): Component
{
$component_name = sprintf('@%s:%s', PackageDirectory::COMPONENTS, $name);
if(!isset($this->headers[PackageStructure::DIRECTORY][$component_name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value][$component_name]))
{
throw new ConfigurationException(sprintf('Component \'%s\' not found in package', $name));
}
@ -579,7 +579,7 @@
public function getComponentByClass(string $class): Component
{
$class_name = sprintf('@%s:%s', PackageDirectory::CLASS_POINTER, $class);
if(!isset($this->headers[PackageStructure::DIRECTORY][$class_name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$class_name]]))
{
throw new ConfigurationException(sprintf('Class map \'%s\' not found in package', $class));
}
@ -597,7 +597,7 @@
$resources = [];
$directory = sprintf('@%s:', PackageDirectory::RESOURCES);
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_starts_with($name, $directory))
{
@ -618,7 +618,7 @@
public function getResource(string $name): Resource
{
$resource_name = sprintf('@%s:%s', PackageDirectory::RESOURCES, $name);
if(!isset($this->headers[PackageStructure::DIRECTORY][$resource_name]))
if(!isset($this->headers[PackageStructure::DIRECTORY->value[$resource_name]]))
{
throw new ConfigurationException(sprintf('Resource \'%s\' not found in package', $name));
}
@ -647,7 +647,7 @@
*/
public function find(string $filename): string|false
{
foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location)
foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location)
{
if(str_ends_with($name, $filename))
{

View file

@ -108,9 +108,9 @@
$this->temp_file = @fopen($this->temporary_path, 'wb'); // Create a temporary data file
$this->package_file = @fopen($file_path, 'wb');
$this->headers = [
PackageStructure::FILE_VERSION => PackageStructureVersions::_2_0->value,
PackageStructure::FLAGS => [],
PackageStructure::DIRECTORY => []
PackageStructure::FILE_VERSION->value => PackageStructureVersions::_2_0->value,
PackageStructure::FLAGS->value => [],
PackageStructure::DIRECTORY->value => []
];
if($this->temp_file === false || $this->package_file === false)
@ -126,7 +126,7 @@
*/
public function getFileVersion(): string
{
return (string)$this->headers[PackageStructure::FILE_VERSION];
return (string)$this->headers[PackageStructure::FILE_VERSION->value];
}
/**
@ -137,7 +137,7 @@
*/
public function setFileVersion(string $version): void
{
$this->headers[PackageStructure::FILE_VERSION] = $version;
$this->headers[PackageStructure::FILE_VERSION->value] = $version;
}
/**
@ -147,7 +147,7 @@
*/
public function getFlags(): array
{
return (array)$this->headers[PackageStructure::FLAGS];
return (array)$this->headers[PackageStructure::FLAGS->value];
}
/**
@ -164,7 +164,7 @@
throw new IOException('Cannot set flags after data has been written to the package');
}
$this->headers[PackageStructure::FLAGS] = $flags;
$this->headers[PackageStructure::FLAGS->value] = $flags;
}
/**
@ -181,9 +181,9 @@
throw new IOException('Cannot add a flag after data has been written to the package');
}
if(!in_array($flag, $this->headers[PackageStructure::FLAGS], true))
if(!in_array($flag, $this->headers[PackageStructure::FLAGS->value], true))
{
$this->headers[PackageStructure::FLAGS][] = $flag;
$this->headers[PackageStructure::FLAGS->value][] = $flag;
}
}
@ -201,7 +201,7 @@
throw new IOException('Cannot remove a flag after data has been written to the package');
}
$this->headers[PackageStructure::FLAGS] = array_diff($this->headers[PackageStructure::FLAGS], [$flag]);
$this->headers[PackageStructure::FLAGS->value] = array_diff($this->headers[PackageStructure::FLAGS->value], [$flag]);
}
/**
@ -213,22 +213,22 @@
*/
public function add(string $name, string $data): array
{
if(isset($this->headers[PackageStructure::DIRECTORY][$name]))
if(isset($this->headers[PackageStructure::DIRECTORY->value][$name]))
{
return explode(':', $this->headers[PackageStructure::DIRECTORY][$name]);
return explode(':', $this->headers[PackageStructure::DIRECTORY->value][$name]);
}
if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS], true))
if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true))
{
if(in_array(PackageFlags::LOW_COMPRESSION, $this->headers[PackageStructure::FLAGS], true))
if(in_array(PackageFlags::LOW_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true))
{
$data = gzcompress($data, 1);
}
else if(in_array(PackageFlags::MEDIUM_COMPRESSION, $this->headers[PackageStructure::FLAGS], true))
else if(in_array(PackageFlags::MEDIUM_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true))
{
$data = gzcompress($data, 6);
}
else if(in_array(PackageFlags::HIGH_COMPRESSION, $this->headers[PackageStructure::FLAGS], true))
else if(in_array(PackageFlags::HIGH_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true))
{
$data = gzcompress($data, 9);
}
@ -239,7 +239,7 @@
}
$pointer = sprintf("%d:%d", ftell($this->temp_file), strlen($data));
$this->headers[PackageStructure::DIRECTORY][$name] = $pointer;
$this->headers[PackageStructure::DIRECTORY->value][$name] = $pointer;
$this->data_written = true;
fwrite($this->temp_file, $data);
@ -256,12 +256,12 @@
*/
public function addPointer(string $name, int $offset, int $length): void
{
if(isset($this->headers[PackageStructure::DIRECTORY][$name]))
if(isset($this->headers[PackageStructure::DIRECTORY->value][$name]))
{
return;
}
$this->headers[PackageStructure::DIRECTORY][$name] = sprintf("%d:%d", $offset, $length);
$this->headers[PackageStructure::DIRECTORY->value][$name] = sprintf("%d:%d", $offset, $length);
}
/**

View file

@ -22,11 +22,11 @@
namespace ncc\Enums;
final class PackageStructure
enum PackageStructure : int
{
public const FILE_VERSION = 0x73746669;
case FILE_VERSION = 0x73746669;
public const FLAGS = 0x73736166;
case FLAGS = 0x73736166;
public const DIRECTORY = 0x6f746365;
case DIRECTORY = 0x6f746365;
}