Index: src/libchcore/TBasePathData.h =================================================================== diff -u -N -r73583f2ca01fa1b2eae49bbc63bce46b9ecff5db -r2efd22688b8d12be34c87bf2b024d8db6e317d60 --- src/libchcore/TBasePathData.h (.../TBasePathData.h) (revision 73583f2ca01fa1b2eae49bbc63bce46b9ecff5db) +++ src/libchcore/TBasePathData.h (.../TBasePathData.h) (revision 2efd22688b8d12be34c87bf2b024d8db6e317d60) @@ -61,35 +61,31 @@ { public: // constructors/destructor - explicit TBasePathDataContainer(const TModPathContainer& tBasePaths); + TBasePathDataContainer(); ~TBasePathDataContainer(); // standard access to data - TBasePathDataPtr GetAt(size_t iPos) const; + bool Exists(size_t stObjectID) const; + TBasePathDataPtr GetExisting(size_t stObjectID) const; + TBasePathDataPtr Get(size_t stObjectID); - void SetCount(size_t stCount); - size_t GetCount() const; - void Add(const TBasePathDataPtr& pEntry); - void SetAt(size_t nIndex, const TBasePathDataPtr& pEntry); - void RemoveAt(size_t nIndex, size_t nCount = 1); + void Remove(size_t stObjectID); void Clear(); - const TModPathContainer& GetBasePaths() const { return m_tBasePaths; } + // 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; - // serialization - void Serialize(TReadBinarySerializer& rSerializer, bool bData); - void Serialize(TWriteBinarySerializer& rSerializer, bool bData); - private: TBasePathDataContainer(const TBasePathDataContainer& rSrc); TBasePathDataContainer& operator=(const TBasePathDataContainer& rSrc); protected: - const TModPathContainer& m_tBasePaths; - #pragma warning(push) #pragma warning(disable: 4251) - std::vector m_vEntries; + typedef std::map MapEntries; + MapEntries m_mapEntries; mutable boost::shared_mutex m_lock; #pragma warning(pop) };