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.1 by gwlarson, Wed Aug 19 17:45:24 1998 UTC vs.
Revision 3.6 by gwlarson, Sun Jan 10 10:27:45 1999 UTC

# Line 24 | Line 24 | LIST
24   {
25      LIST *l;
26  
27
28
27      /* check free list for available edges */
28      if( free_lists )
29      {
# Line 52 | Line 50 | LIST *a,*b;
50   {
51      LIST * l;
52  
55    if(!a)
56      return(b);
57
53      if(!b)
54         return(a);
55      
# Line 67 | Line 62 | LIST *a,*b;
62      return(b);
63   }
64  
65 + /* attaches list a at the end of list b */
66 + LIST
67 + *add_data(l,d,end)
68 + LIST *l;
69 + int d;
70 + LIST **end;
71 +
72 + {
73 +    LIST *list,*lptr;
74 +
75 +    list = new_list();
76 +    SET_LIST_DATA(list,d);
77 +
78 +    if(!l)
79 +    {
80 +      if(end)
81 +        *end = list;
82 +      return(list);
83 +    }
84 +    if(end)
85 +      lptr = *end;
86 +    else
87 +    {
88 +      lptr = l;
89 +      while(LIST_NEXT(lptr))
90 +        lptr = LIST_NEXT(lptr);
91 +    }
92 +    LIST_NEXT(lptr) = list;
93 +    if(end)
94 +      *end = list;
95 +
96 +    return(l);
97 + }
98 +
99   /* Adds data to the end of a circular list. If set, "end"
100   * is a pointer to the last element in the list
101   */
# Line 95 | Line 124 | int d;
124      return(l);
125   }
126  
98 /* Pushes data element d at the top of the list- returns pointer
99   to new top of list
100 */
101 LIST
102 *push_data(l,d)
103 LIST *l;
104 int d;
105 {
106    LIST * list;
107    
108    list = new_list();
109    SET_LIST_DATA(list,d);
110    SET_LIST_NEXT(list,l);
111    return(list);
112 }
127  
128 +
129   /* frees the list */
130   LIST
131   *free_list(l)
# Line 118 | Line 133 | LIST * l;
133   {
134      if(!l)
135         return(NULL);
136 +
137      free_lists = append_list(free_lists,l);
138  
139      return(NULL);
140   }
141  
142 + /* Pushes data element d at the top of the list- returns pointer
143 +   to new top of list
144 + */
145 + LIST
146 + *push_data(l,d)
147 + LIST *l;
148 + int d;
149 + {
150 +  LIST *list;
151 +
152 +  list = new_list();
153 +  SET_LIST_DATA(list,d);
154 +  SET_LIST_NEXT(list,l);
155 +  return(list);
156 + }
157   /* Returns data element d at the top of the list- returns pointer
158     to new top of list
159   */
# Line 131 | Line 162 | pop_list(l)
162   LIST **l;
163   {
164      LIST *p;
165 <    void *d;
165 >    int d;
166      
167      if(!l)
168         return(NULL);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines