ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/caldefn.c
(Generate patch)

Comparing ray/src/common/caldefn.c (file contents):
Revision 1.2 by greg, Thu May 31 10:24:28 1990 UTC vs.
Revision 1.5 by greg, Thu Jul 19 11:15:31 1990 UTC

# Line 34 | Line 34 | static char SCCSid[] = "$SunId$ LBL";
34  
35   extern char  *ecalloc(), *savestr();
36  
37 < extern double  dvalue();
37 > static double  dvalue();
38  
39   long  eclock = -1;                      /* value storage timer */
40  
# Line 68 | Line 68 | char  *fname;
68          eputs(": cannot open\n");
69          quit(1);
70      }
71 <    initfile(fname, fp);
71 >    initfile(fp, fname, 0);
72      while (nextc != EOF)
73          loaddefn();
74      if (fname != NULL)
# Line 76 | Line 76 | char  *fname;
76   }
77  
78  
79 < scompile(file, str)             /* get definitions from a string */
80 < char  *file;
79 > scompile(str, fn, ln)           /* get definitions from a string */
80   char  *str;
81 + char  *fn;
82 + int  ln;
83   {
84 <    initstr(file, str);
84 >    initstr(str, fn, ln);
85      while (nextc != EOF)
86          loaddefn();
87   }
# Line 114 | Line 115 | double  val;
115          ep2 = ep1->v.kid->sibling;
116          if (ep2->type == NUM) {
117              ep2->v.num = val;
117            ep2->sibling->v.tick = -1;
118              return;
119          }
120      }
# Line 129 | Line 129 | double  val;
129      ep2->type = NUM;
130      ep2->v.num = val;
131      addekid(ep1, ep2);
132    ep2 = newnode();
133    ep2->type = TICK;
134    ep2->v.tick = -1;
135    addekid(ep1, ep2);
136    ep2 = newnode();
137    ep2->type = NUM;
138    addekid(ep1, ep2);
132      dclear(vname);
133      dpush(ep1);
134   }
# Line 500 | Line 493 | EPNODE  *d;
493          quit(1);
494      }
495      ep1 = d->v.kid->sibling;                    /* get expression */
496 +    if (ep1->type == NUM)
497 +        return(ep1->v.num);                     /* return if number */
498      ep2 = ep1->sibling;                         /* check time */
499      if (ep2->v.tick < 0 || ep2->v.tick < eclock) {
500          ep2->v.tick = eclock;
501          ep2 = ep2->sibling;
502 <        ep2->v.num = evalue(ep1);               /* compute new value */
502 >        ep2->v.num = evalue(ep1);               /* needs new value */
503      } else
504 <        ep2 = ep2->sibling;                     /* reuse old value */
504 >        ep2 = ep2->sibling;                     /* else reuse old value */
505  
506      return(ep2->v.num);
507   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines