emailservices/emailstore/message_store/debuglog/inc/DebugLogMacros.h
changeset 0 8466d47a6819
child 8 e1b6206813b4
equal deleted inserted replaced
-1:000000000000 0:8466d47a6819
       
     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:  Logger macros.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef _DEBUG_LOG_MACROS_H_
       
    20 #define _DEBUG_LOG_MACROS_H_
       
    21 
       
    22 // =============================================================================
       
    23 //
       
    24 // DESCRIPTION:
       
    25 //
       
    26 // The macros in this header file provide a consistent, centralized way of
       
    27 // logging debug traces.  The intent is for all libraries to use these macros so
       
    28 // that debug tracing can be more efficient while being more maintainable.
       
    29 //
       
    30 // USAGE:
       
    31 //
       
    32 //  CONFIGURING:
       
    33 //
       
    34 //      - add to .mmp file
       
    35 //
       
    36 //          // [Optional] Override default tracing options. By default, error and
       
    37 //          // info will be sent to trace file.  See below for a more detailed
       
    38 //          // description of the logging options
       
    39 //          MACRO DEBUG_USE_PROJECT_LOGGING_OPTIONS
       
    40 //          MACRO DEBUG_LOG_OPTION_CONSTRUCT
       
    41 //
       
    42 //          // The following library is for Debug log tracing.
       
    43 //          DEBUGLIBRARY DebugLog.lib
       
    44 //
       
    45 //      - make the directory: C:\data\logs and the appropriate subdirectories,
       
    46 //        as indicated in the __LOG_CONSTRUCT macro below.
       
    47 //        
       
    48 //        For a given class, each thread that uses the class will have a separate
       
    49 //        log file within the directory.  The log file will be named based on the
       
    50 //        name of the process and the name of the thread.
       
    51 //
       
    52 //  PRINTING: (NOTE: The following is just a reference example)
       
    53 //
       
    54 //      // Include the debug logging header file
       
    55 //      #include "DebugLogMacros.h"
       
    56 //
       
    57 //      class CTestClass
       
    58 //          {
       
    59 //          // MANDATORY: This must be within the class declaration
       
    60 //          __LOG_DECLARATION
       
    61 //          };
       
    62 //
       
    63 //      CTestClass::CTestClass()
       
    64 //          {
       
    65 //          // MANDATORY: Provide the subdirectory with C:\data\logs and the class name.
       
    66 //          __LOG_CONSTRUCT( "subdirectory", "CTestClass" )
       
    67 //
       
    68 //          // OPTIONAL: Do this if you want to close the log file between writes.
       
    69 //          //           (Similar to static RFlogger calls).
       
    70 //          __LOG_CLOSE_BETWEEN_WRITES
       
    71 //          }
       
    72 //
       
    73 //      CTestClass::~CTestClass()
       
    74 //          {
       
    75 //          // MANDATORY: Cleanup the log data.
       
    76 //          __LOG_DESTRUCT
       
    77 //          }
       
    78 //
       
    79 //      CTestClass::DoSomething( TInt aParam )
       
    80 //      {
       
    81 //          // Always log entering a method if other tracing is
       
    82 //          // will be present in the method.  Use
       
    83 //          // __LOG_ENTER_SUPPRESS(...) if you don't want the
       
    84 //          // enter log to be traced even when
       
    85 //          // DEBUG_LOG_OPTION_ENTER is enabled.
       
    86 //          __LOG_ENTER( "DoSomething" )
       
    87 //
       
    88 //          // Log a simple trace (no formatting)
       
    89 //          __LOG_WRITE_INFO( "This is a simple info trace" )
       
    90 //
       
    91 //          // Log a formatted trace. For each level of trace
       
    92 //          // up to 4 variables may be formatted.  FORMAT1
       
    93 //          // macros should be used for 1 paramter, FORMAT2
       
    94 //          // should be used for 2 paramters, etc.
       
    95 //          __LOG_WRITE_FORMAT1_DEBUG1( "aParam =%d", aParam )
       
    96 //
       
    97 //          // Optionally log method exit
       
    98 //          __LOG_EXIT
       
    99 //      }
       
   100 // 
       
   101 // =============================================================================
       
   102 //
       
   103 // =============================================================================
       
   104 //
       
   105 // OVERRIDING DEFAULT LOGGING OPTIONS:
       
   106 //
       
   107 // You can close all log files between writes for a given .mmp by defining the
       
   108 // MACRO DEBUG_LOG_CLOSE_BETWEEN_WRITES within the .mmp file.
       
   109 // 
       
   110 // A project can override the default logging options by defining the MACRO
       
   111 // DEBUG_USE_PROJECT_LOGGING_OPTIONS in its .mmp file.  After defining this MACRO
       
   112 // any one the following option MACROS may be defined in the .mmp file:
       
   113 //
       
   114 // NAME: DEBUG_LOG_NONE
       
   115 // DESCRIPTION: Disables all traces.
       
   116 //
       
   117 // NAME:        DEBUG_LOG_OPTION_CONSTRUCT
       
   118 // DESCRIPTION: Enables constructor traces. (i.e. __LOG_CONSTRUCT )
       
   119 //
       
   120 // NAME:        DEBUG_LOG_OPTION_DESTRUCT
       
   121 // DESCRIPTION: Enables destructor traces. (i.e. __LOG_DESTRUCT )
       
   122 //
       
   123 // NAME:        DEBUG_LOG_OPTION_ENTER
       
   124 // DESCRIPTION: Enables method enter traces. (i.e. __LOG_ENTER(a) )
       
   125 //
       
   126 // NAME:        DEBUG_LOG_OPTION_EXIT
       
   127 // DESCRIPTION: Enables method exit traces. (i.e. __LOG_EXIT )
       
   128 //
       
   129 // NAME:        DEBUG_LOG_OPTION_ERRORS
       
   130 // DESCRIPTION: Enables error traces. (i.e. __LOG_WRITE_[...]_ERROR() )
       
   131 //
       
   132 // NAME:        DEBUG_LOG_OPTION_INFO
       
   133 // DESCRIPTION: Enables info traces. (i.e. __LOG_WRITE_[...]_INFO() )
       
   134 //
       
   135 // NAME:        DEBUG_LOG_OPTION_DEBUG1
       
   136 // DESCRIPTION: Enables level 1 debug traces. (i.e. __LOG_WRITE_[...]_DEBUG1() )
       
   137 //
       
   138 // NAME:        DEBUG_LOG_OPTION_DEBUG2
       
   139 // DESCRIPTION: Enables level 2 debug traces. (i.e. __LOG_WRITE_[...]_DEBUG2() )
       
   140 //
       
   141 // NAME:        DEBUG_LOG_OPTION_DEBUG3
       
   142 // DESCRIPTION: Enables level 3 debug traces. (i.e. __LOG_WRITE_[...]_DEBUG3() )
       
   143 //
       
   144 // NAME:        DEBUG_LOG_OPTION_ALL
       
   145 // DESCRIPTION: Enables all traces. (WARNING - The trace file can quickly get
       
   146 //              quite large).
       
   147 //
       
   148 // **********
       
   149 // EXAMPLE 1: To enable constructor, destructor, and INFO traces:
       
   150 // **********
       
   151 //
       
   152 //  .
       
   153 //  .
       
   154 //  .
       
   155 //  MACRO DEBUG_USE_PROJECT_LOGGING_OPTIONS
       
   156 //  MACRO DEBUG_LOG_OPTION_CONSTRUCT
       
   157 //  MACRO DEBUG_LOG_OPTION_DESTRUCT
       
   158 //  MACRO DEBUG_LOG_OPTION_INFO
       
   159 //  .
       
   160 //  .
       
   161 //  .
       
   162 //
       
   163 // **********
       
   164 // EXAMPLE 2: Disable all traces (in a debug build):
       
   165 // **********
       
   166 //
       
   167 //  .
       
   168 //  .
       
   169 //  .
       
   170 //  MACRO DEBUG_USE_PROJECT_LOGGING_OPTIONS
       
   171 //  MACRO DEBUG_LOG_NONE
       
   172 //  .
       
   173 //  .
       
   174 //  .
       
   175 // 
       
   176 // =============================================================================
       
   177 
       
   178 #ifdef _DEBUG
       
   179 
       
   180     // ===========
       
   181     // DEBUG BUILD
       
   182     // ===========
       
   183 
       
   184     #include "DebugLogConst.h"
       
   185 
       
   186     // =====================================================================
       
   187     // Utility Logging Macros
       
   188     // =====================================================================
       
   189     
       
   190     // MANDATORY MACROS FOR CLASS-ORIENTED LOGGING
       
   191     #define __LOG_DECLARATION          __INTERNAL_LOG_DECLARATION
       
   192     #define __LOG_CONSTRUCT(a,b)       __INTERNAL_LOG_CONSTRUCT(a,b)
       
   193     #define __LOG_DESTRUCT             __INTERNAL_LOG_DESTRUCT
       
   194     
       
   195     // MANDATORY MACROS FOR STATIC FUNCTION LOGGING    
       
   196     #define __LOG_STATIC_ENTER(a,b)          __INTERNAL_LOG_STATIC_ENTER(a,b)
       
   197     #define __LOG_STATIC_EXIT                __INTERNAL_LOG_STATIC_EXIT
       
   198     #define __LOG_STATIC_ENTER_SUPPRESS(a,b) __INTERNAL_LOG_STATIC_ENTER_SUPPRESS(a,b)
       
   199     #define __LOG_STATIC_EXIT_SUPPRESS       __INTERNAL_LOG_STATIC_EXIT_SUPPRESS
       
   200     
       
   201     // OPTIONAL MACROS    
       
   202     #define __LOG_CLOSE_BETWEEN_WRITES __INTERNAL_LOG_CLOSE_BETWEEN_WRITES
       
   203     #define __LOG_ENTER(a)             __INTERNAL_LOG_ENTER(a)
       
   204     #define __LOG_ENTER_SUPPRESS(a)    __INTERNAL_LOG_ENTER_SUPPRESS(a)
       
   205     #define __LOG_EXIT                 __INTERNAL_LOG_EXIT
       
   206     #define __LOG_EXIT_FORMAT1(fmt,a)  __INTERNAL_LOG_EXIT_FORMAT1(fmt,a)
       
   207     #define __LOG_EXIT8_FORMAT1(fmt,a) __INTERNAL_LOG_EXIT8_FORMAT1(fmt,a)    
       
   208 
       
   209     // =====================================================================
       
   210     // ERROR Level Logging Macros
       
   211     // =====================================================================
       
   212     #define __LOG_WRITE_ERROR(a)                         __INTERNAL_LOG_WRITE_ERROR(a)
       
   213 
       
   214     #define __LOG_WRITE_FORMAT1_ERROR(a,b)               __INTERNAL_LOG_WRITE_FORMAT1_ERROR(a,b)
       
   215     #define __LOG_WRITE_FORMAT2_ERROR(a,b,c)             __INTERNAL_LOG_WRITE_FORMAT2_ERROR(a,b,c)
       
   216     #define __LOG_WRITE_FORMAT3_ERROR(a,b,c,d)           __INTERNAL_LOG_WRITE_FORMAT3_ERROR(a,b,c,d)
       
   217     #define __LOG_WRITE_FORMAT4_ERROR(a,b,c,d,e)         __INTERNAL_LOG_WRITE_FORMAT4_ERROR(a,b,c,d,e)
       
   218     #define __LOG_WRITE_FORMAT5_ERROR(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE_FORMAT5_ERROR(a,b,c,d,e,f)
       
   219     #define __LOG_WRITE_FORMAT6_ERROR(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE_FORMAT6_ERROR(a,b,c,d,e,f,g)
       
   220     #define __LOG_WRITE_FORMAT7_ERROR(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE_FORMAT7_ERROR(a,b,c,d,e,f,g,h)
       
   221     #define __LOG_WRITE_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i)
       
   222 
       
   223     // 8-bit formatted strings
       
   224     #define __LOG_WRITE8_FORMAT1_ERROR(a,b)               __INTERNAL_LOG_WRITE8_FORMAT1_ERROR(a,b)
       
   225     #define __LOG_WRITE8_FORMAT2_ERROR(a,b,c)             __INTERNAL_LOG_WRITE8_FORMAT2_ERROR(a,b,c)
       
   226     #define __LOG_WRITE8_FORMAT3_ERROR(a,b,c,d)           __INTERNAL_LOG_WRITE8_FORMAT3_ERROR(a,b,c,d)
       
   227     #define __LOG_WRITE8_FORMAT4_ERROR(a,b,c,d,e)         __INTERNAL_LOG_WRITE8_FORMAT4_ERROR(a,b,c,d,e)
       
   228     #define __LOG_WRITE8_FORMAT5_ERROR(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE8_FORMAT5_ERROR(a,b,c,d,e,f)
       
   229     #define __LOG_WRITE8_FORMAT6_ERROR(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE8_FORMAT6_ERROR(a,b,c,d,e,f,g)
       
   230     #define __LOG_WRITE8_FORMAT7_ERROR(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE8_FORMAT7_ERROR(a,b,c,d,e,f,g,h)
       
   231     #define __LOG_WRITE8_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE8_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i)
       
   232 
       
   233     #define __LOG_HEX_DUMP_ERROR(a,buffer)                __INTERNAL_LOG_HEX_DUMP_ERROR(a,buffer)
       
   234 
       
   235     // =====================================================================
       
   236     // INFO Level Logging Macros
       
   237     // =====================================================================
       
   238     #define __LOG_WRITE_INFO(a)                         __INTERNAL_LOG_WRITE_INFO(a)
       
   239 
       
   240     #define __LOG_WRITE_FORMAT1_INFO(a,b)               __INTERNAL_LOG_WRITE_FORMAT1_INFO(a,b)
       
   241     #define __LOG_WRITE_FORMAT2_INFO(a,b,c)             __INTERNAL_LOG_WRITE_FORMAT2_INFO(a,b,c)
       
   242     #define __LOG_WRITE_FORMAT3_INFO(a,b,c,d)           __INTERNAL_LOG_WRITE_FORMAT3_INFO(a,b,c,d)
       
   243     #define __LOG_WRITE_FORMAT4_INFO(a,b,c,d,e)         __INTERNAL_LOG_WRITE_FORMAT4_INFO(a,b,c,d,e)
       
   244     #define __LOG_WRITE_FORMAT5_INFO(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE_FORMAT5_INFO(a,b,c,d,e,f)
       
   245     #define __LOG_WRITE_FORMAT6_INFO(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE_FORMAT6_INFO(a,b,c,d,e,f,g)
       
   246     #define __LOG_WRITE_FORMAT7_INFO(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE_FORMAT7_INFO(a,b,c,d,e,f,g,h)
       
   247     #define __LOG_WRITE_FORMAT8_INFO(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE_FORMAT8_INFO(a,b,c,d,e,f,g,h,i)
       
   248 
       
   249     // 8-bit formatted strings
       
   250     #define __LOG_WRITE8_FORMAT1_INFO(a,b)               __INTERNAL_LOG_WRITE8_FORMAT1_INFO(a,b)
       
   251     #define __LOG_WRITE8_FORMAT2_INFO(a,b,c)             __INTERNAL_LOG_WRITE8_FORMAT2_INFO(a,b,c)
       
   252     #define __LOG_WRITE8_FORMAT3_INFO(a,b,c,d)           __INTERNAL_LOG_WRITE8_FORMAT3_INFO(a,b,c,d)
       
   253     #define __LOG_WRITE8_FORMAT4_INFO(a,b,c,d,e)         __INTERNAL_LOG_WRITE8_FORMAT4_INFO(a,b,c,d,e)
       
   254     #define __LOG_WRITE8_FORMAT5_INFO(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE8_FORMAT5_INFO(a,b,c,d,e,f)
       
   255     #define __LOG_WRITE8_FORMAT6_INFO(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE8_FORMAT6_INFO(a,b,c,d,e,f,g)
       
   256     #define __LOG_WRITE8_FORMAT7_INFO(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE8_FORMAT7_INFO(a,b,c,d,e,f,g,h)
       
   257     #define __LOG_WRITE8_FORMAT8_INFO(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE8_FORMAT8_INFO(a,b,c,d,e,f,g,h,i)
       
   258 
       
   259     #define __LOG_HEX_DUMP_INFO(a,buffer)                __INTERNAL_LOG_HEX_DUMP_INFO(a,buffer)
       
   260 
       
   261     // =====================================================================
       
   262     // DEBUG1 Level Logging Macros
       
   263     // =====================================================================
       
   264     #define __LOG_WRITE_DEBUG1(a)                         __INTERNAL_LOG_WRITE_DEBUG1(a)
       
   265 
       
   266     #define __LOG_WRITE_FORMAT1_DEBUG1(a,b)               __INTERNAL_LOG_WRITE_FORMAT1_DEBUG1(a,b)
       
   267     #define __LOG_WRITE_FORMAT2_DEBUG1(a,b,c)             __INTERNAL_LOG_WRITE_FORMAT2_DEBUG1(a,b,c)
       
   268     #define __LOG_WRITE_FORMAT3_DEBUG1(a,b,c,d)           __INTERNAL_LOG_WRITE_FORMAT3_DEBUG1(a,b,c,d)
       
   269     #define __LOG_WRITE_FORMAT4_DEBUG1(a,b,c,d,e)         __INTERNAL_LOG_WRITE_FORMAT4_DEBUG1(a,b,c,d,e)
       
   270     #define __LOG_WRITE_FORMAT5_DEBUG1(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE_FORMAT5_DEBUG1(a,b,c,d,e,f)
       
   271     #define __LOG_WRITE_FORMAT6_DEBUG1(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE_FORMAT6_DEBUG1(a,b,c,d,e,f,g)
       
   272     #define __LOG_WRITE_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)
       
   273     #define __LOG_WRITE_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i)
       
   274 
       
   275     // 8-bit formatted strings
       
   276     #define __LOG_WRITE8_FORMAT1_DEBUG1(a,b)               __INTERNAL_LOG_WRITE8_FORMAT1_DEBUG1(a,b)
       
   277     #define __LOG_WRITE8_FORMAT2_DEBUG1(a,b,c)             __INTERNAL_LOG_WRITE8_FORMAT2_DEBUG1(a,b,c)
       
   278     #define __LOG_WRITE8_FORMAT3_DEBUG1(a,b,c,d)           __INTERNAL_LOG_WRITE8_FORMAT3_DEBUG1(a,b,c,d)
       
   279     #define __LOG_WRITE8_FORMAT4_DEBUG1(a,b,c,d,e)         __INTERNAL_LOG_WRITE8_FORMAT4_DEBUG1(a,b,c,d,e)
       
   280     #define __LOG_WRITE8_FORMAT5_DEBUG1(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE8_FORMAT5_DEBUG1(a,b,c,d,e,f)
       
   281     #define __LOG_WRITE8_FORMAT6_DEBUG1(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE8_FORMAT6_DEBUG1(a,b,c,d,e,f,g)
       
   282     #define __LOG_WRITE8_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE8_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)
       
   283     #define __LOG_WRITE8_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE8_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i)
       
   284 
       
   285     #define __LOG_HEX_DUMP_DEBUG1(a,buffer)                __INTERNAL_LOG_HEX_DUMP_DEBUG1(a,buffer)
       
   286 
       
   287     // =====================================================================
       
   288     // DEBUG2 Level Logging Macros
       
   289     // =====================================================================
       
   290     #define __LOG_WRITE_DEBUG2(a)                         __INTERNAL_LOG_WRITE_DEBUG2(a)
       
   291 
       
   292     #define __LOG_WRITE_FORMAT1_DEBUG2(a,b)               __INTERNAL_LOG_WRITE_FORMAT1_DEBUG2(a,b)
       
   293     #define __LOG_WRITE_FORMAT2_DEBUG2(a,b,c)             __INTERNAL_LOG_WRITE_FORMAT2_DEBUG2(a,b,c)
       
   294     #define __LOG_WRITE_FORMAT3_DEBUG2(a,b,c,d)           __INTERNAL_LOG_WRITE_FORMAT3_DEBUG2(a,b,c,d)
       
   295     #define __LOG_WRITE_FORMAT4_DEBUG2(a,b,c,d,e)         __INTERNAL_LOG_WRITE_FORMAT4_DEBUG2(a,b,c,d,e)
       
   296     #define __LOG_WRITE_FORMAT5_DEBUG2(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE_FORMAT5_DEBUG2(a,b,c,d,e,f)
       
   297     #define __LOG_WRITE_FORMAT6_DEBUG2(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE_FORMAT6_DEBUG2(a,b,c,d,e,f,g)
       
   298     #define __LOG_WRITE_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)
       
   299     #define __LOG_WRITE_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i)
       
   300 
       
   301     // 8-bit formatted strings
       
   302     #define __LOG_WRITE8_FORMAT1_DEBUG2(a,b)               __INTERNAL_LOG_WRITE8_FORMAT1_DEBUG2(a,b)
       
   303     #define __LOG_WRITE8_FORMAT2_DEBUG2(a,b,c)             __INTERNAL_LOG_WRITE8_FORMAT2_DEBUG2(a,b,c)
       
   304     #define __LOG_WRITE8_FORMAT3_DEBUG2(a,b,c,d)           __INTERNAL_LOG_WRITE8_FORMAT3_DEBUG2(a,b,c,d)
       
   305     #define __LOG_WRITE8_FORMAT4_DEBUG2(a,b,c,d,e)         __INTERNAL_LOG_WRITE8_FORMAT4_DEBUG2(a,b,c,d,e)
       
   306     #define __LOG_WRITE8_FORMAT5_DEBUG2(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE8_FORMAT5_DEBUG2(a,b,c,d,e,f)
       
   307     #define __LOG_WRITE8_FORMAT6_DEBUG2(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE8_FORMAT6_DEBUG2(a,b,c,d,e,f,g)
       
   308     #define __LOG_WRITE8_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE8_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)
       
   309     #define __LOG_WRITE8_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE8_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i)
       
   310 
       
   311     #define __LOG_HEX_DUMP_DEBUG2(a,buffer)                __INTERNAL_LOG_HEX_DUMP_DEBUG2(a,buffer)
       
   312 
       
   313     // =====================================================================
       
   314     // DEBUG3 Level Logging Macros
       
   315     // =====================================================================
       
   316     #define __LOG_WRITE_DEBUG3(a)                         __INTERNAL_LOG_WRITE_DEBUG3(a)
       
   317 
       
   318     #define __LOG_WRITE_FORMAT1_DEBUG3(a,b)               __INTERNAL_LOG_WRITE_FORMAT1_DEBUG3(a,b)
       
   319     #define __LOG_WRITE_FORMAT2_DEBUG3(a,b,c)             __INTERNAL_LOG_WRITE_FORMAT2_DEBUG3(a,b,c)
       
   320     #define __LOG_WRITE_FORMAT3_DEBUG3(a,b,c,d)           __INTERNAL_LOG_WRITE_FORMAT3_DEBUG3(a,b,c,d)
       
   321     #define __LOG_WRITE_FORMAT4_DEBUG3(a,b,c,d,e)         __INTERNAL_LOG_WRITE_FORMAT4_DEBUG3(a,b,c,d,e)
       
   322     #define __LOG_WRITE_FORMAT5_DEBUG3(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE_FORMAT5_DEBUG3(a,b,c,d,e,f)
       
   323     #define __LOG_WRITE_FORMAT6_DEBUG3(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE_FORMAT6_DEBUG3(a,b,c,d,e,f,g)
       
   324     #define __LOG_WRITE_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)
       
   325     #define __LOG_WRITE_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i)
       
   326 
       
   327     // 8-bit formatted strings
       
   328     #define __LOG_WRITE8_FORMAT1_DEBUG3(a,b)               __INTERNAL_LOG_WRITE8_FORMAT1_DEBUG3(a,b)
       
   329     #define __LOG_WRITE8_FORMAT2_DEBUG3(a,b,c)             __INTERNAL_LOG_WRITE8_FORMAT2_DEBUG3(a,b,c)
       
   330     #define __LOG_WRITE8_FORMAT3_DEBUG3(a,b,c,d)           __INTERNAL_LOG_WRITE8_FORMAT3_DEBUG3(a,b,c,d)
       
   331     #define __LOG_WRITE8_FORMAT4_DEBUG3(a,b,c,d,e)         __INTERNAL_LOG_WRITE8_FORMAT4_DEBUG3(a,b,c,d,e)
       
   332     #define __LOG_WRITE8_FORMAT5_DEBUG3(a,b,c,d,e,f)       __INTERNAL_LOG_WRITE8_FORMAT5_DEBUG3(a,b,c,d,e,f)
       
   333     #define __LOG_WRITE8_FORMAT6_DEBUG3(a,b,c,d,e,f,g)     __INTERNAL_LOG_WRITE8_FORMAT6_DEBUG3(a,b,c,d,e,f,g)
       
   334     #define __LOG_WRITE8_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)   __INTERNAL_LOG_WRITE8_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)
       
   335     #define __LOG_WRITE8_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i) __INTERNAL_LOG_WRITE8_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i)
       
   336 
       
   337     #define __LOG_HEX_DUMP_DEBUG3(a,buffer)                __INTERNAL_LOG_HEX_DUMP_DEBUG3(a,buffer)
       
   338 
       
   339     #define __LOG_LEAKED_OBJECTS                           __INTERNAL_LOG_LEAKED_OBJECTS
       
   340 
       
   341     // Allow logging only definitions and declarations
       
   342     #define __LOG_BLOCK(a)                          a
       
   343 #else // _DEBUG
       
   344 
       
   345     // =============
       
   346     // RELEASE BUILD
       
   347     // =============
       
   348 
       
   349     #define __LOG_DECLARATION
       
   350     #define __LOG_CONSTRUCT(a,b)
       
   351     #define __LOG_CLOSE_BETWEEN_WRITES
       
   352     #define __LOG_DESTRUCT
       
   353     #define __LOG_ENTER(a)
       
   354     #define __LOG_ENTER_SUPPRESS(a)
       
   355     #define __LOG_STATIC_ENTER(a,b)
       
   356     #define __LOG_STATIC_ENTER_SUPPRESS(a,b)
       
   357     #define __LOG_EXIT
       
   358     #define __LOG_EXIT_FORMAT1(fmt,a)
       
   359     #define __LOG_EXIT8_FORMAT1(fmt,a)
       
   360     #define __LOG_STATIC_EXIT
       
   361     #define __LOG_STATIC_EXIT_SUPPRESS
       
   362     #define __LOG_WRITE_ERROR(a)
       
   363     #define __LOG_WRITE_FORMAT1_ERROR(a,b)
       
   364     #define __LOG_WRITE_FORMAT2_ERROR(a,b,c)
       
   365     #define __LOG_WRITE_FORMAT3_ERROR(a,b,c,d)
       
   366     #define __LOG_WRITE_FORMAT4_ERROR(a,b,c,d,e)
       
   367     #define __LOG_WRITE_FORMAT5_ERROR(a,b,c,d,e,f)
       
   368     #define __LOG_WRITE_FORMAT6_ERROR(a,b,c,d,e,f,g)
       
   369     #define __LOG_WRITE_FORMAT7_ERROR(a,b,c,d,e,f,g,h)
       
   370     #define __LOG_WRITE_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i)
       
   371     #define __LOG_WRITE8_FORMAT1_ERROR(a,b)
       
   372     #define __LOG_WRITE8_FORMAT2_ERROR(a,b,c)
       
   373     #define __LOG_WRITE8_FORMAT3_ERROR(a,b,c,d)
       
   374     #define __LOG_WRITE8_FORMAT4_ERROR(a,b,c,d,e)
       
   375     #define __LOG_WRITE8_FORMAT5_ERROR(a,b,c,d,e,f)
       
   376     #define __LOG_WRITE8_FORMAT6_ERROR(a,b,c,d,e,f,g)
       
   377     #define __LOG_WRITE8_FORMAT7_ERROR(a,b,c,d,e,f,g,h)
       
   378     #define __LOG_WRITE8_FORMAT8_ERROR(a,b,c,d,e,f,g,h,i)
       
   379     #define __LOG_HEX_DUMP_ERROR(a,buffer)
       
   380     #define __LOG_WRITE_INFO(a);
       
   381     #define __LOG_WRITE_FORMAT1_INFO(a,b)
       
   382     #define __LOG_WRITE_FORMAT2_INFO(a,b,c)
       
   383     #define __LOG_WRITE_FORMAT3_INFO(a,b,c,d)
       
   384     #define __LOG_WRITE_FORMAT4_INFO(a,b,c,d,e)
       
   385     #define __LOG_WRITE_FORMAT5_INFO(a,b,c,d,e,f)
       
   386     #define __LOG_WRITE_FORMAT6_INFO(a,b,c,d,e,f,g)
       
   387     #define __LOG_WRITE_FORMAT7_INFO(a,b,c,d,e,f,g,h)
       
   388     #define __LOG_WRITE_FORMAT8_INFO(a,b,c,d,e,f,g,h,i)
       
   389     #define __LOG_WRITE8_FORMAT1_INFO(a,b)
       
   390     #define __LOG_WRITE8_FORMAT2_INFO(a,b,c)
       
   391     #define __LOG_WRITE8_FORMAT3_INFO(a,b,c,d)
       
   392     #define __LOG_WRITE8_FORMAT4_INFO(a,b,c,d,e)
       
   393     #define __LOG_WRITE8_FORMAT5_INFO(a,b,c,d,e,f)
       
   394     #define __LOG_WRITE8_FORMAT6_INFO(a,b,c,d,e,f,g)
       
   395     #define __LOG_WRITE8_FORMAT7_INFO(a,b,c,d,e,f,g,h)
       
   396     #define __LOG_WRITE8_FORMAT8_INFO(a,b,c,d,e,f,g,h,i)
       
   397     #define __LOG_HEX_DUMP_INFO(a,buffer)
       
   398     #define __LOG_WRITE_DEBUG1(a);
       
   399     #define __LOG_WRITE_FORMAT1_DEBUG1(a,b)
       
   400     #define __LOG_WRITE_FORMAT2_DEBUG1(a,b,c)
       
   401     #define __LOG_WRITE_FORMAT3_DEBUG1(a,b,c,d)
       
   402     #define __LOG_WRITE_FORMAT4_DEBUG1(a,b,c,d,e)
       
   403     #define __LOG_WRITE_FORMAT5_DEBUG1(a,b,c,d,e,f)
       
   404     #define __LOG_WRITE_FORMAT6_DEBUG1(a,b,c,d,e,f,g)
       
   405     #define __LOG_WRITE_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)
       
   406     #define __LOG_WRITE_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i)
       
   407     #define __LOG_WRITE8_FORMAT1_DEBUG1(a,b)
       
   408     #define __LOG_WRITE8_FORMAT2_DEBUG1(a,b,c)
       
   409     #define __LOG_WRITE8_FORMAT3_DEBUG1(a,b,c,d)
       
   410     #define __LOG_WRITE8_FORMAT4_DEBUG1(a,b,c,d,e)
       
   411     #define __LOG_WRITE8_FORMAT5_DEBUG1(a,b,c,d,e,f)
       
   412     #define __LOG_WRITE8_FORMAT6_DEBUG1(a,b,c,d,e,f,g)
       
   413     #define __LOG_WRITE8_FORMAT7_DEBUG1(a,b,c,d,e,f,g,h)
       
   414     #define __LOG_WRITE8_FORMAT8_DEBUG1(a,b,c,d,e,f,g,h,i)
       
   415     #define __LOG_HEX_DUMP_DEBUG1(a,buffer)
       
   416     #define __LOG_WRITE_DEBUG2(a);
       
   417     #define __LOG_WRITE_FORMAT1_DEBUG2(a,b)
       
   418     #define __LOG_WRITE_FORMAT2_DEBUG2(a,b,c)
       
   419     #define __LOG_WRITE_FORMAT3_DEBUG2(a,b,c,d)
       
   420     #define __LOG_WRITE_FORMAT4_DEBUG2(a,b,c,d,e)
       
   421     #define __LOG_WRITE_FORMAT5_DEBUG2(a,b,c,d,e,f)
       
   422     #define __LOG_WRITE_FORMAT6_DEBUG2(a,b,c,d,e,f,g)
       
   423     #define __LOG_WRITE_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)
       
   424     #define __LOG_WRITE_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i)
       
   425     #define __LOG_WRITE8_FORMAT1_DEBUG2(a,b)
       
   426     #define __LOG_WRITE8_FORMAT2_DEBUG2(a,b,c)
       
   427     #define __LOG_WRITE8_FORMAT3_DEBUG2(a,b,c,d)
       
   428     #define __LOG_WRITE8_FORMAT4_DEBUG2(a,b,c,d,e)
       
   429     #define __LOG_WRITE8_FORMAT5_DEBUG2(a,b,c,d,e,f)
       
   430     #define __LOG_WRITE8_FORMAT6_DEBUG2(a,b,c,d,e,f,g)
       
   431     #define __LOG_WRITE8_FORMAT7_DEBUG2(a,b,c,d,e,f,g,h)
       
   432     #define __LOG_WRITE8_FORMAT8_DEBUG2(a,b,c,d,e,f,g,h,i)
       
   433     #define __LOG_HEX_DUMP_DEBUG2(a,buffer)
       
   434     #define __LOG_WRITE_DEBUG3(a);
       
   435     #define __LOG_WRITE_FORMAT1_DEBUG3(a,b)
       
   436     #define __LOG_WRITE_FORMAT2_DEBUG3(a,b,c)
       
   437     #define __LOG_WRITE_FORMAT3_DEBUG3(a,b,c,d)
       
   438     #define __LOG_WRITE_FORMAT4_DEBUG3(a,b,c,d,e)
       
   439     #define __LOG_WRITE_FORMAT5_DEBUG3(a,b,c,d,e,f)
       
   440     #define __LOG_WRITE_FORMAT6_DEBUG3(a,b,c,d,e,f,g)
       
   441     #define __LOG_WRITE_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)
       
   442     #define __LOG_WRITE_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i)
       
   443     #define __LOG_WRITE8_FORMAT1_DEBUG3(a,b)
       
   444     #define __LOG_WRITE8_FORMAT2_DEBUG3(a,b,c)
       
   445     #define __LOG_WRITE8_FORMAT3_DEBUG3(a,b,c,d)
       
   446     #define __LOG_WRITE8_FORMAT4_DEBUG3(a,b,c,d,e)
       
   447     #define __LOG_WRITE8_FORMAT5_DEBUG3(a,b,c,d,e,f)
       
   448     #define __LOG_WRITE8_FORMAT6_DEBUG3(a,b,c,d,e,f,g)
       
   449     #define __LOG_WRITE8_FORMAT7_DEBUG3(a,b,c,d,e,f,g,h)
       
   450     #define __LOG_WRITE8_FORMAT8_DEBUG3(a,b,c,d,e,f,g,h,i)
       
   451     #define __LOG_HEX_DUMP_DEBUG3(a,buffer)
       
   452     #define __LOG_LEAKED_OBJECTS
       
   453     // Allow logging only definitions and declarations
       
   454     #define __LOG_BLOCK(a)
       
   455 
       
   456 #endif  // _DEBUG
       
   457 
       
   458 #endif  // _DEBUG_LOG_MACROS_H_
       
   459 
       
   460 // END FILE DebugLogMacros.h
       
   461