diff -r 000000000000 -r f72a12da539e menufw/hierarchynavigator/hnengine/inc/menudebug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/hierarchynavigator/hnengine/inc/menudebug.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2007-2008 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: debug macro definitions +* +*/ + + +#ifndef MENUDEBUG_H +#define MENUDEBUG_H + +// INCLUDES +#include +#include + +// Maximum formatted size resulting from a single DEBUG* call +#ifndef MAX_DEBUG_STRING_LENGTH +#define MAX_DEBUG_STRING_LENGTH 4096 +#endif + +#ifdef _MATRIX_MENU_TRACE_PERFORMANCE +_LIT( KPerformanceLogDir, "menu" ); +_LIT( KPerformanceLogFile, "performance.txt" ); +#endif + +#ifdef _DEBUG +#include "mymenudebug.h" + +// Load correct mymenudebug.h from module inc directory, +// define your application-specific configuration like this: +// ---------------------------------------------------------- +// Debug file - debug output is disabled if the parent dir does not exist +// _LIT(KDebugDirName, "menu"); +// _LIT(KDebugFileName, "hnengine.txt"); + +// Replace the current debug file - if not defined appends to the file +#ifndef APPEND_TO_DEBUG_FILE +#define REPLACE_DEBUG_FILE +#endif + + +/** + * @param aData + */ +static void DoOutput(TDesC8& aData); + +static void DebugStringNarrowL(const char* aFmt, ...) + { + VA_LIST args; + VA_START(args, aFmt); + + TPtrC8 fmt(reinterpret_cast(aFmt)); + HBufC8* buf = HBufC8::NewLC(MAX_DEBUG_STRING_LENGTH); + buf->Des().FormatList(fmt, args); + buf->Des().Append('\n'); + DoOutput(*buf); + CleanupStack::PopAndDestroy(buf); + + VA_END(args); + } + +static void DebugStringWideL(const char* aFmt, ...) + { + VA_LIST args; + VA_START(args, aFmt); + + TPtrC8 fmt(reinterpret_cast(aFmt)); + HBufC* fmt16 = HBufC::NewLC(fmt.Length()); + fmt16->Des().Copy(fmt); + HBufC* buf = HBufC::NewLC(MAX_DEBUG_STRING_LENGTH); + buf->Des().FormatList(*fmt16, args); + buf->Des().Append('\n'); + HBufC8* buf8 = HBufC8::NewLC(buf->Length()); + buf8->Des().Copy(*buf); + DoOutput(*buf8); + CleanupStack::PopAndDestroy(3); // fmt16, buf, buf8 + + VA_END(args); + } + +static void DebugBufferL(const TDesC8& aBuf) + { + DebugStringNarrowL("\"%S\"", &aBuf); + } + +static void DebugBufferL(const TDesC& aBuf) + { + DebugStringWideL("\"%S\"", &aBuf); + } + +static void DebugTimeL(const TTime& aTime) + { + TBuf<64> dateTimeString; + _LIT(KDateString, "%E%D%X%N%Y %1 %2 %3"); + aTime.FormatL(dateTimeString, KDateString); + DebugBufferL(dateTimeString); + _LIT(KTimeString, "%-B%:0%J%:1%T%:2%S%.%*C4%:3%+B"); + aTime.FormatL(dateTimeString, KTimeString); + DebugBufferL(dateTimeString); + } + + +static void DoOutput(TDesC8& aData) + { + RFileLogger::Write(KDebugDirName, + KDebugFileName, + EFileLoggingModeAppend, + aData); + } +#endif + +#ifdef _MATRIX_MENU_TRACE_PERFORMANCE + +static void DoOutputPerf(TDesC8& aData) + { + RFileLogger::Write(KPerformanceLogDir, + KPerformanceLogFile, + EFileLoggingModeAppend, + aData); + } + +static void DebugStringNarrowPerfL(const char* aFmt, ...) + { + VA_LIST args; + VA_START(args, aFmt); + + TPtrC8 fmt(reinterpret_cast(aFmt)); + HBufC8* buf = HBufC8::NewLC(MAX_DEBUG_STRING_LENGTH); + buf->Des().FormatList(fmt, args); + buf->Des().Append('\n'); + + TTime timestamp; + timestamp.HomeTime(); + + TBuf<64> dateTimeString; + TBuf8<64> dateTimeString8; + + _LIT(KTimeString, "%:0%J%:1%T%:2%S%.%*C4%:3"); + timestamp.FormatL(dateTimeString, KTimeString); + dateTimeString8.Copy( dateTimeString ); + buf->Des().Insert( 0, _L8(" -> ") ); + buf->Des().Insert( 0, dateTimeString8 ); + + DoOutputPerf(*buf); + CleanupStack::PopAndDestroy(buf); + + VA_END(args); + } +#endif + +// MACROS +// If you output one or more narrow descriptors by using '%S', +// use DEBUGSTRING8 +// else if you output one or more unicode descriptors by using '%S', +// use DEBUGSTRING16 +// else +// use DEBUGSTRING +// +// Narrow and unicode cannot be mixed in a single DEBUGSTRINGx call. + +#ifdef _DEBUG +#define DEBUGINIT() DebugInit() +#define DEBUGINITSUSPENDED() DebugInit(ETrue) +#define DEBUGENABLE() SetDebugEnabled(ETrue) +#define DEBUGDISABLE() SetDebugEnabled(EFalse) +#define DEBUGSUSPEND() SetDebugSuspended(ETrue) +#define DEBUGCONTINUE() SetDebugSuspended(EFalse) +#define DEBUG(x) TRAP_IGNORE( DebugStringNarrowL x ) +#define DEBUG8(x) TRAP_IGNORE( DebugStringNarrowL x ) +#define DEBUG16(x) TRAP_IGNORE( DebugStringWideL x ) +#define DEBUGBUFFER(x) TRAP_IGNORE( DebugBufferL x ) +#define DEBUGTIME(x) TRAP_IGNORE( DebugTimeL x ) +#else +#define DEBUGINIT() +#define DEBUGINITSUSPENDED() +#define DEBUGENABLE() +#define DEBUGDISABLE() +#define DEBUGSUSPEND() +#define DEBUGCONTINUE() +#define DEBUG(x) +#define DEBUG8(x) +#define DEBUG16(x) +#define DEBUGBUFFER(x) +#define DEBUGTIME(x) +#endif + +#ifdef _MATRIX_MENU_TRACE_PERFORMANCE +#define MMPERF(x) TRAP_IGNORE( DebugStringNarrowPerfL x ) +#else +#define MMPERF(x) +#endif + +#endif // MENUDEBUG_H +