version 1.14, 2006/11/04 19:10:15 |
version 1.15, 2011/09/28 19:27:18 |
|
|
|
|
if (n != NULL && (p = lookup(n, tp)) != NULL) { |
if (n != NULL && (p = lookup(n, tp)) != NULL) { |
dprintf( ("setsymtab found %p: n=%s s=\"%s\" f=%g t=%o\n", |
dprintf( ("setsymtab found %p: n=%s s=\"%s\" f=%g t=%o\n", |
p, NN(p->nval), NN(p->sval), p->fval, p->tval) ); |
(void*)p, NN(p->nval), NN(p->sval), p->fval, p->tval) ); |
return(p); |
return(p); |
} |
} |
p = (Cell *) malloc(sizeof(Cell)); |
p = (Cell *) malloc(sizeof(Cell)); |
|
|
p->cnext = tp->tab[h]; |
p->cnext = tp->tab[h]; |
tp->tab[h] = p; |
tp->tab[h] = p; |
dprintf( ("setsymtab set %p: n=%s s=\"%s\" f=%g t=%o\n", |
dprintf( ("setsymtab set %p: n=%s s=\"%s\" f=%g t=%o\n", |
p, p->nval, p->sval, p->fval, p->tval) ); |
(void*)p, p->nval, p->sval, p->fval, p->tval) ); |
return(p); |
return(p); |
} |
} |
|
|
|
|
xfree(vp->sval); /* free any previous string */ |
xfree(vp->sval); /* free any previous string */ |
vp->tval &= ~STR; /* mark string invalid */ |
vp->tval &= ~STR; /* mark string invalid */ |
vp->tval |= NUM; /* mark number ok */ |
vp->tval |= NUM; /* mark number ok */ |
dprintf( ("setfval %p: %s = %g, t=%o\n", vp, NN(vp->nval), f, vp->tval) ); |
dprintf( ("setfval %p: %s = %g, t=%o\n", (void*)vp, NN(vp->nval), f, vp->tval) ); |
return vp->fval = f; |
return vp->fval = f; |
} |
} |
|
|
|
|
int fldno; |
int fldno; |
|
|
dprintf( ("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n", |
dprintf( ("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n", |
vp, NN(vp->nval), s, vp->tval, donerec, donefld) ); |
(void*)vp, NN(vp->nval), s, vp->tval, donerec, donefld) ); |
if ((vp->tval & (NUM | STR)) == 0) |
if ((vp->tval & (NUM | STR)) == 0) |
funnyvar(vp, "assign to"); |
funnyvar(vp, "assign to"); |
if (isfld(vp)) { |
if (isfld(vp)) { |
|
|
vp->tval |= STR; |
vp->tval |= STR; |
vp->tval &= ~DONTFREE; |
vp->tval &= ~DONTFREE; |
dprintf( ("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n", |
dprintf( ("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n", |
vp, NN(vp->nval), t,t, vp->tval, donerec, donefld) ); |
(void*)vp, NN(vp->nval), t,t, vp->tval, donerec, donefld) ); |
return(vp->sval = t); |
return(vp->sval = t); |
} |
} |
|
|
|
|
if (is_number(vp->sval) && !(vp->tval&CON)) |
if (is_number(vp->sval) && !(vp->tval&CON)) |
vp->tval |= NUM; /* make NUM only sparingly */ |
vp->tval |= NUM; /* make NUM only sparingly */ |
} |
} |
dprintf( ("getfval %p: %s = %g, t=%o\n", vp, NN(vp->nval), vp->fval, vp->tval) ); |
dprintf( ("getfval %p: %s = %g, t=%o\n", |
|
(void*)vp, NN(vp->nval), vp->fval, vp->tval) ); |
return(vp->fval); |
return(vp->fval); |
} |
} |
|
|
|
|
vp->tval &= ~DONTFREE; |
vp->tval &= ~DONTFREE; |
vp->tval |= STR; |
vp->tval |= STR; |
} |
} |
dprintf( ("getsval %p: %s = \"%s (%p)\", t=%o\n", vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) ); |
dprintf( ("getsval %p: %s = \"%s (%p)\", t=%o\n", |
|
(void*)vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) ); |
return(vp->sval); |
return(vp->sval); |
} |
} |
|
|