aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Execution/Val.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Execution/Val.php')
-rw-r--r--src/Execution/Val.php49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/Execution/Val.php b/src/Execution/Val.php
index 287f441..0f9ce42 100644
--- a/src/Execution/Val.php
+++ b/src/Execution/Val.php
@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Nsfisis\Waddiwasi\Execution;
+use Nsfisis\Waddiwasi\Structure\Types\RefType;
+
abstract readonly class Val
{
final public static function Num(Num $inner): Vals\Num
@@ -11,8 +13,55 @@ abstract readonly class Val
return new Vals\Num($inner);
}
+ /**
+ * @param S32 $value
+ */
+ final public static function NumI32(int $value): Vals\Num
+ {
+ return self::Num(Num::I32($value));
+ }
+
+ /**
+ * @param S64 $value
+ */
+ final public static function NumI64(int $value): Vals\Num
+ {
+ return self::Num(Num::I64($value));
+ }
+
+ /**
+ * @param F32 $value
+ */
+ final public static function NumF32(float $value): Vals\Num
+ {
+ return self::Num(Num::F32($value));
+ }
+
+ /**
+ * @param F64 $value
+ */
+ final public static function NumF64(float $value): Vals\Num
+ {
+ return self::Num(Num::F64($value));
+ }
+
final public static function Ref(Ref $inner): Vals\Ref
{
return new Vals\Ref($inner);
}
+
+ final public static function RefNull(RefType $type): Vals\Ref
+ {
+ return self::Ref(Ref::RefNull($type));
+ }
+
+ final public static function RefFunc(FuncAddr $addr): Vals\Ref
+ {
+ return self::Ref(Ref::RefFunc($addr));
+ }
+
+ final public static function RefExtern(ExternAddr $addr): Vals\Ref
+ {
+ return self::Ref(Ref::RefExtern($addr));
+ }
}