Index: src/libchcore/TTaskInfo.h =================================================================== diff -u -r9479911a096555a7504c5c8a8eaee83ecb63440c -r081055369d6b332ef1651877756657973b1b2d9c --- src/libchcore/TTaskInfo.h (.../TTaskInfo.h) (revision 9479911a096555a7504c5c8a8eaee83ecb63440c) +++ src/libchcore/TTaskInfo.h (.../TTaskInfo.h) (revision 081055369d6b332ef1651877756657973b1b2d9c) @@ -25,6 +25,9 @@ #include "TPath.h" #include "TaskID.h" #include "ISerializerContainer.h" +#include "TRemovedObjects.h" +#include +#include "TSharedModificationTracker.h" BEGIN_CHCORE_NAMESPACE @@ -34,20 +37,21 @@ class LIBCHCORE_API TTaskInfoEntry { public: - enum EModificationInfo + enum EModifications { eMod_None = 0, - eMod_Added = 1, - eMod_TaskPath = 4, - eMod_Order = 8, + eMod_Added, + eMod_TaskPath, + eMod_Order, + + eMod_Last }; public: TTaskInfoEntry(); - TTaskInfoEntry(taskid_t tTaskID, const TSmartPath& pathTask, int iOrder, const TTaskPtr& spTask, int iModification = eMod_None); + TTaskInfoEntry(taskid_t tTaskID, const TSmartPath& pathTask, int iOrder, const TTaskPtr& spTask); - taskid_t GetTaskID() const; - void SetTaskID(taskid_t tTaskID); + size_t GetObjectID() const; TSmartPath GetTaskSerializeLocation() const; void SetTaskSerializeLocation(const TSmartPath& pathTask); @@ -58,66 +62,58 @@ int GetOrder() const; void SetOrder(int iOrder); - int GetModifications() const; - void SetModification(int iModification, int iMask); + void Store(const ISerializerContainerPtr& spContainer) const; + static void InitLoader(IColumnsDefinition& rColumnDefs); + void Load(const ISerializerRowReaderPtr& spRowReader); + void ResetModifications(); - bool IsAdded() const; - bool IsModified() const; - - void Store(const ISerializerContainerPtr& spContainer); - bool Load(const ISerializerRowReaderPtr& spRowReader); - private: - taskid_t m_tTaskID; - TSmartPath m_pathSerializeLocation; #pragma warning(push) #pragma warning(disable:4251) + size_t m_stObjectID; + typedef std::bitset Bitset; + mutable std::bitset m_setModifications; + TSharedModificationTracker m_pathSerializeLocation; + TSharedModificationTracker m_iOrder; + TTaskPtr m_spTask; #pragma warning(pop) - int m_iOrder; - int m_iModificationType; // added/modified/not changed (wo deleted status) }; class LIBCHCORE_API TTaskInfoContainer { public: TTaskInfoContainer(); - void Add(taskid_t tTaskID, const TSmartPath& strPath, int iOrder, const TTaskPtr& spTask); + void Add(const TSmartPath& strPath, int iOrder, const TTaskPtr& spTask); void RemoveAt(size_t stIndex); TTaskInfoEntry& GetAt(size_t stIndex); const TTaskInfoEntry& GetAt(size_t stIndex) const; + TTaskInfoEntry& GetAtOid(size_t stObjectID); + bool GetByTaskID(taskid_t tTaskID, TTaskInfoEntry& rInfo) const; size_t GetCount() const; bool IsEmpty() const; void Clear(); - size_t GetDeletedCount() const; - taskid_t GetDeletedAt(size_t stIndex) const; - // modifications management - void Store(const ISerializerContainerPtr& spContainer); + void Store(const ISerializerContainerPtr& spContainer) const; void Load(const ISerializerContainerPtr& spContainer); - void GetDiffAndResetModifications(TTaskInfoContainer& rDiff); - void RestoreModifications(const TTaskInfoContainer& tDataDiff) throw(); void ClearModifications(); - bool HasDeletions() const; - bool HasAdditions() const; - bool HasModifications() const; - private: #pragma warning(push) #pragma warning(disable:4251) std::vector m_vTaskInfos; - std::set m_setRemovedTasks; + mutable TRemovedObjects m_setRemovedTasks; #pragma warning(pop) + size_t m_stLastObjectID; }; END_CHCORE_NAMESPACE