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.21 by greg, Thu Feb 12 18:55:50 2004 UTC vs.
Revision 2.25 by greg, Thu Jun 7 18:56:06 2012 UTC

# Line 8 | Line 8 | static const char      RCSid[] = "$Id$";
8   #include "copyright.h"
9  
10   #include  "ray.h"
11
11   #include  "paths.h"
13
12   #include  "otypes.h"
15
13   #include  "func.h"
14  
15  
# Line 37 | Line 34 | static double  l_erf(char *), l_erfc(char *), l_arg(ch
34  
35  
36   MFUNC *
37 < getfunc(m, ff, ef, dofwd)       /* get function for this modifier */
38 < OBJREC  *m;
39 < int  ff;
40 < unsigned int  ef;
41 < int  dofwd;
37 > getfunc(        /* get function for this modifier */
38 >        OBJREC  *m,
39 >        int  ff,
40 >        unsigned int  ef,
41 >        int  dofwd
42 > )
43   {
44          static char  initfile[] = INITFILE;
45          char  sbuf[MAXSTR];
46 <        register char  **arg;
47 <        register MFUNC  *f;
46 >        char  **arg;
47 >        MFUNC  *f;
48          int  ne, na;
49 <        register int  i;
49 >        int  i;
50                                          /* check to see if done already */
51          if ((f = (MFUNC *)m->os) != NULL)
52                  return(f);
# Line 133 | Line 131 | toofew:
131          objerror(m, USER, "too few string arguments");
132   memerr:
133          error(SYSTEM, "out of memory in getfunc");
134 +        return NULL; /* pro forma return */
135   }
136  
137  
138   void
139 < freefunc(m)                     /* free memory associated with modifier */
140 < OBJREC  *m;
139 > freefunc(                       /* free memory associated with modifier */
140 >        OBJREC  *m
141 > )
142   {
143 <        register MFUNC  *f;
144 <        register int  i;
143 >        MFUNC  *f;
144 >        int  i;
145  
146          if ((f = (MFUNC *)m->os) == NULL)
147                  return;
# Line 158 | Line 158 | OBJREC  *m;
158          }
159          if (f->b != &unitxf)
160                  free((void *)f->b);
161 <        if (f->f != NULL && f->f != &unitxf)
161 >        if ((f->f != NULL) & (f->f != &unitxf))
162                  free((void *)f->f);
163          free((void *)f);
164          m->os = NULL;
# Line 166 | Line 166 | OBJREC  *m;
166  
167  
168   int
169 < setfunc(m, r)                   /* set channels for function call */
170 < OBJREC  *m;
171 < register RAY  *r;
169 > setfunc(                        /* set channels for function call */
170 >        OBJREC  *m,                     /* can be NULL */
171 >        RAY  *r
172 > )
173   {
174 <        static unsigned long  lastrno = ~0;
175 <        register MFUNC  *f;
176 <                                        /* get function */
177 <        if ((f = (MFUNC *)m->os) == NULL)
178 <                objerror(m, CONSISTENCY, "setfunc called before getfunc");
179 <                                        /* set evaluator context */
180 <        setcontext(f->ctx);
174 >        static RNUMBER  lastrno = ~0;
175 >        MFUNC  *f;
176 >                                        /* get function if any */
177 >        if (m != NULL) {
178 >                if ((f = (MFUNC *)m->os) == NULL)
179 >                        objerror(m, CONSISTENCY, "setfunc called before getfunc");
180 >                setcontext(f->ctx);     /* set evaluator context */
181 >        } else
182 >                setcontext("");
183                                          /* check to see if matrix set */
184 <        if (m == fobj && r->rno == lastrno)
184 >        if ((m == fobj) & (r->rno == lastrno))
185                  return(0);
186          fobj = m;
187          fray = r;
# Line 197 | Line 200 | register RAY  *r;
200  
201  
202   void
203 < loadfunc(fname)                 /* load definition file */
204 < char  *fname;
203 > loadfunc(                       /* load definition file */
204 >        char  *fname
205 > )
206   {
207          char  *ffname;
208  
# Line 213 | Line 217 | char  *fname;
217   static double
218   l_arg(char *nm)                 /* return nth real argument */
219   {
220 <        register int  n;
220 >        int  n;
221  
222          if (fobj == NULL)
223 <                syntax("arg(n) used in constant expression");
223 >                error(USER, "arg(n) called without a context");
224  
225          n = argument(1) + .5;           /* round to integer */
226  
# Line 234 | Line 238 | l_arg(char *nm)                        /* return nth real argument */
238   static double
239   l_erf(char *nm)                 /* error function */
240   {
237        extern double  erf();
238
241          return(erf(argument(1)));
242   }
243  
# Line 243 | Line 245 | l_erf(char *nm)                        /* error function */
245   static double
246   l_erfc(char *nm)                /* cumulative error function */
247   {
246        extern double  erfc();
247
248          return(erfc(argument(1)));
249   }
250  
251  
252   double
253 < chanvalue(n)                    /* return channel n to calcomp */
254 < register int  n;
253 > chanvalue(                      /* return channel n to calcomp */
254 >        int  n
255 > )
256   {
257          if (fray == NULL)
258                  syntax("ray parameter used in constant expression");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines