47 DtlObjPtr
getData(DtlObjPtr args,
const DtFilename& searchPath,
53 void*
remove(DtListItem* item);
54 void*
remove(T* item);
79 namespace DtBufferSerialize
100 template <
typename T>
107 template <
typename T>
114 template <
typename T>
121 template <
typename T>
124 DtRwList(name, orig, parentRegistry),
125 myAutoDelete(orig.myAutoDelete)
130 template <
typename T>
133 DtRwList(name, orig, parentRegistry),
134 myAutoDelete(orig.myAutoDelete)
139 template <
typename T>
142 DtRwList(orig.name(), orig, parentRegistry),
143 myAutoDelete(orig.myAutoDelete)
148 template <
typename T>
153 removeAndDeleteAll();
157 template <
typename T>
170 template <
typename T>
173 DtListItem* listItem = itemLookup(item);
177 return remove(listItem);
183 template <
typename T>
186 T* d = (T*)
DtRwList::remove(static_cast<DtReaderWriter*>(item->data()), item);
199 template <
typename T>
202 std::vector<T*> toDelete;
206 for (T* info = iter.
first(); info; info = iter.
next())
208 toDelete.push_back(info);
213 int iLimit = toDelete.size();
215 for (
int i = 0; i < iLimit; i++)
221 template <
typename T>
225 DtlObjPtr nameObj = DtcCar(args);
227 DtlObjPtr nextItem = DtcCdr(args);
228 if(nextItem == DtlObjPtr::nil())
233 T* value =
new T(nameObj->pname());
234 value->getSelf(args, searchPath, variableBindings);
238 return DtcCdr(DtcCdr(args));
241 template <
typename T>
246 removeAndDeleteAll();
254 template <
typename T>
259 for (T* info = iter.
first(); info; info = iter.
next())
265 template <
typename T>
268 static T theDefaultType(
"default-name");
270 return theDefaultType.readerWriterType();
273 template <
typename T>
276 if (count() == rhs.count())
278 DtListItem* thisItem = first();
279 DtListItem* thatItem = rhs.first();
281 while (thisItem && thatItem)
283 T* thisElement =
static_cast<T*
>(thisItem->data());
284 T* thatElement =
static_cast<T*
>(thatItem->data());
286 if (*thisElement != *thatElement)
291 thisItem = thisItem->next();
292 thatItem = thatItem->next();
301 template <
typename T>
304 return !(*
this == rhs);
307 namespace DtBufferSerialize
309 template <
typename T>
314 DtListItem* item = val.first();
317 const T* itemValue =
static_cast<const T*
>(item->data());
324 template <
typename T>
327 DtU16 n = val.count();
328 buffer =
encode(n, buffer);
329 DtListItem* item = val.first();
332 const T* itemValue =
static_cast<const T*
>(item->data());
333 buffer =
encode(*itemValue, buffer);
339 template <
typename T>
343 buffer =
decode(n, buffer);
345 for(
int i = 0; i < n;++i)
347 T* itemValue =
new T(
"item", &(val.
registry()));
348 buffer =
decode(*itemValue, buffer);