diff options
Diffstat (limited to 'src/Structure/Types')
28 files changed, 438 insertions, 0 deletions
diff --git a/src/Structure/Types/DataIdx.php b/src/Structure/Types/DataIdx.php new file mode 100644 index 0000000..5390ad4 --- /dev/null +++ b/src/Structure/Types/DataIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class DataIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/ElemIdx.php b/src/Structure/Types/ElemIdx.php new file mode 100644 index 0000000..989ef94 --- /dev/null +++ b/src/Structure/Types/ElemIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class ElemIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/ExternType.php b/src/Structure/Types/ExternType.php new file mode 100644 index 0000000..404f755 --- /dev/null +++ b/src/Structure/Types/ExternType.php @@ -0,0 +1,28 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +abstract readonly class ExternType +{ + final public static function Func(FuncType $type): ExternTypes\Func + { + return new ExternTypes\Func($type); + } + + final public static function Table(TableType $type): ExternTypes\Table + { + return new ExternTypes\Table($type); + } + + final public static function Mem(MemType $type): ExternTypes\Mem + { + return new ExternTypes\Mem($type); + } + + final public static function Global(GlobalType $type): ExternTypes\Global_ + { + return new ExternTypes\Global_($type); + } +} diff --git a/src/Structure/Types/ExternTypes/Func.php b/src/Structure/Types/ExternTypes/Func.php new file mode 100644 index 0000000..74e9215 --- /dev/null +++ b/src/Structure/Types/ExternTypes/Func.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ExternTypes; + +use Nsfisis\Waddiwasi\Structure\Types\ExternType; +use Nsfisis\Waddiwasi\Structure\Types\FuncType; + +final readonly class Func extends ExternType +{ + protected function __construct( + public FuncType $inner, + ) { + } +} diff --git a/src/Structure/Types/ExternTypes/Global_.php b/src/Structure/Types/ExternTypes/Global_.php new file mode 100644 index 0000000..d88b4b2 --- /dev/null +++ b/src/Structure/Types/ExternTypes/Global_.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ExternTypes; + +use Nsfisis\Waddiwasi\Structure\Types\ExternType; +use Nsfisis\Waddiwasi\Structure\Types\GlobalType; + +final readonly class Global_ extends ExternType +{ + protected function __construct( + public GlobalType $inner, + ) { + } +} diff --git a/src/Structure/Types/ExternTypes/Mem.php b/src/Structure/Types/ExternTypes/Mem.php new file mode 100644 index 0000000..3777c5c --- /dev/null +++ b/src/Structure/Types/ExternTypes/Mem.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ExternTypes; + +use Nsfisis\Waddiwasi\Structure\Types\ExternType; +use Nsfisis\Waddiwasi\Structure\Types\MemType; + +final readonly class Mem extends ExternType +{ + protected function __construct( + public MemType $inner, + ) { + } +} diff --git a/src/Structure/Types/ExternTypes/Table.php b/src/Structure/Types/ExternTypes/Table.php new file mode 100644 index 0000000..26a7675 --- /dev/null +++ b/src/Structure/Types/ExternTypes/Table.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ExternTypes; + +use Nsfisis\Waddiwasi\Structure\Types\ExternType; +use Nsfisis\Waddiwasi\Structure\Types\TableType; + +final readonly class Table extends ExternType +{ + protected function __construct( + public TableType $inner, + ) { + } +} diff --git a/src/Structure/Types/FuncIdx.php b/src/Structure/Types/FuncIdx.php new file mode 100644 index 0000000..9e2d9f7 --- /dev/null +++ b/src/Structure/Types/FuncIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class FuncIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/FuncType.php b/src/Structure/Types/FuncType.php new file mode 100644 index 0000000..17ef98a --- /dev/null +++ b/src/Structure/Types/FuncType.php @@ -0,0 +1,14 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class FuncType +{ + public function __construct( + public ResultType $args, + public ResultType $returns, + ) { + } +} diff --git a/src/Structure/Types/GlobalIdx.php b/src/Structure/Types/GlobalIdx.php new file mode 100644 index 0000000..c65d182 --- /dev/null +++ b/src/Structure/Types/GlobalIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class GlobalIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/GlobalType.php b/src/Structure/Types/GlobalType.php new file mode 100644 index 0000000..182b761 --- /dev/null +++ b/src/Structure/Types/GlobalType.php @@ -0,0 +1,14 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class GlobalType +{ + public function __construct( + public Mut $mut, + public ValType $valType, + ) { + } +} diff --git a/src/Structure/Types/LabelIdx.php b/src/Structure/Types/LabelIdx.php new file mode 100644 index 0000000..e6941b0 --- /dev/null +++ b/src/Structure/Types/LabelIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class LabelIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/Limits.php b/src/Structure/Types/Limits.php new file mode 100644 index 0000000..12f6cbf --- /dev/null +++ b/src/Structure/Types/Limits.php @@ -0,0 +1,18 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class Limits +{ + /** + * @param U32 $min + * @param ?U32 $max + */ + public function __construct( + public int $min, + public ?int $max, + ) { + } +} diff --git a/src/Structure/Types/LocalIdx.php b/src/Structure/Types/LocalIdx.php new file mode 100644 index 0000000..6620281 --- /dev/null +++ b/src/Structure/Types/LocalIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class LocalIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/MemIdx.php b/src/Structure/Types/MemIdx.php new file mode 100644 index 0000000..5fb9d76 --- /dev/null +++ b/src/Structure/Types/MemIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class MemIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/MemType.php b/src/Structure/Types/MemType.php new file mode 100644 index 0000000..d4c9009 --- /dev/null +++ b/src/Structure/Types/MemType.php @@ -0,0 +1,13 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class MemType +{ + public function __construct( + public Limits $limits, + ) { + } +} diff --git a/src/Structure/Types/Mut.php b/src/Structure/Types/Mut.php new file mode 100644 index 0000000..8b3c611 --- /dev/null +++ b/src/Structure/Types/Mut.php @@ -0,0 +1,11 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +enum Mut +{ + case Const; + case Var; +} diff --git a/src/Structure/Types/NumType.php b/src/Structure/Types/NumType.php new file mode 100644 index 0000000..28b6d80 --- /dev/null +++ b/src/Structure/Types/NumType.php @@ -0,0 +1,13 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +enum NumType +{ + case I32; + case I64; + case F32; + case F64; +} diff --git a/src/Structure/Types/RefType.php b/src/Structure/Types/RefType.php new file mode 100644 index 0000000..0d40d86 --- /dev/null +++ b/src/Structure/Types/RefType.php @@ -0,0 +1,11 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +enum RefType +{ + case FuncRef; + case ExternRef; +} diff --git a/src/Structure/Types/ResultType.php b/src/Structure/Types/ResultType.php new file mode 100644 index 0000000..267916b --- /dev/null +++ b/src/Structure/Types/ResultType.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class ResultType +{ + /** + * @param list<ValType> $types + */ + public function __construct( + public array $types, + ) { + } +} diff --git a/src/Structure/Types/TableIdx.php b/src/Structure/Types/TableIdx.php new file mode 100644 index 0000000..af2d72b --- /dev/null +++ b/src/Structure/Types/TableIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class TableIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/TableType.php b/src/Structure/Types/TableType.php new file mode 100644 index 0000000..619ad25 --- /dev/null +++ b/src/Structure/Types/TableType.php @@ -0,0 +1,14 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class TableType +{ + public function __construct( + public Limits $limits, + public RefType $refType, + ) { + } +} diff --git a/src/Structure/Types/TypeIdx.php b/src/Structure/Types/TypeIdx.php new file mode 100644 index 0000000..c0074d7 --- /dev/null +++ b/src/Structure/Types/TypeIdx.php @@ -0,0 +1,16 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +final readonly class TypeIdx +{ + /** + * @param U32 $value + */ + public function __construct( + public int $value, + ) { + } +} diff --git a/src/Structure/Types/ValType.php b/src/Structure/Types/ValType.php new file mode 100644 index 0000000..58bf32c --- /dev/null +++ b/src/Structure/Types/ValType.php @@ -0,0 +1,23 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +abstract readonly class ValType +{ + final public static function NumType(NumType $type): ValTypes\NumType + { + return new ValTypes\NumType($type); + } + + final public static function VecType(VecType $type): ValTypes\VecType + { + return new ValTypes\VecType($type); + } + + final public static function RefType(RefType $type): ValTypes\RefType + { + return new ValTypes\RefType($type); + } +} diff --git a/src/Structure/Types/ValTypes/NumType.php b/src/Structure/Types/ValTypes/NumType.php new file mode 100644 index 0000000..3376d27 --- /dev/null +++ b/src/Structure/Types/ValTypes/NumType.php @@ -0,0 +1,15 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ValTypes; + +use Nsfisis\Waddiwasi\Structure\Types\NumType as OrigNumType; +use Nsfisis\Waddiwasi\Structure\Types\ValType; + +final readonly class NumType extends ValType +{ + protected function __construct(public OrigNumType $inner) + { + } +} diff --git a/src/Structure/Types/ValTypes/RefType.php b/src/Structure/Types/ValTypes/RefType.php new file mode 100644 index 0000000..720eb7d --- /dev/null +++ b/src/Structure/Types/ValTypes/RefType.php @@ -0,0 +1,15 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ValTypes; + +use Nsfisis\Waddiwasi\Structure\Types\RefType as OrigRefType; +use Nsfisis\Waddiwasi\Structure\Types\ValType; + +final readonly class RefType extends ValType +{ + protected function __construct(public OrigRefType $inner) + { + } +} diff --git a/src/Structure/Types/ValTypes/VecType.php b/src/Structure/Types/ValTypes/VecType.php new file mode 100644 index 0000000..8fb546c --- /dev/null +++ b/src/Structure/Types/ValTypes/VecType.php @@ -0,0 +1,15 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types\ValTypes; + +use Nsfisis\Waddiwasi\Structure\Types\ValType; +use Nsfisis\Waddiwasi\Structure\Types\VecType as OrigVecType; + +final readonly class VecType extends ValType +{ + protected function __construct(public OrigVecType $inner) + { + } +} diff --git a/src/Structure/Types/VecType.php b/src/Structure/Types/VecType.php new file mode 100644 index 0000000..ae8a0f6 --- /dev/null +++ b/src/Structure/Types/VecType.php @@ -0,0 +1,10 @@ +<?php + +declare(strict_types=1); + +namespace Nsfisis\Waddiwasi\Structure\Types; + +enum VecType +{ + case V128; +} |
