serviceproviders/sapi_landmarks/landmarksservice/src/clandmarkmanagehandlers.cpp
changeset 37 5d0ec8b709be
parent 33 50974a8b132e
equal deleted inserted replaced
33:50974a8b132e 37:5d0ec8b709be
    50 // Destructor.
    50 // Destructor.
    51 // -----------------------------------------------------------------------------
    51 // -----------------------------------------------------------------------------
    52 //
    52 //
    53 CLandmarkManageHandlers::~CLandmarkManageHandlers( )
    53 CLandmarkManageHandlers::~CLandmarkManageHandlers( )
    54 	{
    54 	{
    55 	iHandlers.ResetAndDestroy ( );
    55     TInt count = iHandlers.Count();
       
    56     for (TInt i = 0; i < count; i++)
       
    57         {
       
    58         if (!iHandlers[i]->DecRef())
       
    59             {
       
    60             delete iHandlers[i];
       
    61             }
       
    62         }
    56 	iHandlers.Close();
    63 	iHandlers.Close();
    57 	}
    64 	}
    58 
    65 
    59 // -----------------------------------------------------------------------------
    66 // -----------------------------------------------------------------------------
    60 // CLandmarkManageHandlers::CloseHandler( CLandmarkHandler* aHandler )
    67 // CLandmarkManageHandlers::CloseHandler( CLandmarkHandler* aHandler )
    64 void CLandmarkManageHandlers::CloseHandler( CLandmarkHandler* aHandler )
    71 void CLandmarkManageHandlers::CloseHandler( CLandmarkHandler* aHandler )
    65 	{
    72 	{
    66 	TInt index = iHandlers.Find (aHandler );
    73 	TInt index = iHandlers.Find (aHandler );
    67 	if ( index != KErrNotFound )
    74 	if ( index != KErrNotFound )
    68 		{
    75 		{
    69 		delete iHandlers[index];
    76         if (!iHandlers[index]->DecRef())
       
    77             {
       
    78             delete iHandlers[index];
       
    79             }
    70 		iHandlers[index] = NULL;
    80 		iHandlers[index] = NULL;
    71 		iHandlers.Remove (index );
    81 		iHandlers.Remove (index );
    72 		}
    82 		}
    73 	}
    83 	}
    74 // -----------------------------------------------------------------------------
    84 // -----------------------------------------------------------------------------
   208 	//initialize the database for further opertaions on the database.
   218 	//initialize the database for further opertaions on the database.
   209 	ExecuteAndDeleteLD (iLandmarkDatabaseHandle->InitializeL ( ) );
   219 	ExecuteAndDeleteLD (iLandmarkDatabaseHandle->InitializeL ( ) );
   210 	//Create other handles with respect to the open database
   220 	//Create other handles with respect to the open database
   211 	iLmCategoryManagerHandle = CPosLmCategoryManager::NewL (*iLandmarkDatabaseHandle );
   221 	iLmCategoryManagerHandle = CPosLmCategoryManager::NewL (*iLandmarkDatabaseHandle );
   212 	iLandmarkSearchHandle = CPosLandmarkSearch::NewL (*iLandmarkDatabaseHandle );
   222 	iLandmarkSearchHandle = CPosLandmarkSearch::NewL (*iLandmarkDatabaseHandle );
       
   223     IncRef();
   213 	}
   224 	}
   214 
   225 
   215 // -----------------------------------------------------------------------------
   226 // -----------------------------------------------------------------------------
   216 // CLandmarkHandler::CLandmarkHandler()
   227 // CLandmarkHandler::CLandmarkHandler()
   217 // C++ default constructor can NOT contain any code, that might leave.
   228 // C++ default constructor can NOT contain any code, that might leave.