email/mail/UtilsSrc/MailLog.h
changeset 79 2981cb3aa489
parent 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/UtilsSrc/MailLog.h	Wed Nov 03 09:52:46 2010 +0530
@@ -0,0 +1,129 @@
+/*
+* 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: 
+*     Logging class
+*     
+*
+*/
+
+
+
+#ifndef MAILLOG_H
+#define MAILLOG_H
+
+/////////////////////////////////////////////////////////////////////////////
+// #Defines that control printing of additional information to debug stream.
+/////////////////////////////////////////////////////////////////////////////
+
+// INCLUDES
+
+#include "MailLogDef.h"
+#include <e32std.h>
+
+// DEFINES
+
+#ifdef MAIL_ENABLE_LOGGING
+#define LOGHANDLESIZE(v) MailLog::LogHandleSize(v);
+#define LOGHEAP() MailLog::LogHeap();
+#define LOG(s) MailLog::Log(_L(s))						// CSI: 78 # Have to use a _L macro
+#define LOG1(s, v) MailLog::Log( _L(s), v )				// CSI: 78 # Have to use a _L macro
+#define LOG2(s, v1, v2) MailLog::Log( _L(s), v1, v2 )	// CSI: 78 # Have to use a _L macro
+#define LOGPARAM_ONLY( x ) x
+#else
+#define LOGHANDLESIZE(v)
+#define LOGHEAP()
+#define LOG(s)
+#define LOG1(s, v)
+#define LOG2(s, v1, v2)
+#define LOGPARAM_ONLY( x )
+#endif // MAIL_ENABLE_LOGGING
+
+#ifdef MAIL_ENABLE_UNIT_TEST
+#define UNIT_TEST(ClassName) friend class ClassName;
+#else 
+#define UNIT_TEST(ClassName)
+#endif
+
+/**
+ * Asserts and checks that statement doesn't allocate any memory. If
+ * allocation happens evaluates failed.
+ * 2147483647 KMaxTInt
+ */
+#ifdef MAIL_ENABLE_ALLOC_TEST 
+#define MAIL_ALLOC_TEST(statement) \
+    { TInt err(KErrNoMemory); TInt i(1); \
+    while( err != KErrNone && i <= KMaxTInt ) \
+        {__UHEAP_FAILNEXT(i); \
+        LOG2("MAIL_ALLOC_TEST_FAILNEXT: %d err:%d", i, err); \
+        TRAP(err, statement); \
+        if(err==KLeaveExit) \
+            User::Leave(err); \
+        __UHEAP_RESET; \
+        i += 1; \
+        } \
+    }
+#else
+
+/**
+ * Release version of macro. Just executes statement.
+ */
+#define MAIL_ALLOC_TEST(statement) statement
+
+#endif // MAIL_ENABLE_ALLOC_TEST
+
+
+// DATA TYPES
+
+
+// CLASS DECLARATION
+
+/**
+* Class offers logging functionality.
+*/
+#ifdef MAIL_ENABLE_LOGGING
+class RFile;
+class MailLog
+    {
+
+    public:
+    	static void LogHandleSize( RFile aFile );
+        /**
+        * Log the heap.
+        */
+        static void LogHeap();
+        
+        /**
+        * Log the message.
+		* @param aText text to be written to log.
+        */
+        static void Log( TRefByValue<const TDesC> aText, ... );
+        
+
+    private: // constructor
+        
+		/// Prohibited default constructor
+		MailLog();
+
+		/// Prohibited copy constructor
+		MailLog( const MailLog& );
+    
+		/// Prohibited assignment operator
+		MailLog& operator=( const MailLog& );
+    };
+
+#endif // MAIL_ENABLE_LOGGING
+
+#endif // MAILLOG_H
+
+//  End of File