diff -r 000000000000 -r 2014ca87e772 imagehandlinglib/Src/IHLDebugPrint.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagehandlinglib/Src/IHLDebugPrint.h Tue Jan 26 15:18:05 2010 +0200 @@ -0,0 +1,150 @@ +/* +* Copyright (c) 2006 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: IHL debug macros +* +*/ + + +#ifndef IHLDEBUGPRINT_H +#define IHLDEBUGPRINT_H + +// Debug logging is enabled, you may enable debug printing in release builds also +#ifdef IHL_ENABLE_DEBUG_PRINT + + // warn if this is a release build!! + #ifndef __WINSCW__ + #ifndef _DEBUG + #if defined(__VC32__) + #pragma message( "Warning: IHL debug printing is on in release build!" ) // CSI: 68 # + #else // __GCC32__ + #warning "IHL 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 IHL_DEBUG_STRING(name,s) _LIT(name,s) + + /** + * Output to debugger output + */ + #define IHL_DEBUG_PRINT RDebug::Print + +#else // IHL_ENABLE_DEBUG_PRINT + + /** + * Dummy struct for checking that all IHL_DEBUG_PRINT's define string + * literals using space-saving IHL_DEBUG_STRING. + */ + struct TIHLEmptyDebugString { }; // CSI: 80 # + + /** + * Macro for defining debug-only literal strings (empty release version) + */ + #define IHL_DEBUG_STRING(name, s) const TIHLEmptyDebugString name + + /** + * Output to debugger output (empty) + */ + #define IHL_DEBUG_PRINT IHL_EmptyPrint + + namespace { + + /// Empty debug print function for release builds. + inline void IHL_EmptyPrint(TIHLEmptyDebugString) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3,T4) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3,T4,T5) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3,T4,T5,T6) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3,T4,T5,T6,T7) + { + } + + /// Empty debug print function for release builds. + template + inline void IHL_EmptyPrint(TIHLEmptyDebugString,T1,T2,T3,T4,T5,T6,T7,T8) + { + } + + } // unnamed namespace + + +#endif // IHL_ENABLE_DEBUG_PRINT + +/** + * Short variant for easier basic usage. + */ +#define IHL_DEBUG1( name, s ) IHL_DEBUG_STRING( name, s ); IHL_DEBUG_PRINT( name ); + +#ifdef IHL_ENABLE_DEBUG_PRINT +#define IHL_DEBUG( s ) RDebug::Print( _L( s ) ) +#define IHL_DEBUG2( name, s, i ) IHL_DEBUG_STRING( name, s ); IHL_DEBUG_PRINT( name, i ); +#define IHL_DEBUG3( name, s, i, j ) IHL_DEBUG_STRING( name, s ); IHL_DEBUG_PRINT( name, i, j ); +#define IHL_DEBUG4( name, s, i, j, k ) IHL_DEBUG_STRING( name, s ); IHL_DEBUG_PRINT( name, i, j, k ); +#define IHL_DEBUG5( name, s, i, j, k, l ) IHL_DEBUG_STRING( name, s ); IHL_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 IHL_DEBUG( s ) +#define IHL_DEBUG2( name, s, i ) IHL_DEBUG1( name, s ) +#define IHL_DEBUG3( name, s, i, j ) IHL_DEBUG1( name, s ) +#define IHL_DEBUG4( name, s, i, j, k ) IHL_DEBUG1( name, s ) +#define IHL_DEBUG5( name, s, i, j, k, l ) IHL_DEBUG1( name, s ) +#endif + +#endif // __IHLDEBUGPRINT_H__