diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/syslangutil/src/syslangutiltrace.cpp --- /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 + #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 TTraceBuf; + + const TInt KFileNameBufLen = 64; + typedef TBuf 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 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 aFmt, ... ) + { + HBufC* fmtString = HBufC::New( KTraceFuncFmt().Length() + + KModuleName().Length() + + static_cast( 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__