diff -r 185201be11b0 -r 516af714ebb4 memspy/Driver/Kernel/Include/MemSpyDriverHeapWalker.h --- a/memspy/Driver/Kernel/Include/MemSpyDriverHeapWalker.h Thu Sep 02 22:05:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#ifndef MEMSPYDRIVERHEAPWALKER_H -#define MEMSPYDRIVERHEAPWALKER_H - -// System includes -#include -#include - -// Shared includes -#include - -// User includes -#include "MemSpyDriverHeap.h" -#include "MemSpyDriverHeapStatistics.h" - -#include "heaputils.h" -using namespace LtkUtils; - -// Heap walker observer interface - can be used to make a record of each cell -class MMemSpyHeapWalkerObserver - { -public: - virtual TBool HandleHeapCell(TMemSpyDriverCellType aCellType, TAny* aCellAddress, TInt aLength, TInt aNestingLevel, TInt aAllocNumber) = 0; - virtual void HandleHeapWalkInit() = 0; - }; - - -// Heap walker - allows in-place walking of any heap -class RMemSpyDriverHeapWalker - { -public: - RMemSpyDriverHeapWalker(RMemSpyDriverRHeapBase& aHeap, MMemSpyHeapWalkerObserver* aObserver=NULL); - -public: // API - TInt Traverse(); - void CopyStatsTo( TMemSpyHeapStatisticsRHeap& aStats ); - void SetObserver( MMemSpyHeapWalkerObserver* aObserver ); - inline void SetPrintDebug() { iPrintDebug = ETrue; } - inline const TMemSpyHeapWalkStatistics& Stats() const { return iStats; } - -private: // Internal methods - static TBool CellCallback(RAllocatorHelper& aHelper, TAny* aContext, RAllocatorHelper::TExtendedCellType aCellType, TLinAddr aCellAddress, TInt aLength); - TBool DoCellCallback(RAllocatorHelper& aHelper, RAllocatorHelper::TExtendedCellType aCellType, TLinAddr aCellAddress, TInt aLength); - TBool NotifyCell( TMemSpyDriverCellType aType, TAny* aCellAddress, TInt aLength, TInt aNestingLevel = -1, TInt aAllocNumber = -1 ); - // - void UpdateStats( TMemSpyDriverCellType aType, TAny* aCellAddress, TInt aLength, TInt aNestingLevel, TInt aAllocNumber ); - void InitialiseStats(); - void FinaliseStats(); - void PrintStats(); - // - inline TBool PrintDebug() const { return iPrintDebug; } - -private: - RMemSpyDriverRHeapBase& iHeap; - TBool iPrintDebug; - MMemSpyHeapWalkerObserver* iObserver; - TMemSpyHeapWalkStatistics iStats; - }; - - - -#endif