Index: src/libserializer/SerializableContainer.h =================================================================== diff -u -N -re9d12da97d434708c93b6967971ce265ac933252 -rf01ed9a0279a52c96a7272273ef19e57f7670f4a --- src/libserializer/SerializableContainer.h (.../SerializableContainer.h) (revision e9d12da97d434708c93b6967971ce265ac933252) +++ src/libserializer/SerializableContainer.h (.../SerializableContainer.h) (revision f01ed9a0279a52c96a7272273ef19e57f7670f4a) @@ -73,10 +73,7 @@ // ensure all objects have modification flag stripped to avoid unnecessary writing the same data to db again // NOTE: Load() method above should reset modification flag, but storing it in vector will set it again - hence the separate reset - for(T& rItem : m_vEntries) - { - rItem.ResetModifications(); - } + ResetModifications(); } virtual void InitColumns(const serializer::ISerializerContainerPtr& spContainer) const = 0; @@ -164,6 +161,28 @@ m_vEntries.clear(); } + void ResetModifications() + { + for(T& rEntry : m_vEntries) + { + rEntry.ResetModifications(); + } + m_setRemovedObjects.Clear(); + } + + bool IsModified() const + { + if(!m_setRemovedObjects.IsEmpty()) + return true; + + for(const T& rEntry : m_vEntries) + { + if(rEntry.IsModified()) + return true; + } + return false; + } + protected: serializer::object_id_t m_oidLastObjectID = 0; std::vector m_vEntries;