aboutsummaryrefslogtreecommitdiff
path: root/std/ref.c
blob: ee18bfcabbc67474061504d7dbc1d9cdb1d642c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
}