diff -r b183ec05bd8c -r 19bba8228ff0 remotemgmt_plat/common_agent_util_and_definitions_api/inc/nsmlconstants.h --- a/remotemgmt_plat/common_agent_util_and_definitions_api/inc/nsmlconstants.h Tue Aug 31 16:04:06 2010 +0300 +++ b/remotemgmt_plat/common_agent_util_and_definitions_api/inc/nsmlconstants.h Wed Sep 01 12:27:42 2010 +0100 @@ -216,10 +216,8 @@ { public: inline static void PushL(T* aPtr); - inline static void PushL(T& aRef); private: static void RPtrArrayDelete(TAny *aPtr); - static void LocalRPtrArrayDelete(TAny *aPtr); }; template @@ -229,12 +227,6 @@ } template -inline void CleanupRPtrArrayDelete::PushL(T& aRef) - { - CleanupStack::PushL(TCleanupItem(&LocalRPtrArrayDelete,&aRef)); - } - -template void CleanupRPtrArrayDelete::RPtrArrayDelete(TAny *aPtr) { T* ptr = STATIC_CAST(T*,aPtr); @@ -243,23 +235,44 @@ } template -void CleanupRPtrArrayDelete::LocalRPtrArrayDelete(TAny *aPtr) - { - T* ptr = STATIC_CAST(T*,aPtr); - ptr->ResetAndDestroy(); - } - -template inline void CleanupRPtrArrayPushL(T* aPtr) { CleanupRPtrArrayDelete::PushL(aPtr); } +// RImplInfoPtrArray cleanup pusher template -inline void CleanupRPtrArrayPushL(T& aRef) - { - CleanupRPtrArrayDelete::PushL(aRef); - } +class CleanupRImplInfoPtrArrayDelete + { +public: + inline static void PushL(T* aPtr); +private: + static void RImplInfoPtrArrayDelete(TAny *aPtr); + }; + +template +inline void CleanupRImplInfoPtrArrayDelete::PushL(T* aPtr) + { + CleanupStack::PushL(TCleanupItem(&RImplInfoPtrArrayDelete,aPtr)); + } + +template +void CleanupRImplInfoPtrArrayDelete::RImplInfoPtrArrayDelete(TAny *aPtr) + { + if( aPtr ) + { + T* ptr = STATIC_CAST(T*,aPtr); + ptr->ResetAndDestroy(); + ptr->Close(); + } + } + +template +inline void CleanupRImplInfoPtrArrayPushL(T* aPtr) + { + CleanupRImplInfoPtrArrayDelete::PushL(aPtr); + } + // Table names _LIT( KNSmlTableVersion, "Version" );