sipvoipprovider/inc/svplogger.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:12:36 +0200
changeset 0 a4daefaec16c
child 2 7b872347d83b
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* Copyright (c) 2006 - 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:  Provides macros for logging and debugging.
*
*/

#ifndef SVPLOGGER_H
#define SVPLOGGER_H

#ifdef _DEBUG  // enable debug macros

#ifndef COMPONENT
#define COMPONENT
_LIT( KComponent, "SVP" );
#endif // COMPONENT

#include <e32svr.h>
#include <e32cmn.h>

/*****************************************************
* Format string for adding component to prints.
* 
* Parameters passed within macros from code are
* formatted with string that came as a parameter
*****************************************************/
_LIT( KSVPPrintFormatString, "%S: %S" );

/*
 *  Prints for text without params
 */
static inline void PrintL( const TDesC& aStr )
    {
    HBufC* line = HBufC::NewLC( 256 );
    TPtr ptr( line->Des() );
    ptr.Format( KSVPPrintFormatString(), &KComponent(), &aStr );   
    RDebug::Print( line->Des() );
    CleanupStack::PopAndDestroy( line );
    }
static inline void Print( const TDesC& aStr )
    {
    TRAP_IGNORE( PrintL( aStr ) )
    }

/* 
 * Prints for text with TInt as a param
 */
static inline void PrintL( const TDesC& aStr, const TInt& aTInt )
    {
    HBufC* line1 = HBufC::NewLC( 256 );
    TPtr ptr1( line1->Des() );
    ptr1.Format( aStr, aTInt );
    
    HBufC* line2 = HBufC::NewLC( 256 );
    TPtr ptr2( line2->Des() );
    ptr2.Format( KSVPPrintFormatString(), &KComponent(), line1 );   
    RDebug::Print( line2->Des() );
    CleanupStack::PopAndDestroy( 2 );
    }
static inline void Print( const TDesC& aStr, const TInt& aTInt )
    {
    TRAP_IGNORE( PrintL( aStr, aTInt ) )
    }

/*
 * Prints for text with any pointer as a param
 */
static inline void PrintL( const TDesC& aStr, const TAny* aPtr )
    {
    HBufC* line1 = HBufC::NewLC( 256 );
    TPtr ptr1( line1->Des() );
    ptr1.Format( aStr, aPtr );
    
    HBufC* line2 = HBufC::NewLC( 256 );
    TPtr ptr2( line2->Des() );
    ptr2.Format( KSVPPrintFormatString(), &KComponent(), line1 ); 
    RDebug::Print( line2->Des() );
    CleanupStack::PopAndDestroy( 2 );
    }
static inline void Print( const TDesC& aStr, const TAny* aPtr )
    {
    TRAP_IGNORE( PrintL( aStr, aPtr ) )
    }

/* 
 * Prints for text with two TInt as a param
 */
static inline void PrintL( const TDesC& aStr,
                           const TInt& aTInt1,
                           const TInt& aTInt2 )
    {
    HBufC* line1 = HBufC::NewLC( 256 );
    TPtr ptr1( line1->Des() );
    ptr1.Format( aStr, aTInt1, aTInt2 );
        
    HBufC* line2 = HBufC::NewLC( 256 );
    TPtr ptr2( line2->Des() );
    ptr2.Format( KSVPPrintFormatString(), &KComponent(), line1 );   
    RDebug::Print( line2->Des() );
    CleanupStack::PopAndDestroy( 2 );
    }
static inline void Print( const TDesC& aStr,
                          const TInt& aTInt1,
                          const TInt& aTInt2 )
    {
    TRAP_IGNORE( PrintL( aStr, aTInt1, aTInt2 ) )
    }

/*
 * Prints for text with TInt and a string as a parameter
 */
static inline void PrintL( const TDesC& aStr1,
                           const TInt& aTInt,
                           const TDesC* aStr2 )
    {
    HBufC* line1 = HBufC::NewLC( 256 );
    TPtr ptr1( line1->Des() );
    ptr1.Format( aStr1, aTInt, aStr2 );
        
    HBufC* line2 = HBufC::NewLC( 256 );
    TPtr ptr2( line2->Des() );
    ptr2.Format( KSVPPrintFormatString(), &KComponent(), line1 );   
    RDebug::Print( line2->Des() );
    CleanupStack::PopAndDestroy( 2 );
    }
static inline void Print( const TDesC& aStr1,
                          const TInt& aTInt,
                          const TDesC* aStr2 )
    {
    TRAP_IGNORE( PrintL( aStr1, aTInt, aStr2 ) )
    }


#define SVPDEBUG1( a ) { _LIT( KStr, a ); Print( KStr() ); }
#define SVPDEBUG2( a, b ){ _LIT( KStr, a ); Print( KStr(), b ); }
#define SVPDEBUG3( a, b, c ){ _LIT( KStr, a ); Print( KStr(), b, c ); }

#else // _DEBUG

#define SVPDEBUG1( a )
#define SVPDEBUG2( a, b )
#define SVPDEBUG3( a, b, c )

#endif // _DEBUG

#endif // SVPLOGGER_H