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.5 by gwlarson, Tue Aug 11 09:54:34 1998 UTC vs.
Revision 2.10 by schorsch, Thu Jul 17 09:21:29 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1992 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char RCSid[] = "$Id$";
3   #endif
6
4   /*
5   *  Routines for tracking object modifiers
6 + *
7 + *  External symbols declared in object.h
8   */
9  
10 + #include "copyright.h"
11 +
12   #include  "standard.h"
13  
14   #include  "object.h"
# Line 15 | Line 16 | static char SCCSid[] = "$SunId$ LBL";
16   #include  "otypes.h"
17  
18  
18 extern int  (*addobjnotify[])();        /* people to notify of new objects */
19
19   static struct ohtab {
20          int  hsiz;                      /* current table size */
21          OBJECT  *htab;                  /* table, if allocated */
22   }  modtab = {100, NULL}, objtab = {1000, NULL}; /* modifiers and objects */
23  
24 < static int  otndx();
24 > static int  otndx(char *, struct ohtab *);
25  
26  
27 < int
27 > OBJECT
28   objndx(op)                      /* get object number from pointer */
29   register OBJREC  *op;
30   {
31          register int  i, j;
32  
33 <        for (i = nobjects>>6; i >= 0; i--) {
33 >        for (i = nobjects>>OBJBLKSHFT; i >= 0; i--) {
34                  j = op - objblock[i];
35 <                if (j >= 0 && j < 0100)
36 <                        return((i<<6) + j);
35 >                if (j >= 0 && j < OBJBLKSIZ)
36 >                        return((i<<OBJBLKSHFT) + j);
37          }
38          return(OVOID);
39   }
40  
41  
42 < int
42 > OBJECT
43   lastmod(obj, mname)             /* find modifier definition before obj */
44   OBJECT  obj;
45   char  *mname;
# Line 60 | Line 59 | char  *mname;
59   }
60  
61  
62 < int
62 > OBJECT
63   modifier(mname)                 /* get a modifier number from its name */
64   char  *mname;
65   {
# Line 72 | Line 71 | char  *mname;
71  
72  
73   #ifdef  GETOBJ
74 < int
74 > OBJECT
75   object(oname)                   /* get an object number from its name */
76   char  *oname;
77   {
# Line 84 | Line 83 | char  *oname;
83   #endif
84  
85  
86 + void
87   insertobject(obj)               /* insert new object into our list */
88   register OBJECT  obj;
89   {
# Line 104 | Line 104 | register OBJECT  obj;
104   }
105  
106  
107 + void
108 + clearobjndx()                   /* clear object hash tables */
109 + {
110 +        if (modtab.htab != NULL) {
111 +                free((void *)modtab.htab);
112 +                modtab.htab = NULL;
113 +                modtab.hsiz = 100;
114 +        }
115 +        if (objtab.htab != NULL) {
116 +                free((void *)objtab.htab);
117 +                objtab.htab = NULL;
118 +                objtab.hsiz = 100;
119 +        }
120 + }
121 +
122 +
123   static int
124   nexthsiz(oldsiz)                /* return next hash table size */
125   int  oldsiz;
# Line 156 | Line 172 | tryagain:
172                          i = otndx(objptr(oldhtab[ndx])->oname, tab);
173                          tab->htab[i] = oldhtab[ndx];
174                  }
175 <        free((char *)oldhtab);
175 >        free((void *)oldhtab);
176          goto tryagain;                  /* should happen only once! */
177   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines