diff -r 0ff24a8f6ca2 -r 98307c651589 memspy/Engine/Source/Sink/MemSpyEngineOutputList.cpp --- a/memspy/Engine/Source/Sink/MemSpyEngineOutputList.cpp Fri Aug 27 11:37:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,433 +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 - -// System includes -#include - -// User includes -#include -#include -#include "MemSpyEngineOutputListItem.h" - -// Constants -_LIT( KMemSpyOutputListPseudoBlankItem, " " ); - - -CMemSpyEngineOutputList::CMemSpyEngineOutputList( CMemSpyEngineOutputSink* aSink ) -: iSink( aSink ), iFormatBufferPtr( NULL, 0 ) - { - } - - -CMemSpyEngineOutputList::~CMemSpyEngineOutputList() - { - delete iFormatBuffer; - iItems.ResetAndDestroy(); - iItems.Close(); - } - - -void CMemSpyEngineOutputList::ConstructL() - { - iFormatBuffer = HBufC::NewL( 1024 ); - iFormatBufferPtr.Set( iFormatBuffer->Des() ); - } - - -CMemSpyEngineOutputList* CMemSpyEngineOutputList::NewL() - { - CMemSpyEngineOutputList* self = new(ELeave) CMemSpyEngineOutputList(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - - -CMemSpyEngineOutputList* CMemSpyEngineOutputList::NewLC( CMemSpyEngineOutputSink& aSink ) - { - CMemSpyEngineOutputList* self = new(ELeave) CMemSpyEngineOutputList( &aSink ); - CleanupStack::PushL( self ); - - // No need to call ConstructL - it uses the sink's format buffer - return self; - } - - -TInt CMemSpyEngineOutputList::MdcaCount() const - { - return iItems.Count(); - } - - -TPtrC CMemSpyEngineOutputList::MdcaPoint( TInt aPos ) const - { - CMemSpyEngineOutputListItem* item = iItems[ aPos ]; - return TPtrC( item->Combined() ); - } - - -void CMemSpyEngineOutputList::PrintL() - { - ASSERT( iSink != NULL ); - PrintL( *iSink ); - } - - -void CMemSpyEngineOutputList::PrintL( CMemSpyEngineOutputSink& aSink ) - { - const TInt count = iItems.Count(); - if ( count > 0 ) - { - // First pass to get max lengths - TInt maxLengthCaption = 0; - TInt maxLengthValue = 0; - - for( TInt j=0; jValue().Length()) - { - maxLengthCaption = Max( maxLengthCaption, item->Caption().Length() ); - maxLengthValue = Max( maxLengthValue, item->Value().Length() ); - } - else - { - // If something doesn't have a value (ie it's a section header, represented as just a caption) then the caption - // shouldn't be factored into the maxcaptionlength. But consider it in maxlengthValue to make sure we actually - // make the overall buffers big enough - maxLengthValue = Max( maxLengthValue, item->Caption().Length() ); - } - } - - // Second pass - real this time - to print the values - HBufC* line = HBufC::NewLC( ( maxLengthCaption + maxLengthValue ) + 20 ); - TPtr pLine( line->Des() ); - // - for( TInt i=0; iCaption() ); - - // Create value item & replace any further tabs - HBufC* value = MemSpyEngineUtils::CleanupTextLC( item->Value() ); - - // Now format the final line, with padding. - if (value->Length()) - { - pLine.Justify( *caption, maxLengthCaption + 3, ELeft, TChar(' ') ); - } - else - { - // items without value (ie just captions, ie section headers) aren't constrained by the maxLengthCaption restriction - pLine.Copy(*caption); - } - pLine.Append( *value ); - CleanupStack::PopAndDestroy( 2, caption ); - - // Sink output - aSink.OutputLineL( pLine ); - } - // - CleanupStack::PopAndDestroy( line ); - } - } - - -CMemSpyEngineOutputListItem& CMemSpyEngineOutputList::Item( TInt aPos ) - { - CMemSpyEngineOutputListItem* ret = iItems[ aPos ]; - return *ret; - } - - -const CMemSpyEngineOutputListItem& CMemSpyEngineOutputList::Item( TInt aPos ) const - { - const CMemSpyEngineOutputListItem* ret = iItems[ aPos ]; - return *ret; - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption ) - { - AddItemL( aCaption, KNullDesC ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, const TDesC& aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, TInt aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewDecimalLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, TUint aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewDecimalLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, const TInt64& aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewLongLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, TAny* aValue ) - { - AddItemHexL( aCaption, (TUint) aValue ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, TUint* aValue ) - { - AddItemHexL( aCaption, (TUint) aValue ); - } - - -void CMemSpyEngineOutputList::AddItemL( const TDesC& aCaption, TUint8* aValue ) - { - AddItemHexL( aCaption, (TUint) aValue ); - } - - -void CMemSpyEngineOutputList::AddItemFormatL( TRefByValue aFormat, ... ) - { - VA_LIST list; - VA_START(list,aFormat); - - TPtr formatBuffer( FormatBuffer() ); - formatBuffer.Zero(); - formatBuffer.FormatList( aFormat, list ); - // - AddItemL( formatBuffer, KNullDesC ); - } - - -void CMemSpyEngineOutputList::AddItemFormatL( const TDesC& aCaption, TRefByValue aValueFormat, ... ) - { - VA_LIST list; - VA_START(list,aValueFormat); - - TPtr formatBuffer( FormatBuffer() ); - formatBuffer.Zero(); - formatBuffer.FormatList( aValueFormat, list ); - // - AddItemL( aCaption, formatBuffer ); - } - - -void CMemSpyEngineOutputList::AddItemFormatUCL( TRefByValue aFormat, ... ) - { - VA_LIST list; - VA_START(list,aFormat); - - TPtr formatBuffer( FormatBuffer() ); - formatBuffer.Zero(); - formatBuffer.FormatList( aFormat, list ); - // - AddItemUCL( formatBuffer, KNullDesC ); - } - - -void CMemSpyEngineOutputList::AddItemUCL( const TDesC& aCaption, const TDesC& aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - // - item->iCaption->Des().UpperCase(); - item->UpdateCombinedL(); - } - - -void CMemSpyEngineOutputList::AddItemFormatUCL( const TDesC& aCaption, TRefByValue aValueFormat, ... ) - { - VA_LIST list; - VA_START(list,aValueFormat); - - TPtr formatBuffer( FormatBuffer() ); - formatBuffer.Zero(); - formatBuffer.FormatList( aValueFormat, list ); - // - AddItemUCL( aCaption, formatBuffer ); - } - - -void CMemSpyEngineOutputList::AddItemHexL( const TDesC& aCaption, TUint aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewHexLC( aCaption, aValue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemYesNoL( const TDesC& aCaption, TBool aYes ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewYesNoLC( aCaption, aYes ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemTrueFalseL( const TDesC& aCaption, TBool aTrue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewTrueFalseLC( aCaption, aTrue ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemOnOffL( const TDesC& aCaption, TBool aOn ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewOnOffLC( aCaption, aOn ); - iItems.AppendL( item ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::AddItemPercentageL( const TDesC& aCaption, TInt aOneHundredPercentValue, TInt aValue ) - { - const TMemSpyPercentText val( MemSpyEngineUtils::FormatPercentage( TReal( aOneHundredPercentValue ), TReal( aValue ) ) ); - AddItemL( aCaption, val ); - } - - -void CMemSpyEngineOutputList::AddBlankItemL( TInt aRepetitions ) - { - const TInt count = Count(); - InsertBlankItemL( count, aRepetitions ); - } - - -void CMemSpyEngineOutputList::AddUnderlineForPreviousItemL( TChar aUnderlineCharacter, TInt aBlankItemCount ) - { - const TInt count = iItems.Count(); - if ( count > 0 ) - { - InsertUnderlineForItemAtL( count - 1, aUnderlineCharacter, aBlankItemCount ); - } - } - - -void CMemSpyEngineOutputList::InsertItemL( TInt aPos, const TDesC& aCaption ) - { - InsertItemL( aPos, aCaption, KNullDesC ); - } - - -void CMemSpyEngineOutputList::InsertItemL( TInt aPos, const TDesC& aCaption, const TDesC& aValue ) - { - CMemSpyEngineOutputListItem* item = CMemSpyEngineOutputListItem::NewLC( aCaption, aValue ); - iItems.InsertL( item, aPos ); - CleanupStack::Pop( item ); - } - - -void CMemSpyEngineOutputList::InsertItemFormatUCL( TInt aPos, TRefByValue aValueFormat, ... ) - { - VA_LIST list; - VA_START(list,aValueFormat); - - TPtr formatBuffer( FormatBuffer() ); - formatBuffer.Zero(); - formatBuffer.FormatList( aValueFormat, list ); - // - InsertItemL( aPos, formatBuffer, KNullDesC ); - } - - -void CMemSpyEngineOutputList::InsertBlankItemL( TInt aPos, TInt aRepetitions ) - { - while( aRepetitions-- > 0 ) - { - InsertItemL( aPos, KMemSpyOutputListPseudoBlankItem, KMemSpyOutputListPseudoBlankItem ); - } - } - - -void CMemSpyEngineOutputList::InsertUnderlineForItemAtL( TInt aPos, TChar aUnderlineCharacter, TInt aBlankItemCount ) - { - const CMemSpyEngineOutputListItem& item = Item( aPos ); - - // Clean text - HBufC* caption = MemSpyEngineUtils::CleanupTextLC( item.Caption() ); - //RDebug::Print( _L("CMemSpyEngineOutputList::AddUnderlineForPreviousItemL() - [%3d] caption: %S"), caption->Length(), caption ); - HBufC* value = MemSpyEngineUtils::CleanupTextLC( item.Value() ); - //RDebug::Print( _L("CMemSpyEngineOutputList::AddUnderlineForPreviousItemL() - [%3d] value: %S"), value->Length(), value ); - - // Make underline descriptor - TBuf<1> underline; - underline.Append( aUnderlineCharacter ); - - // Make underline items - const TInt lenCaption = caption->Length(); - if ( lenCaption > 0 ) - { - TPtr pText( caption->Des() ); - pText.Repeat( underline ); - } - - const TInt lenValue = value->Length(); - if ( lenValue > 0 ) - { - TPtr pText( value->Des() ); - pText.Repeat( underline ); - } - - // Create new item - InsertItemL( aPos + 1, *caption, *value ); - - // Clean up - CleanupStack::PopAndDestroy( 2, caption ); - - // Make blank row if needed - InsertBlankItemL( aPos + 2, aBlankItemCount ); - } - - -TPtr& CMemSpyEngineOutputList::FormatBuffer() - { - if ( iSink ) - { - return iSink->FormatBuffer(); - } - // - return iFormatBufferPtr; - } - - - - -