diff -r 3406c99bc375 -r 07b41fa8d1dd hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/DebugPrint.h --- a/hti/HtiServicePlugins/HtiIpProxyServicePlugin/IPProxyEngine/Src/DebugPrint.h Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +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: Debugging support -* -*/ - - -/* -Idea: - - Logging tool for developers, uniform style to write debug log to RDebug or to a File - -Usage: - - Configuring: - - add to .mmp file - // define logging on and logging into file, file must be defined in code - // the macros can also be in a header file - // and inside ifdef if printing wanted in debug builds - MACRO ENABLE_DEBUG_PRINT - MACRO DEBUG_OUTPUT_TO_FILE - // this library is needed for the file logging, remove if/when not using - LIBRARY flogger.lib - - Alternatively you may enable debug print in a header with: - #ifdef _DEBUG // comment this if you want logging in release build - #define ENABLE_DEBUG_PRINT - #define DEBUG_OUTPUT_TO_FILE - #endif // _DEBUG - - - make a directory: Epoc32\Wins\c\logs\hti\ - - Enabling: - - in some source header - // log file name if using file logging - #define DEBUG_FILENAME "Example.log" - // include the printing macros - #include "DebugPrint.h" - - Printing: - - // normal string - DEBUG_PRINT( DEBUG_STRING( "Debug Print" ) ); - // string with variables - DEBUG_PRINT( DEBUG_LINE( "Debug Print %d" ), 100 ); - TInt index( 100 ); - DEBUG_PRINT( DEBUG_STRING( "Debug Print %d" ), index ); - - // DEBUG_LINE automatically adds filename and linenumber to output - _LIT( KDebugPrintExample, "Example" ); - DEBUG_PRINT( DEBUG_LINE( "Debug Print %S" ), &KDebugPrintExample ); - -Known issues: - - - If you use macros from .mmp file remember to abld makefile to change flags from project - - Using lots of DEBUG_LINE macros slows down compiling due to excessive preprocessing - -Ideas & further development: - - - make rdebug and file logging work simultaneously, currently not possible - - enable optional run-time configuring of debug info writing - -*/ - -#ifndef __DEBUGPRINT_H__ -#define __DEBUGPRINT_H__ - -// Debug logging is enabled, you may enable debug printing in release builds also -#ifdef ENABLE_DEBUG_PRINT - - // warn if this is a release build!! - #ifndef _DEBUG - #if defined(__VC32__) - #pragma message( "Warning: debug printing is on in release build!" ) - #else // __GCC32__ - #warning "debug printing is on in release build!" - #endif // __VC32__ - #endif - -// no include files if no debug printing --> faster compile time -// INCLUDES -#include -#include -#include - - /** - * Depending if the build is UNICODE or not, define the - * helper macros that display the source code filename and - * linenumber as a part of the debug message. - */ - #ifdef _UNICODE - #define STRINGIZE(l) L#l - #define TO_NUMBER(l) STRINGIZE(l) - #define TOKEN_PASTING(s) L##s - #define TO_UNICODE(s) TOKEN_PASTING(s) - #define DEBUG_STR(m) TO_UNICODE(__FILE__) L"(" TO_NUMBER(__LINE__) L") : " L##m - #else - #define STRINGIZE(l) #l - #define TO_NUMBER(l) STRINGIZE(l) - #define DEBUG_STR __FILE__ "(" TO_NUMBER(__LINE__) ") : " - #endif // _UNICODE - - /** - * Helper macro for defining debug strings with just the debug text. - */ - #define DEBUG_STRING(s) _L(s) - - /** - * Helper macro for defining debug string with filename and linenumber. - */ - #define DEBUG_LINE(s) TPtrC((const TText *) DEBUG_STR(s)) - - #ifdef DEBUG_OUTPUT_TO_FILE - - /** - * Method to handle file writing - */ - inline void DebugWriteFormat(TRefByValue aFmt,...) - { - _LIT(KDir, "hti"); - #ifdef DEBUG_FILENAME - const static TLitC KName={sizeof(DEBUG_FILENAME)-1, TO_UNICODE( DEBUG_FILENAME ) }; - #else - _LIT(KName, "DebugOutput.log" ); - #endif // DEBUG_FILENAME - - // take the ellipsis parameters - VA_LIST args; - VA_START(args,aFmt); - RFileLogger::WriteFormat( KDir, KName, EFileLoggingModeAppend, aFmt, args ); - VA_END(args); - } - - /** - * Output to log file - */ - #define DEBUG_PRINT DebugWriteFormat - - #else - /** - * Output to debugger output - */ - #define DEBUG_PRINT RDebug::Print - #endif - -#else // ENABLE_DEBUG_PRINT - - /** - * Dummy struct for checking that all DEBUG_PRINT's define string - * literals using space-saving DEBUG_STRING. - */ - struct TEmptyDebugString { }; - - /** - * Macro for defining debug-only literal strings (empty release version) - */ - #define DEBUG_STRING(s) TEmptyDebugString() - - /** - * Macro for defining debug-only literal strings (empty release version) - */ - #define DEBUG_LINE(s) TEmptyDebugString() - - /// Empty debug print function for release builds. - inline void DEBUG_PRINT(TEmptyDebugString) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3,T4) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3,T4,T5) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3,T4,T5,T6) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3,T4,T5,T6,T7) - { - } - - /// Empty debug print function for release builds. - template - inline void DEBUG_PRINT(TEmptyDebugString,T1,T2,T3,T4,T5,T6,T7,T8) - { - } - -#endif // ENABLE_DEBUG_PRINT - -#endif // __DEBUGPRINT_H__