3 import "instance" // TOFIX: This is required to build Debug on Ubuntu 10.04, GCC 4.4.3
6 public class Link : ListItem
13 public class List<class LLT> : LinkList<Link, T = LLT, D = LLT>
16 // Generic iterator support
17 LLT GetData(Link link)
19 return link ? ((class(LLT) && class(LLT).type == structClass) ? (LLT)&link.data : (LLT)link.data) : (LLT)0;
22 bool SetData(Link link, LLT value)
24 if(class(LLT).type == structClass)
25 memcpy((void *)&link.data, (void *)value, class(LLT).structSize);
27 link.data = (uint64)value;
31 Link Insert(Link after, LLT value)
34 if(class(LLT) && class(LLT).type == structClass)
36 link = (Link)new0 byte[sizeof(class ListItem) + class(LLT).structSize];
37 memcpy((void *)&link.data, (void *)value, class(LLT).structSize);
40 link = Link { data = (uint64)value };
41 LinkList::Insert(after, (LT)link);
47 return (Link)Insert(last, value);
50 void Remove(Link link)
52 LinkList::Remove(link);
56 void Delete(Link link)
58 D data = GetData(link);
68 D data = GetData(item);
76 return (Link)Container::Find(value);