lowlevellibsandfws/pluginfw/Framework/frame/RegistryData.h
changeset 22 ddc455616bd6
parent 0 e4d67989cc36
child 45 4b03adbd26ca
--- a/lowlevellibsandfws/pluginfw/Framework/frame/RegistryData.h	Fri Apr 16 16:46:38 2010 +0300
+++ b/lowlevellibsandfws/pluginfw/Framework/frame/RegistryData.h	Mon May 03 14:06:43 2010 +0300
@@ -252,8 +252,12 @@
 							  TBool aLegitimateImpl);
 	static void ResetTInterfaceIndex(TAny* aObject);
 
-	/** Remove the pointer from iImplIndex */
-	TBool RemoveImplFromImplIndex(CImplementationData* aPtr) const;
+	/** Remove the pointer from iImplIndex based on the impl address*/
+    TBool RemoveImplByAddrFromImplIndex(CImplementationData* aPtr) const;
+
+    /** Used to restore the impIndex sanity in case of a leave */
+	static void RemoveImplFromImplIndexCleanUp(TAny* aPtr);
+	
 	/** Insert aNewImpl into iImplIndex. */
 	TInt InsertImplIntoImplIndex(CImplementationData* aNewImpl) const;
 	/** Store change in drive state - addition or removal*/
@@ -490,4 +494,14 @@
  	iUnusedImpls.Reset();
    	}
 
+    
+    class TCleanupImplIndexEntry
+        {
+        public:
+        TCleanupImplIndexEntry(CRegistryData* aRegData, CRegistryData::CImplementationData* aImpl)
+        : iRegistryData(aRegData), iImplEntry(aImpl)   
+        {}
+        CRegistryData*         iRegistryData;
+        CRegistryData::CImplementationData*   iImplEntry;
+        };
 #endif //__REGISTRYDATA_H__