New nstr_mksymval() to create symbolic values

This commit is contained in:
Markus Armbruster 2008-03-04 10:29:49 +01:00
parent da8a1daeef
commit d1a193ff07
5 changed files with 23 additions and 23 deletions

View file

@ -94,12 +94,7 @@
static struct valstr *
xdeval(struct valstr *val, struct castr *ca, void *ptr, int idx)
{
val->val_type = ca->ca_type;
val->val_cat = NSC_OFF;
val->val_as.sym.off = ca->ca_off;
val->val_as.sym.len = ca->ca_len;
val->val_as.sym.idx = idx;
val->val_as.sym.get = ca->ca_get;
nstr_mksymval(val, ca, idx);
return nstr_exec_val(val, player->cnum, ptr, NSC_NOTYPE);
}

View file

@ -101,13 +101,7 @@ verify_row(int type, int row)
do {
if (ca[i].ca_table == EF_BAD)
continue;
/* FIXME use xdeval() */
val.val_type = ca[i].ca_type;
val.val_cat = NSC_OFF;
val.val_as.sym.off = ca[i].ca_off;
val.val_as.sym.len = ca[i].ca_len;
val.val_as.sym.idx = j;
val.val_as.sym.get = ca[i].ca_get;
nstr_mksymval(&val, &ca[i], j);
nstr_exec_val(&val, 0, row_ref, NSC_NOTYPE);
if (val.val_type != NSC_LONG)
continue;

View file

@ -42,6 +42,21 @@
#include "nsc.h"
#include "optlist.h"
/*
* Initialize VAL to symbolic value for selector CA with index IDX.
* Return VAL.
*/
struct valstr *
nstr_mksymval(struct valstr *val, struct castr *ca, int idx)
{
val->val_type = ca->ca_type;
val->val_cat = NSC_OFF;
val->val_as.sym.off = ca->ca_off;
val->val_as.sym.len = ca->ca_len;
val->val_as.sym.idx = idx;
val->val_as.sym.get = ca->ca_get;
return val;
}
/*
* Evaluate VAL.

View file

@ -427,13 +427,7 @@ nstr_resolve_sel(struct valstr *val, struct castr *ca)
return NULL;
}
val->val_type = ca->ca_type;
val->val_cat = NSC_OFF;
val->val_as.sym.off = ca->ca_off;
val->val_as.sym.len = ca->ca_len;
val->val_as.sym.idx = 0;
val->val_as.sym.get = ca->ca_get;
return val;
return nstr_mksymval(val, ca, 0);
}
/*