added hawk::function_exists()

This commit is contained in:
hyung-hwan 2020-04-13 13:56:09 +00:00
parent a8afcca04e
commit 178c83724b

View File

@ -112,6 +112,30 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
return 0;
}
/* hawk::function_exists("xxxx"); */
static int fnc_function_exists (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
{
hawk_val_t* a0;
hawk_ooch_t* str;
hawk_oow_t len;
int rx;
a0 = hawk_rtx_getarg(rtx, 0);
str = hawk_rtx_getvaloocstr(rtx, a0, &len);
if (HAWK_UNLIKELY(!str))
{
rx = 0;
}
else
{
rx = (hawk_rtx_findfunwithoocstr(rtx, str) != HAWK_NULL);
hawk_rtx_freevaloocstr (rtx, a0, str);
}
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
return 0;
}
/*
hawk::gc();
hawk::gc_get_threshold(gen)
@ -193,6 +217,7 @@ static fnctab_t fnctab[] =
{
/* keep this table sorted for binary search in query(). */
{ HAWK_T("call"), { { 1, A_MAX, HAWK_T("vR") }, fnc_call, 0 } },
{ HAWK_T("function_exists"), { { 1, 1, HAWK_NULL }, fnc_function_exists, 0 } },
{ HAWK_T("gc"), { { 0, 1, HAWK_NULL }, fnc_gc, 0 } },
{ HAWK_T("gc_get_threshold"), { { 1, 1, HAWK_NULL }, fnc_gc_get_threshold, 0 } },
{ HAWK_T("gc_set_threshold"), { { 2, 2, HAWK_NULL }, fnc_gc_set_threshold, 0 } }