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

Comparing ray/src/hd/sm_list.c (file contents):
Revision 3.3 by gwlarson, Wed Sep 16 18:16:28 1998 UTC vs.
Revision 3.7 by gwlarson, Thu Jun 10 15:22:23 1999 UTC

# Line 20 | Line 20 | static LIST *free_lists = NULL;
20   extern int Malloc_cnt;  
21   #endif
22   LIST
23 + /* NOTE: Memory is not initialized */
24   *new_list()
25   {
26      LIST *l;
# Line 36 | Line 37 | LIST
37        if( !(l = (LIST *)malloc(sizeof(LIST))))
38            error(SYSTEM,"new_list():Unable to allocate memory");
39      }
39    /* clear the memory */
40    bzero(l, sizeof(LIST));
41
40      return(l);
41   }
42  
# Line 62 | Line 60 | LIST *a,*b;
60      return(b);
61   }
62  
63 + /* attaches list a at the end of list b */
64 + LIST
65 + *add_data(l,d,end)
66 + LIST *l;
67 + int d;
68 + LIST **end;
69 +
70 + {
71 +    LIST *list,*lptr;
72 +
73 +    list = new_list();
74 +    SET_LIST_DATA(list,d);
75 +    SET_LIST_NEXT(list,NULL);
76 +    if(!l)
77 +    {
78 +      if(end)
79 +        *end = list;
80 +      return(list);
81 +    }
82 +    if(end)
83 +      lptr = *end;
84 +    else
85 +    {
86 +      lptr = l;
87 +      while(LIST_NEXT(lptr))
88 +        lptr = LIST_NEXT(lptr);
89 +    }
90 +    LIST_NEXT(lptr) = list;
91 +    if(end)
92 +      *end = list;
93 +
94 +    return(l);
95 + }
96 +
97   /* Adds data to the end of a circular list. If set, "end"
98   * is a pointer to the last element in the list
99   */
# Line 90 | Line 122 | int d;
122      return(l);
123   }
124  
93 /* Pushes data element d at the top of the list- returns pointer
94   to new top of list
95 */
96 LIST
97 *push_data(l,d)
98 LIST *l;
99 int d;
100 {
101    LIST * list;
102    
103    list = new_list();
104    SET_LIST_DATA(list,d);
105    SET_LIST_NEXT(list,l);
106    return(list);
107 }
125  
126 +
127   /* frees the list */
128   LIST
129   *free_list(l)
# Line 119 | Line 137 | LIST * l;
137      return(NULL);
138   }
139  
140 + /* Pushes data element d at the top of the list- returns pointer
141 +   to new top of list
142 + */
143 + LIST
144 + *push_data(l,d)
145 + LIST *l;
146 + int d;
147 + {
148 +  LIST *list;
149 +
150 +  list = new_list();
151 +  SET_LIST_DATA(list,d);
152 +  SET_LIST_NEXT(list,l);
153 +  return(list);
154 + }
155   /* Returns data element d at the top of the list- returns pointer
156     to new top of list
157   */
# Line 175 | Line 208 | LIST **list;
208      }
209      return(FALSE);
210   }
211 +
212 +
213 +
214 +
215  
216  
217  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines