uiacceltk/hitchcock/plugins/alftranseffect/alftranseffectplugin/src/debuglogger.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/plugins/alftranseffect/alftranseffectplugin/src/debuglogger.cpp	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* 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:   Utility for debug prints to file
+*
+*/
+
+
+
+//File only compiled with one of these debug flags enabled.
+#if defined(TFXSERVER_TIME_LOG) || defined(WSSERVERDRAWER_TIME_LOG)
+
+#include "debuglogger.h"
+#include <e32debug.h>
+
+// ======== MEMBER FUNCTIONS ========
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------
+CDebugLogger::CDebugLogger()
+	{
+	}
+	
+CDebugLogger::~CDebugLogger() 
+	{
+	iEntries.ResetAndDestroy();
+	}
+
+//---------------------------------------------------------------------
+// 
+//---------------------------------------------------------------------	  
+void CDebugLogger::Log(const TDesC16& aMsg) 
+	{
+	CLogEntry *entry = new CLogEntry(aMsg,0);
+	if(entry)
+		{
+		if(KErrNone != iEntries.Append(entry))
+			{
+			delete entry;
+			}
+		}
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	  
+void CDebugLogger::Log1(const TDesC16& aMsg, TInt aArg1) 
+	{
+	CLogEntry *entry = new CLogEntry(aMsg, 1, aArg1);
+	if(entry)
+		{
+		if(KErrNone != iEntries.Append(entry))
+			{
+			delete entry;
+			}
+		}
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	  
+void CDebugLogger::Log2(const TDesC16& aMsg, TInt aArg1, TInt aArg2) 
+	{
+	CLogEntry *entry = new CLogEntry(aMsg, 2, aArg1, aArg2);
+	if(entry)
+		{
+		if(KErrNone != iEntries.Append(entry))
+			{
+			delete entry;
+			}
+		}
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	  
+void CDebugLogger::Log3(const TDesC16& aMsg, TInt aArg1, TInt aArg2, TInt aArg3) 
+	{
+	CLogEntry *entry = new CLogEntry(aMsg, 3, aArg1, aArg2, aArg3);
+	if(entry)
+		{
+		iEntries.Append(entry);
+		}
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	  
+void CDebugLogger::Log4(const TDesC16& aMsg, TInt aArg1, TInt aArg2, TInt aArg3, TInt aArg4) 
+	{
+	CLogEntry *entry = new CLogEntry(aMsg, 4, aArg1, aArg2, aArg3, aArg4);
+	if(entry)
+		{
+		iEntries.Append(entry);
+		}
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	  
+void CDebugLogger::WriteToFile(const TDesC& aLogDir, const TDesC& aLogFile) 
+	{
+	const TInt count = iEntries.Count();
+	/*lint -e1032 -e1023 */
+	/* 	this is to prevent lint errors that says that writeformat is ambigious and cant be used
+		without an object, writeformat is not ambigious - it has one static and one non-static version */
+	for(TInt i = 0; i < count; i++)
+		{
+		switch(iEntries[i]->iNbrArgs)
+			{
+			case 0:
+				RFileLogger::Write(aLogDir,aLogFile,EFileLoggingModeAppend,*(iEntries[i]->iMsg));
+				break;
+			case 1:
+				RFileLogger::WriteFormat(aLogDir,aLogFile,EFileLoggingModeAppend,*(iEntries[i]->iMsg),iEntries[i]->iArg1);
+				break;
+			case 2:
+				RFileLogger::WriteFormat(aLogDir,aLogFile,EFileLoggingModeAppend,*(iEntries[i]->iMsg),iEntries[i]->iArg1,iEntries[i]->iArg2);
+				break;
+			case 3:
+				RFileLogger::WriteFormat(aLogDir,aLogFile,EFileLoggingModeAppend,*(iEntries[i]->iMsg),iEntries[i]->iArg1,iEntries[i]->iArg2,iEntries[i]->iArg3);
+				break;
+			case 4:
+				RFileLogger::WriteFormat(aLogDir,aLogFile,EFileLoggingModeAppend,*(iEntries[i]->iMsg),iEntries[i]->iArg1,iEntries[i]->iArg2,iEntries[i]->iArg3,iEntries[i]->iArg4);
+				break;
+			default:
+				break;
+			}
+		}
+	/*lint +e1032 +e1023 */
+	iEntries.ResetAndDestroy();
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------
+TUint32 CDebugLogger::TimeMs()
+	{
+	TTime now;
+	now.UniversalTime();
+	return (TUint32)(now.Int64()/1000);
+	}
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------	
+CLogEntry::CLogEntry(const TDesC16& aMsg, TInt aNbrArg, TInt aArg1, TInt aArg2, TInt aArg3, TInt aArg4) :  iNbrArgs(aNbrArg), 
+					iArg1(aArg1), iArg2(aArg2), iArg3(aArg3), iArg4(aArg4) 
+	{
+	iMsg = HBufC16::New(aMsg.Length());
+	if(iMsg)
+	    {
+    	(*iMsg) = aMsg;
+	    }
+	}	  
+
+//---------------------------------------------------------------------
+//
+//---------------------------------------------------------------------		
+CLogEntry::~CLogEntry()
+	{
+	delete iMsg;
+	}
+
+
+#endif // TFXSERVER_TIME_LOG
+