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 2.27 by greg, Sat Dec 28 18:05:13 2019 UTC vs.
Revision 2.30 by greg, Sat Mar 12 15:50:13 2022 UTC

# Line 196 | Line 196 | dremove(                       /* delete all definitions of name */
196  
197  
198   int
199 < vardefined(     /* return non-zero if variable defined */
199 > vardefined(     /* return '=' or ':' if variable/constant defined */
200          char  *name
201   )
202   {
203      EPNODE  *dp;
204  
205 <    return((dp = dlookup(name)) != NULL && dp->v.kid->type == SYM);
205 >    if ((dp = dlookup(name)) == NULL || dp->v.kid->type != SYM)
206 >        return(0);
207 >    return(dp->type);
208   }
209  
210  
# Line 637 | Line 639 | getdefn(void)
639              ep2 = newnode();
640              ep2->type = SYM;
641              ep2->v.name = savestr(getname());
642 +            if (strchr(ep2->v.name, CNTXMARK) != NULL)
643 +                syntax("illegal parameter name");
644              addekid(ep1, ep2);
645          } while (nextc == ',');
646          if (nextc != ')')
# Line 702 | Line 706 | getchan(void)                  /* A -> $N = E1 */
706  
707  
708   static double                   /* evaluate a variable */
709 < dvalue(char  *name, EPNODE      *d)
709 > dvalue(char *name, EPNODE *d)
710   {
711      EPNODE  *ep1, *ep2;
712      
# Line 714 | Line 718 | dvalue(char  *name, EPNODE     *d)
718      ep1 = d->v.kid->sibling;                    /* get expression */
719      if (ep1->type == NUM)
720          return(ep1->v.num);                     /* return if number */
721 +    if (esupport&E_RCONST && d->type == ':') {
722 +        wputs(name);
723 +        wputs(": assigned non-constant value\n");
724 +    }
725      ep2 = ep1->sibling;                         /* check time */
726      if (eclock >= MAXCLOCK)
727          eclock = 1;                             /* wrap clock counter */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines