Completed more structure objects

This commit is contained in:
Zi Xing 2022-04-10 14:17:21 -04:00
parent b5b27f5e20
commit bfe01fd7bc
8 changed files with 231 additions and 43 deletions

0
LICENSE Normal file
View file

View file

@ -36,7 +36,9 @@
*/
public function __construct()
{
$this->Project = new Project();
$this->Assembly = new Assembly();
$this->Build = new Build();
}
/**
@ -63,7 +65,9 @@
public function toArray(bool $bytecode=false): array
{
return [
($bytecode ? Functions::cbc('assembly') : 'assembly') => $this->Assembly->toArray($bytecode)
($bytecode ? Functions::cbc('project') : 'project') => $this->Project->toArray($bytecode),
($bytecode ? Functions::cbc('assembly') : 'assembly') => $this->Assembly->toArray($bytecode),
($bytecode ? Functions::cbc('build') : 'build') => $this->Build->toArray($bytecode),
];
}

View file

@ -1,5 +1,7 @@
<?php
/** @noinspection PhpMissingFieldTypeInspection */
namespace ncc\Objects\ProjectConfiguration;
class Build
@ -49,14 +51,25 @@
/**
* An array of dependencies that are required by default
*
* @var \ncc\Objects\ProjectConfiguration\Dependency[]
* @var Dependency[]
*/
public $Dependencies;
/**
* An array of build configurations
*
* @var \ncc\Objects\BuildConfiguration[]
* @var BuildConfiguration[]
*/
public $Configurations;
/**
* Returns an array representation of the object
*
* @param bool $bytecode
* @return array
*/
public function toArray(bool $bytecode=false): array
{
}
}

View file

@ -1,7 +1,11 @@
<?php
/** @noinspection PhpMissingFieldTypeInspection */
namespace ncc\Objects\ProjectConfiguration;
use ncc\Utilities\Functions;
class BuildConfiguration
{
/**
@ -57,7 +61,7 @@
* Dependencies required for the build configuration, cannot conflict with the
* default dependencies
*
* @var \ncc\Objects\ProjectConfiguration\Dependency[]
* @var Dependency[]
*/
public $Dependencies;
@ -87,18 +91,18 @@
{
$ReturnResults = [];
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('name') : 'name')] = $this->Name;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('options') : 'options')] = $this->Options;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('static_linking') : 'static_linking')] = $this->StaticLinking;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('output_path') : 'output_path')] = $this->OutputPath;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('define_constants') : 'define_constants')] = $this->DefineConstants;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('strict_constants') : 'strict_constants')] = $this->StrictConstants;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('exclude_files') : 'exclude_files')] = $this->ExcludeFiles;
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('dependencies') : 'dependencies')] = [];
$ReturnResults[($bytecode ? Functions::cbc('name') : 'name')] = $this->Name;
$ReturnResults[($bytecode ? Functions::cbc('options') : 'options')] = $this->Options;
$ReturnResults[($bytecode ? Functions::cbc('static_linking') : 'static_linking')] = $this->StaticLinking;
$ReturnResults[($bytecode ? Functions::cbc('output_path') : 'output_path')] = $this->OutputPath;
$ReturnResults[($bytecode ? Functions::cbc('define_constants') : 'define_constants')] = $this->DefineConstants;
$ReturnResults[($bytecode ? Functions::cbc('strict_constants') : 'strict_constants')] = $this->StrictConstants;
$ReturnResults[($bytecode ? Functions::cbc('exclude_files') : 'exclude_files')] = $this->ExcludeFiles;
$ReturnResults[($bytecode ? Functions::cbc('dependencies') : 'dependencies')] = [];
foreach($this->Dependencies as $dependency)
{
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('dependencies') : 'dependencies')][] = $dependency->toArray();
$ReturnResults[($bytecode ? Functions::cbc('dependencies') : 'dependencies')][] = $dependency->toArray();
}
return $ReturnResults;
@ -114,44 +118,47 @@
{
$BuildConfigurationObject = new BuildConfiguration();
if(\ncc\Utilities\Functions::array_bc($data, 'name') !== null)
if(Functions::array_bc($data, 'name') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'name');
$BuildConfigurationObject->Name = Functions::array_bc($data, 'name');
}
if(\ncc\Utilities\Functions::array_bc($data, 'options') !== null)
if(Functions::array_bc($data, 'options') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'options');
$BuildConfigurationObject->Options = Functions::array_bc($data, 'options');
}
if(\ncc\Utilities\Functions::array_bc($data, 'static_linking') !== null)
if(Functions::array_bc($data, 'static_linking') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'static_linking');
$BuildConfigurationObject->StaticLinking = Functions::array_bc($data, 'static_linking');
}
if(\ncc\Utilities\Functions::array_bc($data, 'output_path') !== null)
if(Functions::array_bc($data, 'output_path') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'output_path');
$BuildConfigurationObject->OutputPath = Functions::array_bc($data, 'output_path');
}
if(\ncc\Utilities\Functions::array_bc($data, 'define_constants') !== null)
if(Functions::array_bc($data, 'define_constants') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'define_constants');
$BuildConfigurationObject->DefineConstants = Functions::array_bc($data, 'define_constants');
}
if(\ncc\Utilities\Functions::array_bc($data, 'strict_constants') !== null)
if(Functions::array_bc($data, 'strict_constants') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'strict_constants');
$BuildConfigurationObject->StrictConstants = Functions::array_bc($data, 'strict_constants');
}
if(\ncc\Utilities\Functions::array_bc($data, 'exclude_files') !== null)
if(Functions::array_bc($data, 'exclude_files') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'exclude_files');
$BuildConfigurationObject->ExcludeFiles = Functions::array_bc($data, 'exclude_files');
}
if(\ncc\Utilities\Functions::array_bc($data, 'dependencies') !== null)
if(Functions::array_bc($data, 'dependencies') !== null)
{
$BuildConfigurationObject = \ncc\Utilities\Functions::array_bc($data, 'dependencies');
foreach(Functions::array_bc($data, 'dependencies') as $item)
{
$BuildConfigurationObject->Dependencies[] = Dependency::fromArray($item);
}
}
return $BuildConfigurationObject;

View file

@ -1,8 +1,74 @@
<?php
namespace ncc\Objects\ProjectConfiguration;
/** @noinspection PhpMissingFieldTypeInspection */
class Compiler
{
namespace ncc\Objects\ProjectConfiguration;
}
use ncc\Utilities\Functions;
class Compiler
{
/**
* The compiler extension that the project uses
*
* @var string
*/
public $Extension;
/**
* The minimum version that is supported
*
* @var string
*/
public $MinimumVersion;
/**
* The maximum version that is supported
*
* @var string
*/
public $MaximumVersion;
/**
* Returns an array representation of the object
*
* @param bool $bytecode
* @return array
*/
public function toArray(bool $bytecode=false): array
{
return [
($bytecode ? Functions::cbc('extension') : 'extension') => $this->Extension,
($bytecode ? Functions::cbc('minimum_version') : 'minimum_version') => $this->MinimumVersion,
($bytecode ? Functions::cbc('maximum_version') : 'maximum_version') => $this->MaximumVersion
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return Compiler
*/
public static function fromArray(array $data): Compiler
{
$CompilerObject = new Compiler();
if(Functions::array_bc($data, 'extension') !== null)
{
$CompilerObject->Extension = Functions::array_bc($data, 'extension');
}
if(Functions::array_bc($data, 'maximum_version') !== null)
{
$CompilerObject->MaximumVersion = Functions::array_bc($data, 'maximum_version');
}
if(Functions::array_bc($data, 'minimum_version') !== null)
{
$CompilerObject->MinimumVersion = Functions::array_bc($data, 'minimum_version');
}
return $CompilerObject;
}
}

View file

@ -1,7 +1,11 @@
<?php
/** @noinspection PhpMissingFieldTypeInspection */
namespace ncc\Objects\ProjectConfiguration;
use ncc\Utilities\Functions;
class Dependency
{
/**
@ -30,22 +34,23 @@
/**
* Returns an array representation of the object
*
* @param bool $bytecode
* @return array
*/
public function toArray(bool $bytecode=false): array
{
$ReturnResults = [];
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('name') : 'name')] = $this->Name;
$ReturnResults[($bytecode ? Functions::cbc('name') : 'name')] = $this->Name;
if($this->Source !== null && strlen($this->Source) > 0)
{
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('source') : 'source')] = $this->Source;
$ReturnResults[($bytecode ? Functions::cbc('source') : 'source')] = $this->Source;
}
if($this->Version !== null && strlen($this->Version) > 0)
{
$ReturnResults[($bytecode ? \ncc\Utilities\Functions::cbc('version') : 'version')] = $this->Version;
$ReturnResults[($bytecode ? Functions::cbc('version') : 'version')] = $this->Version;
}
return $ReturnResults;
@ -61,9 +66,9 @@
{
$DependencyObject = new Dependency();
$DependencyObject->Name = \ncc\Utilities\Functions::array_bc($data, 'name');
$DependencyObject->Source = \ncc\Utilities\Functions::array_bc($data, 'source');
$DependencyObject->Version = \ncc\Utilities\Functions::array_bc($data, 'version');
$DependencyObject->Name = Functions::array_bc($data, 'name');
$DependencyObject->Source = Functions::array_bc($data, 'source');
$DependencyObject->Version = Functions::array_bc($data, 'version');
return $DependencyObject;
}

View file

@ -1,8 +1,68 @@
<?php
namespace ncc\Objects\ProjectConfiguration;
/** @noinspection PhpMissingFieldTypeInspection */
class Project
{
namespace ncc\Objects\ProjectConfiguration;
}
use ncc\Utilities\Functions;
class Project
{
/**
* @var Compiler
*/
public $Compiler;
/**
* @var array
*/
public $Options;
/**
* Public Constructor
*/
public function __construct()
{
$this->Compiler = new Compiler();
$this->Options = [];
}
/**
* Returns an array representation of the object
*
* @param bool $bytecode
* @return array
*/
public function toArray(bool $bytecode=false): array
{
$ReturnResults = [];
$ReturnResults[($bytecode ? Functions::cbc('compiler') : 'compiler')] = $this->Compiler->toArray($bytecode);
$ReturnResults[($bytecode ? Functions::cbc('options') : 'options')] = $this->Options;
return $ReturnResults;
}
/**
* Constructs the object from an array representation
*
* @param array $data
* @return Project
*/
public static function fromArray(array $data): Project
{
$ProjectObject = new Project();
if(Functions::array_bc($data, 'compiler') !== null)
{
$ProjectObject->Compiler = Compiler::fromArray(Functions::array_bc($data, 'compiler'));
}
if(Functions::array_bc($data, 'options') !== null)
{
$ProjectObject->Options = Functions::array_bc($data, 'options');
}
return $ProjectObject;
}
}

33
src/ncc/autoload.php Normal file
View file

@ -0,0 +1,33 @@
<?php
// @codingStandardsIgnoreFile
// @codeCoverageIgnoreStart
// this is an autogenerated file - do not edit
spl_autoload_register(
function($class) {
static $classes = null;
if ($classes === null) {
$classes = array(
'ncc\\abstracts\\exceptioncodes' => '/Abstracts/ExceptionCodes.php',
'ncc\\abstracts\\regexpatterns' => '/Abstracts/RegexPatterns.php',
'ncc\\exceptions\\invalidprojectconfigurationexception' => '/Exceptions/InvalidProjectConfigurationException.php',
'ncc\\ncc' => '/ncc.php',
'ncc\\objects\\projectconfiguration' => '/Objects/ProjectConfiguration.php',
'ncc\\objects\\projectconfiguration\\assembly' => '/Objects/ProjectConfiguration/Assembly.php',
'ncc\\objects\\projectconfiguration\\build' => '/Objects/ProjectConfiguration/Build.php',
'ncc\\objects\\projectconfiguration\\buildconfiguration' => '/Objects/ProjectConfiguration/BuildConfiguration.php',
'ncc\\objects\\projectconfiguration\\compiler' => '/Objects/ProjectConfiguration/Compiler.php',
'ncc\\objects\\projectconfiguration\\dependency' => '/Objects/ProjectConfiguration/Dependency.php',
'ncc\\objects\\projectconfiguration\\project' => '/Objects/ProjectConfiguration/Project.php',
'ncc\\utilities\\functions' => '/Utilities/Functions.php',
'ncc\\utilities\\validate' => '/Utilities/Validate.php'
);
}
$cn = strtolower($class);
if (isset($classes[$cn])) {
require __DIR__ . $classes[$cn];
}
},
true,
false
);
// @codeCoverageIgnoreEnd