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

Comparing ray/src/rt/func.c (file contents):
Revision 2.28 by greg, Tue May 19 11:49:05 2015 UTC vs.
Revision 2.29 by greg, Wed May 20 12:58:30 2015 UTC

# Line 62 | Line 62 | initfunc()     /* initialize function evaluation */
62   }
63  
64  
65 + /* Set parameters for current evaluation */
66 + void
67 + set_eparams(char *prms)
68 + {
69 +        static char     *last_params = NULL;
70 +        char            vname[RMAXWORD];
71 +        double          value;
72 +        char            *cpd;
73 +                                        /* check if already set */
74 +        if ((prms == NULL) | (prms == last_params))
75 +                return;
76 +        if (last_params != NULL && !strcmp(prms, last_params))
77 +                return;
78 +        last_params = prms;             /* assign each variable */
79 +        while (*prms) {
80 +                if (isspace(*prms)) {
81 +                        ++prms; continue;
82 +                }
83 +                if (!isalpha(*prms))
84 +                        goto bad_params;
85 +                cpd = vname;
86 +                while (*prms && (*prms != '=') & !isspace(*prms)) {
87 +                        if (!isid(*prms))
88 +                                goto bad_params;
89 +                        *cpd++ = *prms++;
90 +                }
91 +                if (cpd == vname)
92 +                        goto bad_params;
93 +                *cpd = '\0';
94 +                while (isspace(*prms)) prms++;
95 +                if (*prms++ != '=')
96 +                        goto bad_params;
97 +                value = atof(prms);
98 +                if ((prms = fskip(prms)) == NULL)
99 +                        goto bad_params;
100 +                while (isspace(*prms)) prms++;
101 +                prms += (*prms == ',') | (*prms == ';');
102 +                varset(vname, '=', value);
103 +        }
104 +        return;
105 + bad_params:
106 +        sprintf(errmsg, "bad parameter list '%s'", last_params);
107 +        error(USER, errmsg);
108 + }
109 +
110 +
111   MFUNC *
112   getfunc(        /* get function for this modifier */
113          OBJREC  *m,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines