added qse_awk_rtx_callwithstrs()

This commit is contained in:
2012-10-18 14:11:59 +00:00
parent e2f152c927
commit 3cec861547
9 changed files with 168 additions and 20 deletions

View File

@ -1518,6 +1518,43 @@ qse_awk_val_t* qse_awk_rtx_call (
return qse_awk_rtx_callfun (rtx, fun, args, nargs);
}
qse_awk_val_t* qse_awk_rtx_callwithstrs (
qse_awk_rtx_t* rtx, const qse_char_t* name,
const qse_char_t** args, qse_size_t nargs)
{
qse_size_t i;
qse_awk_val_t** v, * ret;
v = QSE_MMGR_ALLOC (rtx->awk->mmgr, QSE_SIZEOF(*v) * nargs);
if (v == QSE_NULL)
{
qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);
return QSE_NULL;
}
for (i = 0; i < nargs; i++)
{
v[i] = qse_awk_rtx_makestrval0 (rtx, args[i]);
if (v[i] == QSE_NULL)
{
ret = QSE_NULL;
goto oops;
}
qse_awk_rtx_refupval (rtx, v[i]);
}
ret = qse_awk_rtx_call (rtx, name, v, nargs);
oops:
while (i > 0)
{
qse_awk_rtx_refdownval (rtx, v[--i]);
}
QSE_MMGR_FREE (rtx->awk->mmgr, v);
return ret;
}
static int run_pblocks (qse_awk_rtx_t* run)
{
int n;

View File

@ -1867,12 +1867,12 @@ static int make_additional_globals (
}
qse_awk_rtx_t* qse_awk_rtx_openstd (
qse_awk_t* awk,
qse_size_t xtnsize,
const qse_char_t* id,
const qse_char_t*const icf[],
const qse_char_t*const ocf[],
qse_cmgr_t* cmgr)
qse_awk_t* awk,
qse_size_t xtnsize,
const qse_char_t* id,
const qse_char_t* icf[],
const qse_char_t* ocf[],
qse_cmgr_t* cmgr)
{
static qse_awk_rtx_ecb_t ecb =
{