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

Comparing ray/src/common/modobject.c (file contents):
Revision 2.2 by greg, Sat Nov 21 21:35:38 1992 UTC vs.
Revision 2.5 by gwlarson, Tue Aug 11 09:54:34 1998 UTC

# Line 25 | Line 25 | static struct ohtab {
25   static int  otndx();
26  
27  
28 #ifdef  GETOBJ
28   int
29 < object(oname)                   /* get an object number from its name */
30 < char  *oname;
29 > objndx(op)                      /* get object number from pointer */
30 > register OBJREC  *op;
31   {
32 <        register int  ndx;
32 >        register int  i, j;
33  
34 <        ndx = otndx(oname, &objtab);
35 <        return(objtab.htab[ndx]);
34 >        for (i = nobjects>>6; i >= 0; i--) {
35 >                j = op - objblock[i];
36 >                if (j >= 0 && j < 0100)
37 >                        return((i<<6) + j);
38 >        }
39 >        return(OVOID);
40   }
38 #endif
41  
42  
43   int
44 + lastmod(obj, mname)             /* find modifier definition before obj */
45 + OBJECT  obj;
46 + char  *mname;
47 + {
48 +        register OBJREC  *op;
49 +        register int  i;
50 +
51 +        i = modifier(mname);            /* try hash table first */
52 +        if (i < obj)
53 +                return(i);
54 +        for (i = obj; i-- > 0; ) {      /* need to search */
55 +                op = objptr(i);
56 +                if (ismodifier(op->otype) && !strcmp(op->oname, mname))
57 +                        return(i);
58 +        }
59 +        return(OVOID);
60 + }
61 +
62 +
63 + int
64   modifier(mname)                 /* get a modifier number from its name */
65   char  *mname;
66   {
# Line 49 | Line 71 | char  *mname;
71   }
72  
73  
74 + #ifdef  GETOBJ
75 + int
76 + object(oname)                   /* get an object number from its name */
77 + char  *oname;
78 + {
79 +        register int  ndx;
80 +
81 +        ndx = otndx(oname, &objtab);
82 +        return(objtab.htab[ndx]);
83 + }
84 + #endif
85 +
86 +
87   insertobject(obj)               /* insert new object into our list */
88   register OBJECT  obj;
89   {
90          register int  i;
91  
57 #ifdef  GETOBJ
58        i = otndx(objptr(obj)->oname, &objtab);
59        objtab.htab[i] = obj;
60 #endif
92          if (ismodifier(objptr(obj)->otype)) {
93                  i = otndx(objptr(obj)->oname, &modtab);
94                  modtab.htab[i] = obj;
95          }
96 + #ifdef  GETOBJ
97 +        else {
98 +                i = otndx(objptr(obj)->oname, &objtab);
99 +                objtab.htab[i] = obj;
100 +        }
101 + #endif
102          for (i = 0; addobjnotify[i] != NULL; i++)
103                  (*addobjnotify[i])(obj);
104   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines