diff -r 000000000000 -r 72b543305e3a email/imum/logging/ImumLogContext.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/logging/ImumLogContext.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,130 @@ +/* +* 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: ImumLogContext.h +* +*/ + + +#ifndef IMUMLOGCONTEXT_H +#define IMUMLOGCONTEXT_H + +#include +#include "ImumLogConfig.h" + +#ifdef _DEBUG + +// These macros are real macros, that should be used. For temporary purposes, these +// are left out and the logging is done by simple entry logging + #define _IMUM_UNCONTROLLED_INPUT_MSG L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!" + #define _IMUM_MULTIPLE_ENTRY_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL ENTRY!" + #define _IMUM_UNCONTROLLER_EXIT_MSG L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!" + #define _IMUM_MULTIPLE_EXIT_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL EXIT!" + + #define _IMUM_API_PREFIX L"_A" + #define _IMUM_LOCAL_PREFIX L"_L" + + class _TImumContext + { + public: + _TImumContext( + const TText* _fn, + const TUint _id, + const TUint _vis, + const TUint _addr, + const TUint _thdId, + const TText* _file, + const TUint _category=0 ) + : + iFn(_fn), + iId(_id), + iApi((TBool)_vis), + iAddr(_addr), + iThdId(_thdId), + iVis((_vis == 0 ? (TText*)_IMUM_API_PREFIX : (TText*)_IMUM_LOCAL_PREFIX)), + iFile(_file), + iCategory(_category), + _dc( *this ) + + #ifndef DISABLE_SYNTAX_CHECK + ,outOk(EFalse), inOk(EFalse) + #endif + { + } + ~_TImumContext() + { + #ifndef DISABLE_SYNTAX_CHECK + do + { +// #ifndef DISABLE_GROUP_CHECKS +// if ( (!TraceHeap::IsMaskOn(TRACENFO[iId].iGrpId)) || ((!iApi) && TraceHeap::IsApiOnly()) ) +// { +// break; +// } +// #endif + + DoInChk(); + if (!outOk) + { + _IMUMPRINTER(_IT(_IMUM_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); + } + } while (0); + #endif // DISABLE_SYNTAX_CHECK + } + + const TText* iFn; + const TUint iId; + const TText* iVis; + const TUint iAddr; + const TInt iThdId; + const TBool iApi; + const TText* iFile; + const TUint iCategory; + _TImumContext& _dc; + + #ifndef DISABLE_SYNTAX_CHECK + inline void DoInChk() + { + if (!inOk) + { + _IMUMPRINTER(_IT(_IMUM_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); + inOk = ETrue; + } + } + + inline void ChkMultiIn() + { + if (inOk) + { + _IMUMPRINTER(_IT(_IMUM_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); + } + } + + inline void ChkMultiOut() + { + if (outOk) + { + _IMUMPRINTER(_IT(_IMUM_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); + } + } + + TBool inOk; + TBool outOk; + #endif // DISABLE_SYNTAX_CHECK + }; + +#endif // _DEBUG + +#endif // IMUMLOGCONTEXT_H + +// End of File