memspy/Engine/Source/Helpers/MemSpyEngineHelperChunk.cpp
changeset 48 516af714ebb4
parent 45 185201be11b0
child 55 f2950aff7424
--- a/memspy/Engine/Source/Helpers/MemSpyEngineHelperChunk.cpp	Thu Sep 02 22:05:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,812 +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:
-*
-*/
-
-#include <memspy/engine/memspyenginehelperchunk.h>
-
-// Driver includes
-#include <memspy/driver/memspydriverclient.h>
-
-// User includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineutils.h>
-#include <memspy/engine/memspyengineoutputsink.h>
-#include <memspy/engine/memspyengineoutputlist.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-
-// Constants
-const TInt KMemSpyEngineMaxChunkCount = 768;
-
-// Literal constants
-_LIT( KMemSpyEngineChunkListOutputComma, ", " );
-
-
-
-CMemSpyEngineHelperChunk::CMemSpyEngineHelperChunk( CMemSpyEngine& aEngine )
-:   iEngine( aEngine )
-    {
-    }
-
-    
-CMemSpyEngineHelperChunk::~CMemSpyEngineHelperChunk()
-    {
-    }
-
-
-void CMemSpyEngineHelperChunk::ConstructL()
-    {
-    }
-
-
-CMemSpyEngineHelperChunk* CMemSpyEngineHelperChunk::NewL( CMemSpyEngine& aEngine )
-    {
-    CMemSpyEngineHelperChunk* self = new(ELeave) CMemSpyEngineHelperChunk( aEngine );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForThreadL( const CMemSpyThread& aThread )
-    {
-    OutputChunkInfoForThreadL( aThread.Id() );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForThreadL( TThreadId aTid )
-    {
-    TBuf<512> lineBuffer;
-    OutputChunkInfoForThreadL( aTid, lineBuffer );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForThreadL( TThreadId aTid, TDes& aLineBuffer )
-    {
-    DoOutputChunkInfoForObjectL( aTid, aLineBuffer, EThread );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForProcessL( const CMemSpyProcess& aProcess )
-    {
-    OutputChunkInfoForProcessL( aProcess.Id() );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForProcessL( TProcessId aPid )
-    {
-    TBuf<512> lineBuffer;
-    OutputChunkInfoForProcessL( aPid, lineBuffer );
-    }
-
-
-EXPORT_C void CMemSpyEngineHelperChunk::OutputChunkInfoForProcessL( TProcessId aPid, TDes& aLineBuffer )
-    {
-    DoOutputChunkInfoForObjectL( aPid, aLineBuffer, EProcess );
-    }
-
-
-EXPORT_C CMemSpyEngineChunkList* CMemSpyEngineHelperChunk::ListL()
-    {
-    RArray<TAny*> handles( 128 );
-    CleanupClosePushL( handles );
-    //
-    GetChunkHandlesL( handles, EAll );
-    CMemSpyEngineChunkList* list = CreateListFromHandlesL( handles );
-    //
-    CleanupStack::PopAndDestroy( &handles );
-    return list;
-    }
-
-
-EXPORT_C CMemSpyEngineChunkList* CMemSpyEngineHelperChunk::ListForThreadL( TThreadId aTid )
-    {
-    RArray<TAny*> handles( 128 );
-    CleanupClosePushL( handles );
-    //
-    GetChunkHandlesL( handles, EThread, aTid );
-    CMemSpyEngineChunkList* list = CreateListFromHandlesL( handles );
-    //
-    CleanupStack::PopAndDestroy( &handles );
-    return list;
-    }
-
-
-EXPORT_C CMemSpyEngineChunkList* CMemSpyEngineHelperChunk::ListForProcessL( TProcessId aPid )
-    {
-    RArray<TAny*> handles( 128 );
-    CleanupClosePushL( handles );
-    //
-    GetChunkHandlesL( handles, EProcess, aPid );
-    CMemSpyEngineChunkList* list = CreateListFromHandlesL( handles );
-    //
-    CleanupStack::PopAndDestroy( &handles );
-    return list;
-    }
-
-
-void CMemSpyEngineHelperChunk::DoOutputChunkInfoForObjectL( TUint aId, TDes& aLineBuffer, TType aType )
-    {
-    TFullName ownerName;
-	//
-    RArray<TAny*> handles( 128 );
-    CleanupClosePushL( handles );
-    //
-    GetChunkHandlesL( handles, aType, aId );
-    CMemSpyEngineChunkList* list = CreateListFromHandlesL( handles );
-    //
-    CleanupStack::PopAndDestroy( &handles );
-    CleanupStack::PushL( list );
-    //
-    const TInt count = list->Count();
-    for (TInt i=0; i<count; i++)
-    	{
-        const CMemSpyEngineChunkEntry& entry = list->At( i );
-        //
-        _LIT(KLine1, "Name");
-        iEngine.Sink().OutputItemAndValueL( KLine1, entry.Name() );
-        //
-        _LIT(KLine2, "Owner");
-        entry.OwnerName( ownerName );
-        iEngine.Sink().OutputItemAndValueL( KLine2, ownerName );
-        //
-        _LIT(KLine3, "Address");
-        _LIT(KLine3Format, "0x%08x - 0x%08x");
-        aLineBuffer.Format(KLine3Format, entry.BaseAddress(), entry.UpperAddress() );
-        iEngine.Sink().OutputItemAndValueL( KLine3, aLineBuffer );
-        //
-        _LIT(KLine4, "Size (max)");
-        _LIT(KLine4Format, "%d (%d)");
-        aLineBuffer.Format(KLine4Format, entry.Size(), entry.MaxSize());
-        iEngine.Sink().OutputItemAndValueL( KLine4, aLineBuffer );
-        //
-        if  ( i < count - 1 )
-            {
-            iEngine.Sink().OutputBlankLineL();
-    		}
-        }
-    //
-    CleanupStack::PopAndDestroy( list );
-    }
-
-
-void CMemSpyEngineHelperChunk::GetChunkHandlesL( RArray<TAny*>& aHandles, TType aType, TUint aId )
-    {
-	TAny* handles[ KMemSpyEngineMaxChunkCount ];
-	TInt count = KMemSpyEngineMaxChunkCount;
-
-    TInt r = 0;
-    //
-    switch( aType )
-        {
-    case EThread:
-        r = iEngine.Driver().GetChunkHandlesForThread( aId, handles, count );
-        break;
-    case EProcess:
-        r = iEngine.Driver().GetChunkHandlesForProcess( aId, handles, count );
-        break;
-    default:
-    case EAll:
-        r = iEngine.Driver().GetChunkHandles( handles, count );
-        break;
-        }
-    //
-    if  ( r == KErrNone )
-    	{
-        count = Min( count, KMemSpyEngineMaxChunkCount );
-        for( TInt index = 0; index < count; index++ )
-            {
-            TAny* handle = handles[ index ];
-
-            if  ( aHandles.Find( handle ) == KErrNotFound )
-                {
-                aHandles.AppendL( handle );
-                }
-            }
-        }
-    }
-
-
-CMemSpyEngineChunkList* CMemSpyEngineHelperChunk::CreateListFromHandlesL( const RArray<TAny*>& aHandles )
-    {
-    CMemSpyEngineChunkList* list = CMemSpyEngineChunkList::NewLC( iEngine );
-    //
-    TMemSpyDriverChunkInfo info;
-    const TInt count = aHandles.Count();
-    //
-    for( TInt i=0; i<count; i++ )
-        {
-        TAny* handle = aHandles[ i ];
-        //
-    	const TInt error = iEngine.Driver().GetChunkInfo( handle, info );
-        if  ( error == KErrNone )
-            {
-            CMemSpyEngineChunkEntry* entry = CMemSpyEngineChunkEntry::NewLC( iEngine, info );
-            list->AddItemL( entry );
-            CleanupStack::Pop( entry );
-            }
-        }
-    //
-    list->SortBySizeL();
-    //
-    CleanupStack::Pop( list );
-    return list;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyEngineChunkList::CMemSpyEngineChunkList( CMemSpyEngine& aEngine )
-:   iEngine( aEngine )
-    {
-    }
-
-
-EXPORT_C CMemSpyEngineChunkList::~CMemSpyEngineChunkList()
-    {
-    iItems.ResetAndDestroy();
-    iItems.Close();
-    }
-
-
-void CMemSpyEngineChunkList::ConstructL()
-    {
-    }
-
-
-CMemSpyEngineChunkList* CMemSpyEngineChunkList::NewLC( CMemSpyEngine& aEngine )
-    {
-    CMemSpyEngineChunkList* self = new(ELeave) CMemSpyEngineChunkList( aEngine );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-
-EXPORT_C TInt CMemSpyEngineChunkList::Count() const
-    {
-    return iItems.Count();
-    }
-
-
-EXPORT_C CMemSpyEngineChunkEntry& CMemSpyEngineChunkList::At( TInt aIndex )
-    {
-    return *iItems[ aIndex ];
-    }
-
-
-EXPORT_C const CMemSpyEngineChunkEntry& CMemSpyEngineChunkList::At( TInt aIndex ) const
-    {
-    return *iItems[ aIndex ];
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkList::SortByNameL()
-    {
-    TLinearOrder< CMemSpyEngineChunkEntry > comparer( CompareByName );
-    iItems.Sort( comparer );
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkList::SortBySizeL()
-    {
-    TLinearOrder< CMemSpyEngineChunkEntry > comparer( CompareBySize );
-    iItems.Sort( comparer );
-    }
-
-
-EXPORT_C TInt CMemSpyEngineChunkList::ItemIndex( const CMemSpyEngineChunkEntry& aEntry ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineChunkEntry* item = iItems[ i ];
-        //
-        if  ( item == &aEntry )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkList::OutputDataColumnsL( CMemSpyEngine& aEngine )
-    {
-    HBufC* columns = HBufC::NewLC( 1024 );
-    TPtr pColumns( columns->Des() );
-
-    //
-    _LIT(KCol1, "Name");
-    pColumns.Append( KCol1 );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    //
-    _LIT(KCol2, "Owning Process");
-    pColumns.Append( KCol2 );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    //
-    _LIT(KCol3, "Size");
-    pColumns.Append( KCol3 );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    //
-    _LIT(KCol4, "Max. Size");
-    pColumns.Append( KCol4 );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    //
-    _LIT(KCol5, "Address");
-    pColumns.Append( KCol5 );
-
-    //
-    aEngine.Sink().OutputLineL( pColumns );
-    CleanupStack::PopAndDestroy( columns );
-    }
-
-
-EXPORT_C TBool CMemSpyEngineChunkList::EntryExists( TAny* aHandle ) const
-    {
-    TBool ret = EFalse;
-    //
-    const TInt count = Count();
-    for( TInt i=0; i<count && !ret; i++ )
-        {
-        const CMemSpyEngineChunkEntry* item = iItems[ i ];
-        ret = ( item->Handle() == aHandle );
-        }
-    //
-    return ret;
-    }
-
-
-void CMemSpyEngineChunkList::AddItemL( CMemSpyEngineChunkEntry* aItem )
-    {
-    iItems.AppendL( aItem );
-    }
-
-
-void CMemSpyEngineChunkList::Remove( TInt aIndex )
-    {
-    CMemSpyEngineChunkEntry* item = iItems[ aIndex ];
-    delete item;
-    iItems.Remove( aIndex );
-    }
-
-
-void CMemSpyEngineChunkList::RemoveByHandle( TAny* aChunkHandle )
-    {
-    const TInt index = ItemIndexByChunkHandle( aChunkHandle );
-    if  ( index >= 0 )
-        {
-        Remove( index );
-        }
-    }
-
-
-TInt CMemSpyEngineChunkList::ItemIndexByProcessId( TUint aPid ) const
-    {
-    const TInt ret = ItemIndexByProcessId( aPid, 0 );
-    return ret;
-    }
-
-
-TInt CMemSpyEngineChunkList::ItemIndexByProcessId( TUint aPid, TInt aStartIndex ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = Count();
-    for( TInt i=aStartIndex; i<count; i++ )
-        {
-        const CMemSpyEngineChunkEntry* item = iItems[ i ];
-        //
-        if  ( item->OwnerId() == aPid )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-TInt CMemSpyEngineChunkList::ItemIndexByProcessId( TUint aPid, TMemSpyDriverChunkType aType ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineChunkEntry* item = iItems[ i ];
-        //
-        if  ( item->OwnerId() == aPid && item->Info().iType == aType )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-TInt CMemSpyEngineChunkList::ItemIndexByChunkHandle( TAny* aHandle ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineChunkEntry* item = iItems[ i ];
-        //
-        if  ( item->Handle() == aHandle )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-EXPORT_C TInt CMemSpyEngineChunkList::MdcaCount() const
-    {
-    return Count();
-    }
-
-
-EXPORT_C TPtrC CMemSpyEngineChunkList::MdcaPoint( TInt aIndex ) const
-    {
-    const CMemSpyEngineChunkEntry& item = At( aIndex );
-    return TPtrC( item.Caption() );
-    }
-
-
-TInt CMemSpyEngineChunkList::CompareByName( const CMemSpyEngineChunkEntry& aLeft, const CMemSpyEngineChunkEntry& aRight )
-    {
-    const TInt ret = aLeft.Name().CompareF( aRight.Name() );
-    return ret;
-    }
-
-
-TInt CMemSpyEngineChunkList::CompareBySize( const CMemSpyEngineChunkEntry& aLeft, const CMemSpyEngineChunkEntry& aRight )
-    {
-    TInt ret = -1;
-    //
-    if  ( aLeft.Size() < aRight.Size() )
-        {
-        ret = 1;
-        }
-    else if ( aLeft.Size() == aRight.Size() )
-        {
-        ret = 0;
-        }
-    //
-    return ret;
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CMemSpyEngineChunkEntry::CMemSpyEngineChunkEntry( CMemSpyEngine& aEngine )
-:   iEngine( aEngine )
-    {
-    }
-
-
-CMemSpyEngineChunkEntry::~CMemSpyEngineChunkEntry()
-    {
-    delete iCaption;
-    delete iInfo;
-    delete iList;
-    }
-
-
-void CMemSpyEngineChunkEntry::ConstructL( const TMemSpyDriverChunkInfo& aInfo )
-    {
-    // Copy info
-    iInfo = new(ELeave) TMemSpyDriverChunkInfo();
-    *iInfo = aInfo;
-
-    // Make caption
-    TBuf<KMaxFullName+128> item;
-    _LIT(KCaptionFormat, "\t%S\t\t%d");
-    item.Format( KCaptionFormat, &Name(), Size() );
-    iCaption = item.AllocL();
-
-    // Make other items
-    iList = CMemSpyEngineOutputList::NewL();
-
-    _LIT( KEntry0, "Name");
-    iList->AddItemL( KEntry0, Name() );
-
-    _LIT( KEntryType, "Type" );
-    switch( aInfo.iType )
-        {
-    default:
-    case EMemSpyDriverChunkTypeUnknown:
-        iList->AddItemL( KEntryType, _L("Unknown") );
-        break;
-    case EMemSpyDriverChunkTypeHeap:
-        iList->AddItemL( KEntryType, _L("Heap") );
-        break;
-    case EMemSpyDriverChunkTypeHeapKernel:
-        iList->AddItemL( KEntryType, _L("Kernel Heap") );
-        break;
-    case EMemSpyDriverChunkTypeStackAndProcessGlobalData:
-        iList->AddItemL( KEntryType, _L("Stack and Process Global Data") );
-        break;
-    case EMemSpyDriverChunkTypeStackKernel:
-        iList->AddItemL( KEntryType, _L("Kernel Stack") );
-        break;
-    case EMemSpyDriverChunkTypeGlobalData:
-        iList->AddItemL( KEntryType, _L("Global Data") );
-        break;
-    case EMemSpyDriverChunkTypeCode:
-        iList->AddItemL( KEntryType, _L("Code") );
-        break;
-    case EMemSpyDriverChunkTypeCodeGlobal:
-        iList->AddItemL( KEntryType, _L("Global Code") );
-        break;
-    case EMemSpyDriverChunkTypeCodeSelfModifiable:
-        iList->AddItemL( KEntryType, _L("Self Modifiable Code") );
-        break;
-    case EMemSpyDriverChunkTypeLocal:
-        iList->AddItemL( KEntryType, _L("Local") );
-        break;
-    case EMemSpyDriverChunkTypeGlobal:
-        iList->AddItemL( KEntryType, _L("Global") );
-        break;
-    case EMemSpyDriverChunkTypeRamDrive:
-        iList->AddItemL( KEntryType, _L("RAM Drive") );
-        break;
-        }
-
-    _LIT( KEntry1, "Owning Process");
-    OwnerName( item );
-    iList->AddItemL( KEntry1, item );
-
-    _LIT( KEntry2, "Address" );
-    _LIT( KEntry2Format, "0x%08x - 0x%08x" );
-    item.Format( KEntry2Format, BaseAddress(), UpperAddress() );
-    iList->AddItemL( KEntry2, item );
-
-    _LIT( KEntry3, "Size");
-    iList->AddItemL( KEntry3, Size() );
-
-    _LIT( KEntry4, "Max. Size");
-    iList->AddItemL( KEntry4, MaxSize() );
-
-    _LIT( KEntryAttributeFormat, "Attribute %d");
-    TInt attribNum = 0;
-    //
-    if  ( aInfo.iAttributes & ENormal )
-        {
-        item.Format( KEntryAttributeFormat, ++attribNum );
-        iList->AddItemL( item, _L("Normal") );
-        }
-    if  ( aInfo.iAttributes & EDoubleEnded )
-        {
-        item.Format( KEntryAttributeFormat, ++attribNum );
-        iList->AddItemL( item, _L("Double Ended") );
-        }
-    if  ( aInfo.iAttributes & EDisconnected )
-        {
-        item.Format( KEntryAttributeFormat, ++attribNum );
-        iList->AddItemL( item, _L("Disconnected") );
-        }
-    if  ( aInfo.iAttributes & EConstructed )
-        {
-        item.Format( KEntryAttributeFormat, ++attribNum );
-        iList->AddItemL( item, _L("Constructed") );
-        }
-    if  ( aInfo.iAttributes & EMemoryNotOwned )
-        {
-        item.Format( KEntryAttributeFormat, ++attribNum );
-        iList->AddItemL( item, _L("Memory Not Owned") );
-        }
-    }
-
-
-CMemSpyEngineChunkEntry* CMemSpyEngineChunkEntry::NewLC( CMemSpyEngine& aEngine, const TMemSpyDriverChunkInfo& aInfo )
-    {
-    CMemSpyEngineChunkEntry* self = new(ELeave) CMemSpyEngineChunkEntry( aEngine );
-    CleanupStack::PushL( self );
-    self->ConstructL( aInfo );
-    return self;
-    }
-
-
-const TDesC& CMemSpyEngineChunkEntry::Name() const
-    {
-    return iInfo->iName;
-    }
-
-
-TAny* CMemSpyEngineChunkEntry::Handle() const 
-    {
-    return iInfo->iHandle;
-    }
-
-
-TInt CMemSpyEngineChunkEntry::Size() const
-    {
-    return iInfo->iSize;
-    }
-
-
-TInt CMemSpyEngineChunkEntry::MaxSize() const
-    {
-    return iInfo->iMaxSize;
-    }
-
-
-TAny* CMemSpyEngineChunkEntry::BaseAddress() const
-    { 
-    return iInfo->iBaseAddress;
-    }
-
-
-TAny* CMemSpyEngineChunkEntry::UpperAddress() const
-    {
-    return (TAny*) (TUint(BaseAddress()) + TUint(Size()));
-    }
-
-
-TUint CMemSpyEngineChunkEntry::OwnerId() const
-    {
-    return iInfo->iOwnerId;
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkEntry::OwnerName( TDes& aDes ) const
-    {
-    aDes.Zero();
-    AppendOwnerName( aDes );
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkEntry::AppendOwnerName( TDes& aDes ) const
-    {
-    RProcess owner;
-    const TInt error = owner.Open( (TProcessId) OwnerId() );
-    if  ( error == KErrNone )
-        {
-        aDes.Append( owner.FullName() );
-        owner.Close();
-        }
-    }
-
-
-EXPORT_C void CMemSpyEngineChunkEntry::OutputDataL( CMemSpyEngineHelperChunk& aHelper ) const
-    {
-    HBufC* columns = HBufC::NewLC( 1024 );
-    TPtr pColumns( columns->Des() );
-
-    // Name
-    pColumns.Copy( Name() );
-    MemSpyEngineUtils::TextAfterDoubleColon( pColumns );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    // Owning Process
-    AppendOwnerName( pColumns );
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    // Size
-    pColumns.AppendNum( Size(), EDecimal ); 
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    // Max. Size
-    pColumns.AppendNum( MaxSize(), EDecimal ); 
-    pColumns.Append( KMemSpyEngineChunkListOutputComma );
-
-    // Address
-    _LIT( KAddressFormat, "0x%08x - 0x%08x");
-    pColumns.AppendFormat( KAddressFormat, BaseAddress(), UpperAddress() );
-
-    //
-    aHelper.Engine().Sink().OutputLineL( pColumns );
-    CleanupStack::PopAndDestroy( columns );
-    }
-
-
-EXPORT_C TInt CMemSpyEngineChunkEntry::MdcaCount() const
-    {
-    return iList->MdcaCount();
-    }
-
-
-EXPORT_C TPtrC CMemSpyEngineChunkEntry::MdcaPoint( TInt aIndex ) const
-    {
-    return iList->MdcaPoint( aIndex );
-    }
-
-
-TMemSpyDriverChunkInfo& CMemSpyEngineChunkEntry::Info()
-    {
-    return *iInfo;
-    }
-
-
-const TMemSpyDriverChunkInfo& CMemSpyEngineChunkEntry::Info() const
-    {
-    return *iInfo;
-    }
-
-