--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/syslangutil/src/syslangutiltrace.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,193 @@
+/*
+* 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: Implementation of tracing functions for SysLangUtil module.
+*
+*/
+
+
+#ifdef _DEBUG
+ #include <e32debug.h>
+ #include "syslangutiltrace.h"
+#endif // _DEBUG
+
+#ifdef _DEBUG
+
+ _LIT( KModuleName, "SYSLANG" );
+ _LIT( KOverflowStr, "..." );
+ _LIT( KTraceFuncFmt, "%S # %S" );
+ _LIT( KTraceSeparator, " # " );
+ _LIT( KAssertionFmt, "%S # Assertion failed: file=%S, line=%d" );
+ _LIT( KFatalMemAllocFailure, "SYSLANG # Memory allocation failure during tracing" );
+
+ const TInt KTraceBufLen = 128;
+ typedef TBuf<KTraceBufLen> TTraceBuf;
+
+ const TInt KFileNameBufLen = 64;
+ typedef TBuf<KFileNameBufLen> TFileNameBuf;
+
+#endif // _DEBUG
+
+#if defined _DEBUG && defined __SYSLANG_TRACE__
+ _LIT( KTraceFuncExitFmt, "%S # %S finished" );
+ _LIT( KTraceFuncExitRetFmt, "%S # %S finished with %d" );
+ _LIT( KTraceCallerFmt, " (caller thread: %S)" );
+
+ const TInt KFuncNameBufLen = 64;
+ typedef TBuf<KFuncNameBufLen> TFuncNameBuf;
+#endif // _DEBUG && __SYSLANG_TRACE__
+
+#ifdef _DEBUG
+
+NONSHARABLE_CLASS( TTraceOverflowHandler ) : public TDes16Overflow
+ {
+ public: // Functions from base classes
+
+ /**
+ * Handle descriptor ovewflow.
+ */
+ virtual void Overflow( TDes16 &aDes )
+ {
+ aDes.RightTPtr( KOverflowStr().Length() ).Copy( KOverflowStr );
+ }
+ };
+
+#endif // _DEBUG
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+#ifdef _DEBUG
+
+// -----------------------------------------------------------------------------
+// AssertTraceFunc
+//
+// -----------------------------------------------------------------------------
+//
+void AssertTraceFunc( const TDesC8& aFile, TInt aLine )
+ {
+ TTraceOverflowHandler overflowHandler;
+
+ TFileNameBuf name;
+ name.Copy( aFile.Left( KFileNameBufLen ) ); // Change it to 16-bit descriptor
+
+ TTraceBuf buf;
+ buf.AppendFormat( KAssertionFmt, &overflowHandler,
+ &KModuleName, &name, aLine );
+ RDebug::Print( buf );
+ }
+
+
+// -----------------------------------------------------------------------------
+// TraceFunc
+//
+// -----------------------------------------------------------------------------
+//
+void TraceFunc( TRefByValue<const TDesC16> aFmt, ... )
+ {
+ HBufC* fmtString = HBufC::New( KTraceFuncFmt().Length() +
+ KModuleName().Length() +
+ static_cast<const TDesC16&>( aFmt ).Length() );
+
+ if ( fmtString )
+ {
+ TPtr ptr( fmtString->Des() );
+ ptr.Append( KModuleName );
+ ptr.Append( KTraceSeparator );
+ ptr.Append( aFmt );
+
+ VA_LIST list;
+ VA_START( list, aFmt );
+
+ TTraceOverflowHandler overflowHandler;
+ TTraceBuf buf;
+ buf.AppendFormatList( *fmtString, list, &overflowHandler );
+ RDebug::Print( buf );
+
+ VA_END( list );
+
+ delete fmtString;
+ }
+ else
+ {
+ RDebug::Print( KFatalMemAllocFailure );
+ }
+ }
+
+
+#endif // _DEBUG
+
+#if defined _DEBUG && defined __SYSLANG_TRACE__
+
+// -----------------------------------------------------------------------------
+// FuncEntryTrace
+//
+// -----------------------------------------------------------------------------
+//
+void FuncEntryTrace( const TDesC8& aFunction, TBool aPrintCaller )
+ {
+ TTraceOverflowHandler overflowHandler;
+
+ TFuncNameBuf name;
+ name.Copy( aFunction.Left( KFuncNameBufLen ) ); // Change it to 16-bit descriptor
+
+ TTraceBuf buf;
+ buf.AppendFormat( KTraceFuncFmt, &overflowHandler, &KModuleName, &name );
+
+ if ( aPrintCaller )
+ {
+ const TName caller = RThread().Name();
+ buf.AppendFormat( KTraceCallerFmt, &overflowHandler, &caller );
+ }
+
+ RDebug::Print( buf );
+ }
+
+
+// -----------------------------------------------------------------------------
+// FuncExitTrace
+//
+// -----------------------------------------------------------------------------
+//
+void FuncExitTrace( const TDesC8& aFunction )
+ {
+ TTraceOverflowHandler overflowHandler;
+
+ TFuncNameBuf name;
+ name.Copy( aFunction.Left( KFuncNameBufLen ) ); // Change it to 16-bit descriptor
+
+ TTraceBuf buf;
+ buf.AppendFormat( KTraceFuncExitFmt, &overflowHandler, &KModuleName, &name );
+ RDebug::Print( buf );
+ }
+
+
+// -----------------------------------------------------------------------------
+// FuncExitTrace
+//
+// -----------------------------------------------------------------------------
+//
+void FuncExitTrace( const TDesC8& aFunction, const TInt aReturnValue )
+ {
+ TTraceOverflowHandler overflowHandler;
+
+ TFuncNameBuf name;
+ name.Copy( aFunction.Left( KFuncNameBufLen ) ); // Change it to 16-bit descriptor
+
+ TTraceBuf buf;
+ buf.AppendFormat( KTraceFuncExitRetFmt, &overflowHandler,
+ &KModuleName, &name, aReturnValue );
+ RDebug::Print( buf );
+ }
+
+
+#endif // _DEBUG && __SYSLANG_TRACE__