diff -r 000000000000 -r c53acadfccc6 clfwrapper/CommonInc/MGDebugPrint.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clfwrapper/CommonInc/MGDebugPrint.h Mon Jan 18 20:34:07 2010 +0200 @@ -0,0 +1,150 @@ +/* +* Copyright (c) 2002 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 macros +* +*/ + + +#ifndef __MGDEBUGPRINT_H__ +#define __MGDEBUGPRINT_H__ + +#include "harvesterlog.h" + +#ifdef _DEBUG +#define MG_ENABLE_DEBUG_PRINT +#endif + +// Debug logging is enabled, you may enable debug printing in release builds also +#ifdef MG_ENABLE_DEBUG_PRINT + + // warn if this is a release build!! + #ifndef __WINSCW__ + #ifndef _DEBUG + #if defined(__VC32__) + #pragma message( "Warning: MG debug printing is on in release build!" ) // CSI: 68 # 68:use of #pragma message + #else // __GCC32__ + #warning "MG debug printing is on in release build!" + #endif // __VC32__ + #endif + #endif // __WINSCW__ + +// no include files if no debug printing --> faster compile time +// INCLUDES +#include +#include + + /** + * Helper macro for defining debug strings with just the debug text. + */ + #define MG_DEBUG_STRING(name,s) _LIT(name,s) + + /** + * Output to debugger output + */ + #define MG_DEBUG_PRINT RDebug::Print + +#else // MG_ENABLE_DEBUG_PRINT + + /** + * Dummy struct for checking that all MG_DEBUG_PRINT's define string + * literals using space-saving MG_DEBUG_STRING. + */ + struct TMGEmptyDebugString { }; // CSI: 80 # 80:use of struct + + /** + * Macro for defining debug-only literal strings (empty release version) + */ + #define MG_DEBUG_STRING(name, s) const TMGEmptyDebugString name + + /** + * Output to debugger output (empty) + */ + #define MG_DEBUG_PRINT MG_EmptyPrint + + /// Empty debug print function for release builds. + inline void MG_EmptyPrint(TMGEmptyDebugString) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3,T4) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3,T4,T5) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3,T4,T5,T6) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3,T4,T5,T6,T7) + { + } + + /// Empty debug print function for release builds. + template + inline void MG_EmptyPrint(TMGEmptyDebugString,T1,T2,T3,T4,T5,T6,T7,T8) + { + } + + +#endif // MG_ENABLE_DEBUG_PRINT + +/** + * Short variant for easier basic usage. + */ +#define MG_DEBUG1( name, s ) MG_DEBUG_STRING( name, s ); MG_DEBUG_PRINT( name ); + +#ifdef MG_ENABLE_DEBUG_PRINT +#define MG_DEBUG2( name, s, i ) MG_DEBUG_STRING( name, s ); MG_DEBUG_PRINT( name, i ); +#define MG_DEBUG3( name, s, i, j ) MG_DEBUG_STRING( name, s ); MG_DEBUG_PRINT( name, i, j ); +#define MG_DEBUG4( name, s, i, j, k ) MG_DEBUG_STRING( name, s ); MG_DEBUG_PRINT( name, i, j, k ); +#define MG_DEBUG5( name, s, i, j, k, l ) MG_DEBUG_STRING( name, s ); MG_DEBUG_PRINT( name, i, j, k, l ); +#else +// If debug printing is not enabled, strip other parameters than the string +// away to prevent unwanted function calls in release build. +#define MG_DEBUG2( name, s, i ) MG_DEBUG1( name, s ) +#define MG_DEBUG3( name, s, i, j ) MG_DEBUG1( name, s ) +#define MG_DEBUG4( name, s, i, j, k ) MG_DEBUG1( name, s ) +#define MG_DEBUG5( name, s, i, j, k, l ) MG_DEBUG1( name, s ) +#endif + +#endif // __MGDEBUGPRINT_H__