281 , mConversionInProgress(
false)
285 , mModificationTime()
286 , mFlagsOverwritten(
false)
287 , mTagsOverwritten(
false)
288 , mSizeChanged(
false)
289 , mClearPayload(
false)
297 mFlags = other.mFlags;
298 mRevision = other.mRevision;
300 mModificationTime = other.mModificationTime;
301 mMimeType = other.mMimeType;
302 mLegacyPayload = other.mLegacyPayload;
303 mPayloads = other.mPayloads;
304 mConversionInProgress =
false;
305 mAddedFlags = other.mAddedFlags;
306 mDeletedFlags = other.mDeletedFlags;
307 mFlagsOverwritten = other.mFlagsOverwritten;
308 mSizeChanged = other.mSizeChanged;
309 mCollectionId = other.mCollectionId;
310 mClearPayload = other.mClearPayload;
318 void resetChangeLog()
320 mFlagsOverwritten =
false;
322 mDeletedFlags.clear();
323 mSizeChanged =
false;
324 mTagsOverwritten =
false;
326 mDeletedTags.clear();
334 bool hasMetaTypeId(
int mtid)
const
336 return std::find_if(mPayloads.begin(), mPayloads.end(),
337 _detail::BySharedPointerAndMetaTypeID(-1, mtid))
341 PayloadBase *payloadBaseImpl(
int spid,
int mtid)
const
343 const PayloadContainer::const_iterator it
344 = std::find_if(mPayloads.begin(), mPayloads.end(),
345 _detail::BySharedPointerAndMetaTypeID(spid, mtid));
346 return it == mPayloads.end() ? 0 : it->payload.get() ;
349 bool movePayloadFrom(
ItemPrivate *other,
int mtid)
const
352 const size_t oldSize = mPayloads.size();
353 PayloadContainer &oPayloads = other->mPayloads;
354 const _detail::BySharedPointerAndMetaTypeID matcher(-1, mtid);
355 const size_t numMatching = std::count_if(oPayloads.begin(), oPayloads.end(), matcher);
356 mPayloads.resize(oldSize + numMatching);
358 for (PayloadContainer::iterator
359 dst = mPayloads.begin() + oldSize,
360 src = oPayloads.begin(), end = oPayloads.end() ; src != end ; ++src) {
366 return numMatching > 0 ;
370 std::auto_ptr<PayloadBase> takePayloadBaseImpl(
int spid,
int mtid)
372 PayloadContainer::iterator it
373 = std::find_if(mPayloads.begin(), mPayloads.end(),
374 _detail::BySharedPointerAndMetaTypeID(spid, mtid));
375 if (it == mPayloads.end()) {
376 return std::auto_ptr<PayloadBase>();
378 std::rotate(it, it + 1, mPayloads.end());
379 std::auto_ptr<PayloadBase> result(it->payload.release());
380 mPayloads.pop_back();
385 void setPayloadBaseImpl(
int spid,
int mtid, std::auto_ptr<PayloadBase> p,
bool add)
const
389 mLegacyPayload.reset();
401 mPayloads.resize(add ? mPayloads.size() + 1 : 1);
402 _detail::TypedPayload &tp = mPayloads.back();
403 tp.payload.reset(p.release());
404 tp.sharedPointerId = spid;
405 tp.metaTypeId = mtid;
408 void setLegacyPayloadBaseImpl(std::auto_ptr<PayloadBase> p);
409 void tryEnsureLegacyPayload()
const;
411 mutable _detail::clone_ptr<PayloadBase> mLegacyPayload;
412 mutable PayloadContainer mPayloads;
413 mutable bool mConversionInProgress;
420 QDateTime mModificationTime;
423 Item::Flags mAddedFlags;
424 Item::Flags mDeletedFlags;
425 Tag::List mAddedTags;
426 Tag::List mDeletedTags;
427 QSet<QByteArray> mCachedPayloadParts;
428 bool mFlagsOverwritten : 1;
429 bool mTagsOverwritten : 1;
430 bool mSizeChanged : 1;
431 bool mClearPayload : 1;