Home | History | Annotate | Download | only in nawk-20071023

Lines Matching refs:vp

281 Awkfloat setfval(Cell *vp, Awkfloat f)	/* set float val of a Cell */
285 if ((vp->tval & (NUM | STR)) == 0)
286 funnyvar(vp, "assign to");
287 if (isfld(vp)) {
289 fldno = atoi(vp->nval);
293 } else if (isrec(vp)) {
297 if (freeable(vp))
298 xfree(vp->sval); /* free any previous string */
299 vp->tval &= ~STR; /* mark string invalid */
300 vp->tval |= NUM; /* mark number ok */
301 dprintf( ("setfval %p: %s = %g, t=%o\n", vp, NN(vp->nval), f, vp->tval) );
302 return vp->fval = f;
305 void funnyvar(Cell *vp, const char *rw)
307 if (isarr(vp))
308 FATAL("can't %s %s; it's an array name.", rw, vp->nval);
309 if (vp->tval & FCN)
310 FATAL("can't %s %s; it's a function.", rw, vp->nval);
312 vp, vp->nval, vp->sval, vp->fval, vp->tval);
315 char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
321 vp, NN(vp->nval), s, vp->tval, donerec, donefld) );
322 if ((vp->tval & (NUM | STR)) == 0)
323 funnyvar(vp, "assign to");
324 if (isfld(vp)) {
326 fldno = atoi(vp->nval);
330 } else if (isrec(vp)) {
335 if (freeable(vp))
336 xfree(vp->sval);
337 vp->tval &= ~NUM;
338 vp->tval |= STR;
339 vp->tval &= ~DONTFREE;
341 vp, NN(vp->nval), t,t, vp->tval, donerec, donefld) );
342 return(vp->sval = t);
345 Awkfloat getfval(Cell *vp) /* get float val of a Cell */
347 if ((vp->tval & (NUM | STR)) == 0)
348 funnyvar(vp, "read value of");
349 if (isfld(vp) && donefld == 0)
351 else if (isrec(vp) && donerec == 0)
353 if (!isnum(vp)) { /* not a number */
354 vp->fval = atof(vp->sval); /* best guess */
355 if (is_number(vp->sval) && !(vp->tval&CON))
356 vp->tval |= NUM; /* make NUM only sparingly */
358 dprintf( ("getfval %p: %s = %g, t=%o\n", vp, NN(vp->nval), vp->fval, vp->tval) );
359 return(vp->fval);
362 static char *get_str_val(Cell *vp, char **fmt) /* get string val of a Cell */
367 if ((vp->tval & (NUM | STR)) == 0)
368 funnyvar(vp, "read value of");
369 if (isfld(vp) && donefld == 0)
371 else if (isrec(vp) && donerec == 0)
373 if (isstr(vp) == 0) {
374 if (freeable(vp))
375 xfree(vp->sval);
376 if (modf(vp->fval, &dtemp) == 0) /* it's integral */
377 sprintf(s, "%.30g", vp->fval);
379 sprintf(s, *fmt, vp->fval);
380 vp->sval = tostring(s);
381 vp->tval &= ~DONTFREE;
382 vp->tval |= STR;
384 dprintf( ("getsval %p: %s = \"%s (%p)\", t=%o\n", vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) );
385 return(vp->sval);
388 char *getsval(Cell *vp) /* get string val of a Cell */
390 return get_str_val(vp, CONVFMT);
393 char *getpssval(Cell *vp) /* get string val of a Cell for print */
395 return get_str_val(vp, OFMT);