diff -r ca8a1b6995f6 -r 52e343bb8f80 memspy/Driver/User/Source/RBuildQueryableHeap.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/memspy/Driver/User/Source/RBuildQueryableHeap.cpp Wed Sep 01 12:37:10 2010 +0100 @@ -0,0 +1,73 @@ +/* +* 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 "RBuildQueryableHeap.h" + +// System includes +#include +#include + + +TBool RBuildQueryableHeap::IsDebugEUser() const + { + User::__DbgSetAllocFail( FALSE, RAllocator::EFailNext, 1); + + TInt* cell = new TInt(); +#if defined(_DEBUG) && !defined( __WINS__ ) + RDebug::Printf("RBuildQueryableHeap::IsDebugEUser() - cell: 0x%08x", cell); +#endif + + const TBool debugEUser = ( cell == NULL ); +#if defined(_DEBUG) && !defined( __WINS__ ) + RDebug::Printf("RBuildQueryableHeap::IsDebugEUser() - debugEUser: %d", debugEUser); +#endif + + delete cell; + // + return debugEUser; + } + + +TInt RBuildQueryableHeap::CellHeaderSize( TMemSpyDriverCellType aType ) const + { + TInt size = 0; + // + switch( aType ) + { + case EMemSpyDriverGoodAllocatedCell: + case EMemSpyDriverBadAllocatedCellSize: + case EMemSpyDriverBadAllocatedCellAddress: + { + size = sizeof( TInt ); // Allocated UREL cells contain just a length + if ( IsDebugEUser() ) + { + size = sizeof( RHeap::SDebugCell ); + } + break; + } + case EMemSpyDriverGoodFreeCell: + case EMemSpyDriverBadFreeCellAddress: + case EMemSpyDriverBadFreeCellSize: + size = EFreeCellSize; + break; + default: + break; + } + // + return size; + } +