aboutsummaryrefslogtreecommitdiff
path: root/ref.c
diff options
context:
space:
mode:
Diffstat (limited to 'ref.c')
-rw-r--r--ref.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ref.c b/ref.c
new file mode 100644
index 0000000..0147160
--- /dev/null
+++ b/ref.c
@@ -0,0 +1,20 @@
+#include "common/err.h"
+#include "api/ref.h"
+#include "api/util.h"
+
+UwUVMValue uwu_call(UwUVMArgs *args)
+{
+ uwuutil_require_min("ref.call", args, 1);
+
+ UwUVMValue value = uwuvm_get_arg(args, 0);
+
+ if (value.type != &uwuref_type)
+ error("ref.call requires a function reference as $1\n");
+
+ return uwuvm_call_function(value.data, args->num - 1, &args->unevaluated[1], args->super);
+}
+
+UwUVMValue uwu_is(UwUVMArgs *args)
+{
+ return uwuutil_is_type("ref.is", args, &uwuref_type);
+}