email/imum/logging/ImumLogUtils.h
changeset 0 72b543305e3a
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  ImumLogUtils.h
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef IMUMLOGUTILS_H
       
    20 #define IMUMLOGUTILS_H
       
    21 
       
    22 #include <e32def.h>
       
    23 #include <e32std.h>
       
    24 
       
    25 #include "ImumLogContext.h"
       
    26 #include "ImumLogTrapHandler.h"
       
    27 
       
    28 #define IMUM_ASSERT(_assertion)  __IMUM_ASSERT_DBG(_assertion)
       
    29 //#define IMUM_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
       
    30 
       
    31 #ifdef _DEBUG
       
    32 
       
    33 /*****************************************************************************
       
    34  LOGGING MACROS - DEBUG ON
       
    35 *****************************************************************************/
       
    36 
       
    37     #define IMUM_CONTEXT(_fn, _vis ,_logfile) _TImumContext _dc((TText*)L ## #_fn, _IMUM_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId, _logfile().Ptr() )
       
    38     #define IMUM_STATIC_CONTEXT(_fn, _vis, _thdId, _logfile) _TImumContext _dc((TText*)L ## #_fn, _IMUM_LOG_COMPONENT_ID, _vis, 0, RProcess().SecureId().iId, _logfile().Ptr())
       
    39 //
       
    40     #define IMUM_IN() do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
       
    41     #define IMUM0_IN(string) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
       
    42     #define IMUM1_IN(string, p1) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
       
    43     #define IMUM2_IN(string, p1, p2) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
       
    44     #define IMUM3_IN(string, p1, p2, p3) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
       
    45     #define IMUM4_IN(string, p1, p2, p3, p4) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
       
    46     #define IMUM5_IN(string, p1, p2, p3, p4, p5) do { _CHK_GRP(); _CHK_MULTIIN(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
       
    47 
       
    48     #define IMUM_OUT() do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
       
    49 //    #define IMUM0_OUT(string) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
       
    50 //    #define IMUM1_OUT(string, p1) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
       
    51 //    #define IMUM2_OUT(string, p1, p2) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
       
    52 //    #define IMUM3_OUT(string, p1, p2, p3) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
       
    53 //    #define IMUM4_OUT(string, p1, p2, p3, p4) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
       
    54 //    #define IMUM5_OUT(string, p1, p2, p3, p4, p5) do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
       
    55 //
       
    56 //    #define IMUM0_RET(val, fmtstr) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
       
    57 //    #define IMUM1_RET(val, fmtstr, p1) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
       
    58 //    #define IMUM2_RET(val, fmtstr, p1, p2) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
       
    59 //    #define IMUM3_RET(val, fmtstr, p1, p2, p3) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
       
    60 //    #define IMUM4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
       
    61 //    #define IMUM5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _CHK_GRP(); _DOINCHK(); _CHK_MULTIOUT(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
       
    62 //
       
    63     #define IMUM0(level, string) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
       
    64     #define IMUM1(level, string, p1) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
       
    65     #define IMUM2(level, string, p1, p2) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
       
    66     #define IMUM3(level, string, p1, p2, p3) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
       
    67     #define IMUM4(level, string, p1, p2, p3, p4) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
       
    68     #define IMUM5(level, string, p1, p2, p3, p4, p5) do { _CHK_GRP(); _CHK_LEVEL(level); _DOINCHK(); _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
       
    69 //    #define __IMUM_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) );   _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
       
    70 //    #define __TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode)  do { if (_assertion) { break; } _IMUMPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
       
    71 //    #define BIND_TRACE_TRAPHANDLER() _TImumTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
       
    72 //    #define TRACE_DECL() TInt _iTraceThreadId
       
    73 //    #define TRACE_CREATE() _CREATE_MASK(); RThread _traceThreadId; _iTraceThreadId = (TInt)_traceThreadId.Id()
       
    74 //    #define TRACE_FAST_CREATE(_thdId) _CREATE_MASK(); _iTraceThreadId = _thdId
       
    75 
       
    76 /*****************************************************************************
       
    77  LOGGING MACROS - NO DEBUGGING
       
    78 *****************************************************************************/
       
    79 #else // _DEBUG
       
    80 
       
    81     /**
       
    82     * Creates a trace context for traceable function. This variant is used with instance functions (methods).
       
    83     * Parameter @a _fn defines the name of the function (method) to trace. @_id defines the group where this trace entry belongs.
       
    84     * For full list of available trace contexts, see file trace_ctxt.h. Parameter @a _vis defines the visibility this context is having.
       
    85     * Methods with IMPORT_C / EXPORT_C definitions are marked as IMUMAPI, others have signature IMUMLOCAL. \n\n
       
    86     * Usage example:
       
    87     * @code
       
    88     * IMUM_CONTEXT(CFoo::Bar, CtxTest, IMUMLOCAL);
       
    89     * @endcode
       
    90     */
       
    91     #define IMUM_CONTEXT(_fn, _vis ,_logfile)
       
    92 
       
    93     /**
       
    94     * Creates a trace context for traceable function. This variant is used with plain functions and static methods.
       
    95     * Parameter @a _fn defines the name of the function (method) to trace. @_id defines the group where this trace entry belongs.
       
    96     * For full list of available trace contexts, see file trace_ctxt.h. Parameter @a _vis defines the visibility this context is having.
       
    97     * Methods / functions with IMPORT_C / EXPORT_C definitions are marked as IMUMAPI, others have signature IMUMLOCAL.
       
    98     * Parameter @a _thdId is a name for a variable to create when thread id is queried from kernel. Later in the code you can use this
       
    99     * variable e.g. to instantiate other trace enabled classes.\n\n
       
   100     * Usage example:
       
   101     * @code
       
   102     * IMUM_CONTEXT(FooBar, CtxTest, IMUMAPI, thdId);
       
   103     * ...
       
   104     * TRACE_FAST_CREATE(thdId);
       
   105     * @endcode
       
   106     */
       
   107     #define IMUM_STATIC_CONTEXT(_fn, _vis, _thdId, _logfile) TInt _thdId = 0; _thdId++;
       
   108 
       
   109     /**
       
   110     * Using the defined trace context, outputs method entry information into traces.
       
   111     * <b> NOTE: Trace context must be defined before this method can be used.</b>
       
   112     * Trace context can be defined using either IMUM_CONTEXT or IMUM_STATIC_CONTEXT
       
   113     */
       
   114     #define IMUM_IN()
       
   115     #define IMUM0_IN(string)
       
   116     #define IMUM1_IN(string, p1)
       
   117     #define IMUM2_IN(string, p1, p2)
       
   118     #define IMUM3_IN(string, p1, p2, p3)
       
   119     #define IMUM4_IN(string, p1, p2, p3, p4)
       
   120     #define IMUM5_IN(string, p1, p2, p3, p4, p5)
       
   121 
       
   122     #define IMUM_OUT()
       
   123     #define IMUM0_OUT(string)
       
   124     #define IMUM1_OUT(string, p1)
       
   125     #define IMUM2_OUT(string, p1, p2)
       
   126     #define IMUM3_OUT(string, p1, p2, p3)
       
   127     #define IMUM4_OUT(string, p1, p2, p3, p4)
       
   128     #define IMUM5_OUT(string, p1, p2, p3, p4, p5)
       
   129 
       
   130     #define IMUM0_RET(val, fmtstr) return val
       
   131     #define IMUM1_RET(val, fmtstr, p1) return val
       
   132     #define IMUM2_RET(val, fmtstr, p1, p2) return val
       
   133     #define IMUM3_RET(val, fmtstr, p1, p2, p3) return val
       
   134     #define IMUM4_RET(val, fmtstr, p1, p2, p3, p4) return val
       
   135     #define IMUM5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
       
   136 
       
   137     #define IMUM0(level, string)
       
   138     #define IMUM1(level, string, p1)
       
   139     #define IMUM2(level, string, p1, p2)
       
   140     #define IMUM3(level, string, p1, p2, p3)
       
   141     #define IMUM4(level, string, p1, p2, p3, p4)
       
   142     #define IMUM5(level, string, p1, p2, p3, p4, p5)
       
   143 
       
   144     #define BIND_TRACE_TRAPHANDLER()
       
   145     #define TRACE_DECL() TInt _iTraceThreadId
       
   146     #define TRACE_FAST_CREATE(_thdId) _thdId++;
       
   147     #define TRACE_CREATE()
       
   148 
       
   149     #define __IMUM_ASSERT_DBG(_assertion)
       
   150     #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
       
   151 
       
   152 #endif // _DEBUG
       
   153 
       
   154 #endif      // IMUMLOGUTILS_H
       
   155 
       
   156 // End of File