Index: src/libchcore/TBasePathData.h =================================================================== diff -u -N -r293e52b38d46653068006262172018a0f0d0a31c -ra7834ba278464cb62739f22d35f9bc16269706a1 --- src/libchcore/TBasePathData.h (.../TBasePathData.h) (revision 293e52b38d46653068006262172018a0f0d0a31c) +++ src/libchcore/TBasePathData.h (.../TBasePathData.h) (revision a7834ba278464cb62739f22d35f9bc16269706a1) @@ -32,6 +32,8 @@ BEGIN_CHCORE_NAMESPACE +class TPathContainer; + ///////////////////////////////////////////////////////////////////////////// // TBasePathData class LIBCHCORE_API TBasePathData @@ -40,6 +42,7 @@ enum EModifications { eMod_Added, + eMod_SrcPath, eMod_SkipProcessing, eMod_DstPath, @@ -48,25 +51,36 @@ public: TBasePathData(); + TBasePathData(size_t stObjectID, const TSmartPath& spSrcPath); TBasePathData(const TBasePathData& rEntry); + size_t GetObjectID() const; + void SetObjectID(size_t stObjectID); + + TSmartPath GetSrcPath() const; + void SetSrcPath(const TSmartPath& pathSrc); + bool GetSkipFurtherProcessing() const; void SetSkipFurtherProcessing(bool bSkipFurtherProcessing); void SetDestinationPath(const TSmartPath& strPath); TSmartPath GetDestinationPath() const; bool IsDestinationPathSet() const; - void Store(const ISerializerContainerPtr& spContainer, size_t stObjectID) const; + void Store(const ISerializerContainerPtr& spContainer) const; static void InitLoader(const IColumnsDefinitionPtr& spColumnDefs); - void Load(const ISerializerRowReaderPtr& spRowReader, size_t& stObjectID); + void Load(const ISerializerRowReaderPtr& spRowReader); private: #pragma warning(push) #pragma warning(disable: 4251) + // modification management typedef std::bitset BitSet; mutable BitSet m_setModifications; + // attributes + size_t m_stObjectID; + TSharedModificationTracker m_pathSrc; TSharedModificationTracker m_bSkipFurtherProcessing; // specifies if the path should be (or not) processed further TSharedModificationTracker m_pathDst; #pragma warning(pop) @@ -84,18 +98,16 @@ TBasePathDataContainer(); ~TBasePathDataContainer(); - // standard access to data - bool Exists(size_t stObjectID) const; - TBasePathDataPtr GetExisting(size_t stObjectID) const; - TBasePathDataPtr Get(size_t stObjectID); + TBasePathDataContainer& operator=(const TPathContainer& tPaths); - void Remove(size_t stObjectID); + // standard access to data + void Add(const TBasePathDataPtr& spEntry); + void RemoveAt(size_t stIndex); + TBasePathDataPtr GetAt(size_t stIndex) const; void Clear(); - // inner object read interface (to not create new inner objects when reading non-existent data) - bool GetSkipFurtherProcessing(size_t stObjectID) const; - TSmartPath GetDestinationPath(size_t stObjectID) const; - bool IsDestinationPathSet(size_t stObjectID) const; + bool IsEmpty() const; + size_t GetCount() const; void Store(const ISerializerContainerPtr& spContainer) const; void Load(const ISerializerContainerPtr& spContainer); @@ -104,17 +116,22 @@ TBasePathDataContainer(const TBasePathDataContainer& rSrc); TBasePathDataContainer& operator=(const TBasePathDataContainer& rSrc); + void ClearNL(); + protected: #pragma warning(push) #pragma warning(disable: 4251) - typedef std::map MapEntries; - MapEntries m_mapEntries; + typedef std::vector VecEntries; + VecEntries m_vEntries; mutable TRemovedObjects m_setRemovedObjects; mutable boost::shared_mutex m_lock; #pragma warning(pop) + size_t m_stLastObjectID; }; +typedef boost::shared_ptr TBasePathDataContainerPtr; + END_CHCORE_NAMESPACE #endif // __TBASEPATHDATA_H__