60inline void load(Archive & ar, QSharedPointer<T> & t,
const unsigned int file_version)
62 Q_UNUSED(file_version);
63 static QHash<void *, QWeakPointer<T> > listOfWeakPointers;
64 T * ptr = NULL; ar >> boost::serialization::make_nvp(
"qt_shared_ptr", ptr);
65 if (! ptr) { t = QSharedPointer<T>();
return; }
67 void * pVoid =
static_cast<void *
>(ptr);
68 QSharedPointer<T> pShared = (listOfWeakPointers.contains(pVoid) ? listOfWeakPointers.value(pVoid).toStrongRef() : QSharedPointer<T>());
69 if (pShared) { t = pShared;
return; }
70 t = QSharedPointer<T>(ptr);
71 QWeakPointer<T> pWeak = t;
72 listOfWeakPointers.insert(pVoid, pWeak);
74 static int iLoadCount = 0;
75 iLoadCount++;
if (iLoadCount <= 1000) {
return; }
76 QMutableHashIterator<void *, QWeakPointer<T> > itr(listOfWeakPointers);
77 while (itr.hasNext()) { itr.next();
if (itr.value().isNull()) { itr.remove(); } }