diff -r b13141f05c3d -r b5fbb9b25d57 emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h --- a/emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h Tue Apr 27 16:20:14 2010 +0300 +++ b/emailservices/emailstore/base_plugin/inc/baseplugincommonutils.h Tue May 11 15:57:15 2010 +0300 @@ -49,4 +49,31 @@ CleanupResetAndDestroyClose::PushL(aRef); } +/** +* Cleanup support for owning pointer arrays +*/ + +template +class CleanupResetAndDestroy +{ +private: + inline static void ResetAndDestroy( TAny *aPtr ) + { + reinterpret_cast( aPtr )->ResetAndDestroy(); + }; +public: + inline static void PushL( T& aItem ) + { + TCleanupItem item( &CleanupResetAndDestroy::ResetAndDestroy, &aItem ); + CleanupStack::PushL( item ); + }; +} ; + +template +inline void CleanupResetAndDestroyPushL( T& aRef ) + { + CleanupResetAndDestroy::PushL( aRef ); + } + + #endif