version 1.15, 2011/09/28 19:27:18 |
version 1.16, 2017/10/09 14:51:31 |
|
|
Cell *p; |
Cell *p; |
|
|
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", |
(void*)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); |
} |
} |
|
|
h = hash(n, tp->size); |
h = hash(n, tp->size); |
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", |
(void*)p, p->nval, p->sval, p->fval, p->tval) ); |
(void*)p, p->nval, p->sval, p->fval, p->tval) ); |
return(p); |
return(p); |
} |
} |
|
|
fldno = atoi(vp->nval); |
fldno = atoi(vp->nval); |
if (fldno > *NF) |
if (fldno > *NF) |
newfld(fldno); |
newfld(fldno); |
dprintf( ("setting field %d to %g\n", fldno, f) ); |
DPRINTF( ("setting field %d to %g\n", fldno, f) ); |
} else if (isrec(vp)) { |
} else if (isrec(vp)) { |
donefld = 0; /* mark $1... invalid */ |
donefld = 0; /* mark $1... invalid */ |
donerec = 1; |
donerec = 1; |
|
|
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", (void*)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; |
} |
} |
|
|
|
|
char *t; |
char *t; |
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", |
(void*)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"); |
|
|
fldno = atoi(vp->nval); |
fldno = atoi(vp->nval); |
if (fldno > *NF) |
if (fldno > *NF) |
newfld(fldno); |
newfld(fldno); |
dprintf( ("setting field %d to %s (%p)\n", fldno, s, s) ); |
DPRINTF( ("setting field %d to %s (%p)\n", fldno, s, s) ); |
} else if (isrec(vp)) { |
} else if (isrec(vp)) { |
donefld = 0; /* mark $1... invalid */ |
donefld = 0; /* mark $1... invalid */ |
donerec = 1; |
donerec = 1; |
|
|
vp->tval &= ~NUM; |
vp->tval &= ~NUM; |
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", |
(void*)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", |
DPRINTF( ("getfval %p: %s = %g, t=%o\n", |
(void*)vp, NN(vp->nval), vp->fval, vp->tval) ); |
(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", |
DPRINTF( ("getsval %p: %s = \"%s (%p)\", t=%o\n", |
(void*)vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) ); |
(void*)vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) ); |
return(vp->sval); |
return(vp->sval); |
} |
} |