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.24 by greg, Tue Feb 22 16:45:12 2011 UTC vs.
Revision 2.25 by greg, Thu Jun 7 18:56:06 2012 UTC

# Line 33 | Line 33 | static RAY  *fray = NULL;      /* current function ray */
33   static double  l_erf(char *), l_erfc(char *), l_arg(char *);
34  
35  
36 < extern MFUNC *
36 > MFUNC *
37   getfunc(        /* get function for this modifier */
38          OBJREC  *m,
39          int  ff,
# Line 43 | Line 43 | getfunc(       /* get function for this modifier */
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 135 | Line 135 | memerr:
135   }
136  
137  
138 < extern void
138 > void
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 | freefunc(                      /* free memory associated with modifier */
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;
165   }
166  
167  
168 < extern int
168 > int
169   setfunc(                        /* set channels for function call */
170 <        OBJREC  *m,
171 <        register RAY  *r
170 >        OBJREC  *m,                     /* can be NULL */
171 >        RAY  *r
172   )
173   {
174          static RNUMBER  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);
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 199 | setfunc(                       /* set channels for function call */
199   }
200  
201  
202 < extern void
202 > void
203   loadfunc(                       /* load definition file */
204          char  *fname
205   )
# Line 215 | Line 217 | loadfunc(                      /* load definition file */
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 247 | Line 249 | l_erfc(char *nm)               /* cumulative error function */
249   }
250  
251  
252 < extern double
252 > double
253   chanvalue(                      /* return channel n to calcomp */
254 <        register int  n
254 >        int  n
255   )
256   {
257          if (fray == NULL)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines