Lines Matching refs:vp

106 setfree(Cell *vp)  in setfree()  argument
108 if (&vp->sval == FS || &vp->sval == RS || in setfree()
109 &vp->sval == OFS || &vp->sval == ORS || in setfree()
110 &vp->sval == OFMT || &vp->sval == CONVFMT || in setfree()
111 &vp->sval == FILENAME || &vp->sval == SUBSEP) in setfree()
112 vp->tval |= DONTFREE; in setfree()
114 vp->tval &= ~DONTFREE; in setfree()
362 setfval(Cell *vp, Awkfloat f) /* set float val of a Cell */ in setfval() argument
367 if ((vp->tval & (NUM | STR)) == 0) in setfval()
368 funnyvar(vp, "assign to"); in setfval()
369 if (isfld(vp)) { in setfval()
371 fldno = atoi(vp->nval); in setfval()
375 } else if (&vp->fval == NF) { in setfval()
379 } else if (isrec(vp)) { in setfval()
383 } else if (vp == ofsloc) { in setfval()
387 if (freeable(vp)) in setfval()
388 xfree(vp->sval); /* free any previous string */ in setfval()
389 vp->tval &= ~(STR|CONVC|CONVO); /* mark string invalid */ in setfval()
390 vp->fmt = NULL; in setfval()
391 vp->tval |= NUM; /* mark number ok */ in setfval()
394 dprintf(("setfval %p: %s = %g, t=%o\n", (void *)vp, in setfval()
395 NN(vp->nval), f, vp->tval)); in setfval()
396 return (vp->fval = f); in setfval()
400 funnyvar(Cell *vp, const char *rw) in funnyvar() argument
402 if (isarr(vp)) in funnyvar()
403 FATAL("can't %s %s; it's an array name.", rw, vp->nval); in funnyvar()
404 if (isfcn(vp)) in funnyvar()
405 FATAL("can't %s %s; it's a function.", rw, vp->nval); in funnyvar()
407 vp, vp->nval, vp->sval, vp->fval, vp->tval); in funnyvar()
411 setsval(Cell *vp, const char *s) /* set string val of a Cell */ in setsval() argument
418 (void *)vp, NN(vp->nval), s, vp->tval, donerec, donefld)); in setsval()
419 if ((vp->tval & (NUM | STR)) == 0) in setsval()
420 funnyvar(vp, "assign to"); in setsval()
421 if (isfld(vp)) { in setsval()
423 fldno = atoi(vp->nval); in setsval()
427 } else if (isrec(vp)) { in setsval()
431 } else if (vp == ofsloc) { in setsval()
436 if (freeable(vp)) in setsval()
437 xfree(vp->sval); in setsval()
438 vp->tval &= ~(NUM|CONVC|CONVO); in setsval()
439 vp->tval |= STR; in setsval()
440 vp->fmt = NULL; in setsval()
441 setfree(vp); in setsval()
443 (void *)vp, NN(vp->nval), t, (void *)t, in setsval()
444 vp->tval, donerec, donefld)); in setsval()
445 vp->sval = t; in setsval()
446 if (&vp->fval == NF) { in setsval()
448 f = getfval(vp); in setsval()
453 return (vp->sval); in setsval()
457 getfval(Cell *vp) /* get float val of a Cell */ in getfval() argument
459 if ((vp->tval & (NUM | STR)) == 0) in getfval()
460 funnyvar(vp, "read value of"); in getfval()
461 if (isfld(vp) && donefld == 0) in getfval()
463 else if (isrec(vp) && donerec == 0) in getfval()
465 if (!isnum(vp)) { /* not a number */ in getfval()
466 vp->fval = atof(vp->sval); /* best guess */ in getfval()
467 if (is_number(vp->sval) && !(vp->tval&CON)) in getfval()
468 vp->tval |= NUM; /* make NUM only sparingly */ in getfval()
471 (void *)vp, NN(vp->nval), vp->fval, vp->tval)); in getfval()
472 return (vp->fval); in getfval()
476 get_str_val(Cell *vp, char **fmt) /* get string val of a Cell */ in get_str_val() argument
481 if ((vp->tval & (NUM | STR)) == 0) in get_str_val()
482 funnyvar(vp, "read value of"); in get_str_val()
483 if (isfld(vp) && donefld == 0) in get_str_val()
485 else if (isrec(vp) && donerec == 0) in get_str_val()
512 #define update_str_val(vp) \ in get_str_val() argument
514 if (freeable(vp)) \ in get_str_val()
515 xfree(vp->sval); \ in get_str_val()
516 if (modf(vp->fval, &dtemp) == 0) /* it's integral */ \ in get_str_val()
517 (void) snprintf(s, sizeof (s), "%.30g", vp->fval); \ in get_str_val()
519 (void) snprintf(s, sizeof (s), *fmt, vp->fval); \ in get_str_val()
520 vp->sval = tostring(s); \ in get_str_val()
521 vp->tval &= ~DONTFREE; \ in get_str_val()
522 vp->tval |= STR; \ in get_str_val()
525 if (isstr(vp) == 0) { in get_str_val()
527 update_str_val(vp); in get_str_val()
529 vp->tval &= ~CONVC; in get_str_val()
530 vp->tval |= CONVO; in get_str_val()
533 vp->tval &= ~CONVO; in get_str_val()
534 vp->tval |= CONVC; in get_str_val()
536 vp->fmt = *fmt; in get_str_val()
537 } else if ((vp->tval & DONTFREE) != 0 || !isnum(vp) || isfld(vp)) { in get_str_val()
539 } else if (isstr(vp)) { in get_str_val()
541 if ((vp->tval & CONVC) != 0 || in get_str_val()
542 ((vp->tval & CONVO) != 0 && vp->fmt != *fmt)) { in get_str_val()
544 update_str_val(vp); in get_str_val()
545 vp->tval &= ~CONVC; in get_str_val()
546 vp->tval |= CONVO; in get_str_val()
547 vp->fmt = *fmt; in get_str_val()
551 if ((vp->tval & CONVO) != 0 || in get_str_val()
552 ((vp->tval & CONVC) != 0 && vp->fmt != *fmt)) { in get_str_val()
554 update_str_val(vp); in get_str_val()
555 vp->tval &= ~CONVO; in get_str_val()
556 vp->tval |= CONVC; in get_str_val()
557 vp->fmt = *fmt; in get_str_val()
563 (void *)vp, NN(vp->nval), vp->sval, (void *)vp->sval, vp->tval)); in get_str_val()
564 return (vp->sval); in get_str_val()
568 getsval(Cell *vp) /* get string val of a Cell */ in getsval() argument
570 return (get_str_val(vp, CONVFMT)); in getsval()
574 getpssval(Cell *vp) /* get string val of a Cell for print */ in getpssval() argument
576 return (get_str_val(vp, OFMT)); in getpssval()