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.3 by greg, Tue Jun 26 09:15:08 1990 UTC vs.
Revision 1.7 by greg, Fri Jul 20 08:30:23 1990 UTC

# 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 161 | Line 154 | char  *name;
154  
155  
156   #ifdef  OUTCHAN
157 < chanout()                       /* set output channels */
157 > chanout(cs)                     /* set output channels */
158 > int  (*cs)();
159   {
160      register EPNODE  *ep;
161  
162      for (ep = outchan; ep != NULL; ep = ep->sibling)
163 <        chanset(ep->v.kid->v.chan, evalue(ep->v.kid->sibling));
163 >        (*cs)(ep->v.kid->v.chan, evalue(ep->v.kid->sibling));
164  
165   }
166   #endif
# Line 436 | Line 430 | getdefn()                      /* A -> SYM = E1 */
430      addekid(ep2, ep1);
431      addekid(ep2, getE1());
432  
433 +    if (
434   #ifdef  FUNCTION
435 <    if (ep1->type == SYM)
435 >            ep1->type == SYM &&
436   #endif
437 <    {
437 >            ep1->sibling->type != NUM) {
438          ep1 = newnode();
439          ep1->type = TICK;
440          ep1->v.tick = -1;
# Line 500 | Line 495 | EPNODE  *d;
495          quit(1);
496      }
497      ep1 = d->v.kid->sibling;                    /* get expression */
498 +    if (ep1->type == NUM)
499 +        return(ep1->v.num);                     /* return if number */
500      ep2 = ep1->sibling;                         /* check time */
501      if (ep2->v.tick < 0 || ep2->v.tick < eclock) {
502          ep2->v.tick = eclock;
503          ep2 = ep2->sibling;
504 <        ep2->v.num = evalue(ep1);               /* compute new value */
504 >        ep2->v.num = evalue(ep1);               /* needs new value */
505      } else
506 <        ep2 = ep2->sibling;                     /* reuse old value */
506 >        ep2 = ep2->sibling;                     /* else reuse old value */
507  
508      return(ep2->v.num);
509   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines