wmdrm/inc/logfn.h
changeset 0 95b198f216e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/inc/logfn.h	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,150 @@
+/*
+* 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:  ?Description
+*
+*/
+
+
+#ifndef LOG_H
+#define LOG_H
+
+#ifdef _DEBUG
+#define _LOGGING
+#endif
+
+#ifdef _LOGGING
+
+#include <e32std.h>
+#include <f32file.h>
+#include <flogger.h>
+
+#ifndef _LOGGING_DIR
+#define _LOGGING_DIR L"wmdrm"
+#endif
+
+#ifndef _LOGGING_FILE
+#define _LOGGING_FILE L"wmdrm.txt"
+#endif
+
+const static TLitC<sizeof(_LOGGING_DIR) / 2> KLogDir =
+    {
+    sizeof(_LOGGING_DIR) / 2 - 1, _LOGGING_DIR
+    };
+const static TLitC<sizeof(_LOGGING_FILE) / 2> KLogFile =
+    {
+    sizeof(_LOGGING_FILE) / 2 - 1, _LOGGING_FILE
+    };
+
+#define LOG( des ) \
+    RFileLogger::Write( KLogDir, KLogFile, EFileLoggingModeAppend, des )
+    
+#define LOG1( AAA ) \
+    RFileLogger::Write( KLogDir, KLogFile, EFileLoggingModeAppend, _L( AAA ) )
+
+#define LOG2( FMT, BBB ) \
+    RFileLogger::WriteFormat( KLogDir, KLogFile, EFileLoggingModeAppend, _L( FMT ), BBB )
+    
+#define LOG3( FMT, BBB, CCC ) \
+    RFileLogger::WriteFormat( KLogDir, KLogFile, EFileLoggingModeAppend, _L( FMT ), BBB, CCC )
+    
+#define LOG4( FMT, BBB, CCC, DDD ) \
+    RFileLogger::WriteFormat( KLogDir, KLogFile, EFileLoggingModeAppend, _L( FMT ), BBB, CCC, DDD )
+    
+#define LOG5( FMT, BBB, CCC, DDD, EEE ) \
+    RFileLogger::WriteFormat( KLogDir, KLogFile, EFileLoggingModeAppend, _L( FMT ), BBB, CCC, DDD, EEE )
+    
+#define LOGHEX( ptr, len ) \
+    RFileLogger::HexDump( KLogDir, KLogFile, EFileLoggingModeAppend, _S(""), _S(""), ptr, len )
+    
+#define LOGFN( AAA ) TLogFn ___tmp( _L( AAA ) )
+#define LOGFNR( AAA, BBB ) TLogFn ___tmp( _L( AAA ), (TInt* ) &( BBB ) )
+
+#define CLEARLOG() {\
+    RFs fs;\
+    TBuf<sizeof( _LOGGING_DIR ) + sizeof( _LOGGING_DIR ) + 32> path;\
+    path.Copy( _L( "c:\\logs\\" ) ); path.Append( KLogDir ); path.Append( '\\' ); path.Append( KLogFile ); \
+    fs.Connect();\
+    fs.Delete( path );\
+    fs.Close();}
+
+/**
+ *  Class for logging funtion calls and exits
+ *
+ *  The constructor logs the entry of the function, the destructor the exit
+ *
+ *  @since S60 3.2
+ */
+NONSHARABLE_CLASS( TLogFn )
+    {
+public:
+    TLogFn( const TDesC& aName, TInt* aResult = NULL ):
+        iResult( aResult)
+        {
+    	RBuf8 data;
+    	
+    	iName.Set( aName );
+    	if ( data.Create( iName.Size() + 8 ) == KErrNone )
+    	    {
+    	    data.Copy( _L( ">> " ) );
+    	    data.Append( iName );
+    	    LOG( data );
+    	    data.Close();
+    	    }
+    	}
+
+    ~TLogFn()
+        {
+    	RBuf8 data;
+    	
+    	if ( data.Create( iName.Size() + 50 ) == KErrNone )
+    	    {
+        	data.Copy( _L( "<< " ) );
+        	data.Append( iName );
+        	if ( iResult )
+        	    {
+        	    data.Append( ' ' );
+        	    data.AppendNum( *iResult );
+        	    data.Append( _L( " 0x" ) );
+        	    data.AppendNum( *iResult, EHex );
+        	    }
+        	LOG( data );
+        	data.Close();
+        	}
+        }
+    
+private: // data
+
+    /**
+     * Name of the function
+     */
+    TPtrC iName;
+    TInt* iResult;
+    };
+
+#else // _LOGGING
+
+#define LOG( des )
+#define LOG1( AAA )
+#define LOG2( FMT, BBB )
+#define LOG3( FMT, BBB, CCC )
+#define LOG4( FMT, BBB, CCC, DDD )
+#define LOG5( FMT, BBB, CCC, DDD, EEE )
+#define LOGHEX( ptr, len )
+#define LOGFN( AAA )	
+#define LOGFNR( AAA, BBB )	
+#define CLEARLOG()
+
+#endif // _LOGGING
+    
+#endif // LOG_H