objlist.c

changeset 111
7d1dccdd7215
parent 101
50525dab6c8e
equal deleted inserted replaced
110:13134ea30227 111:7d1dccdd7215
134 134
135 return node; 135 return node;
136 } 136 }
137 137
138 138
139 bool objlist_contains(ObjList *objlist, Obj *obj)
140 {
141 return (objlist_find_node(objlist, obj)!=NULL);
142 }
143
144
139 bool objlist_insert_last(ObjList **objlist, Obj *obj) 145 bool objlist_insert_last(ObjList **objlist, Obj *obj)
140 { 146 {
141 ObjList *node=reuse(objlist); 147 ObjList *node=reuse(objlist);
142 148
143 if(node==NULL) 149 if(node==NULL)
175 optimise(objlist); 181 optimise(objlist);
176 182
177 node=objlist_find_node(*objlist, obj); 183 node=objlist_find_node(*objlist, obj);
178 184
179 if(node==NULL) 185 if(node==NULL)
180 return FALSE; 186 return objlist_insert_last(objlist, obj);
181 187
182 UNLINK_ITEM(*objlist, node, next, prev); 188 UNLINK_ITEM(*objlist, node, next, prev);
183 LINK_ITEM_LAST(*objlist, node, next, prev); 189 LINK_ITEM_LAST(*objlist, node, next, prev);
184 190
185 return TRUE; 191 return TRUE;
193 optimise(objlist); 199 optimise(objlist);
194 200
195 node=objlist_find_node(*objlist, obj); 201 node=objlist_find_node(*objlist, obj);
196 202
197 if(node==NULL) 203 if(node==NULL)
198 return FALSE; 204 return objlist_insert_first(objlist, obj);
199 205
200 UNLINK_ITEM(*objlist, node, next, prev); 206 UNLINK_ITEM(*objlist, node, next, prev);
201 LINK_ITEM_FIRST(*objlist, node, next, prev); 207 LINK_ITEM_FIRST(*objlist, node, next, prev);
202 208
203 return TRUE; 209 return TRUE;

mercurial