os/graphics/graphicscomposition/openwfcompositionengine/common/src/owfdebug.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /* Copyright (c) 2009 The Khronos Group Inc.
     2  * Portions copyright (c) 2009-2010  Nokia Corporation and/or its subsidiary(-ies)
     3  *
     4  * Permission is hereby granted, free of charge, to any person obtaining a
     5  * copy of this software and/or associated documentation files (the
     6  * "Materials"), to deal in the Materials without restriction, including
     7  * without limitation the rights to use, copy, modify, merge, publish,
     8  * distribute, sublicense, and/or sell copies of the Materials, and to
     9  * permit persons to whom the Materials are furnished to do so, subject to
    10  * the following conditions:
    11  *
    12  * The above copyright notice and this permission notice shall be included
    13  * in all copies or substantial portions of the Materials.
    14  *
    15  * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    21  * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
    22  */
    23 
    24 
    25 #include "owfdebug.h"
    26 #ifdef DEBUG_LOG
    27 
    28 #include <pthread.h>
    29 
    30 #include "owfdebug.h"
    31 #include "owftypes.h"
    32 #include "owfdebug.h"
    33 
    34 #ifdef __cplusplus
    35 extern "C" {
    36 #endif
    37 
    38 
    39 #ifndef OWF_DEBUG_PREFIX
    40 #define OWF_DEBUG_PREFIX "OWF: "
    41 #endif
    42 int xprintf(const char* aFormat, ...);
    43 
    44 /* This pair of macros are a standard trick 
    45  * to convert the content of a macro into a string after expansion
    46  * TOSTR causes the macro to be expanded, then TOSTR2 applies quotes.
    47  * This is used because .MMP MACRO does not consistantly process macro value quotes.
    48  */
    49 #define TOSTR2(x)    #x
    50 #define TOSTR(x)    TOSTR2(x)
    51 
    52 
    53 /* Filters debug messages based on filename or function name.
    54  * @param symbol the file or function name string generated by predefined macros
    55  * @param symlen the length of the string (calculated at compile-time)
    56  * Defining DEBUG_LOG enables all log file output. Do this in the make or .MMP file
    57  * The file output can be filtered by filename or by function name:
    58  * Defining DEBUG_FUNCTION=fnname will filter for all functions STARTING with the name fnname
    59  * Defining DEBUG_FILE=filename will filter for all functions ending with the name filename
    60  * 
    61  * These filters utilise the predefined macros __FILE__ and __FUNCTION__ which are defined in current standards,
    62  * but may contain platform-specific features such as path names, or linkage decoration,
    63  * so the filter-string may require some platform-specific tuning.
    64  * 
    65  * Note that use of #pragma message may also be platform-specific, and is only present in order to 
    66  * print clues about the format of the __FILE__ and __FUNCTION__ macros.
    67  */
    68 int  OWF_Debug_DoLog(const char* symbol,int symlen)
    69     {
    70 #if defined(DEBUG_LOG_FILE)
    71 #pragma message ("DEBUG filter DEBUG_FILE= '" TOSTR(DEBUG_FILE) "' eg= '" __FILE__ "'")
    72     if (symlen>=(sizeof(TOSTR(DEBUG_FILE))-1))
    73         {
    74         return strncmp( symbol+symlen-(sizeof(TOSTR(DEBUG_FILE))-1) , TOSTR(DEBUG_FILE) , sizeof(TOSTR(DEBUG_FILE))-1 )==0;
    75         }
    76     else
    77         return 0;
    78 #elif defined(DEBUG_LOG_FUNCTION)
    79 #pragma message("DEBUG filter DEBUG_FUNCTION= '" TOSTR(DEBUG_FUNCTION) "' eg= '" __FUNCTION__ "'")
    80     if (symlen>=(sizeof(TOSTR(DEBUG_FILE))-1))
    81         {
    82         return(strncmp(TOSTR(DEBUG_FUNCTION),symbol,sizeof(TOSTR(DEBUG_FUNCTION))-1)==0);
    83         }
    84     else
    85         return 0;
    86 #else
    87     (void)symbol;
    88     (void)symlen;
    89     return 1;
    90 #endif
    91 
    92     }
    93 
    94 void OWF_Debug_Print(const char* format, ...)
    95 {    
    96     va_list                 ap;
    97     char                    __spager[512];
    98 
    99     va_start(ap, format);
   100     __spager[0] = 0;
   101     vsnprintf(__spager, 511, format, ap);
   102     xprintf("%s %s\n", OWF_DEBUG_PREFIX, __spager);
   103     va_end(ap);
   104 }
   105 
   106 
   107 void OWF_Debug_Trace(const char* fmt, ...)
   108 {
   109     fmt = fmt;
   110 }
   111 
   112 
   113 
   114 void OWF_Debug_TraceIndent()
   115 {
   116 }
   117 
   118 void OWF_Debug_TraceUndent()
   119 {
   120 }
   121 
   122 void OWF_Debug_TraceEnter(const char* func)
   123 {
   124     if (func)
   125     {
   126         OWF_Debug_Trace("ENTER %s", func);
   127     }
   128     OWF_Debug_TraceIndent();
   129 }
   130 
   131 void OWF_Debug_TraceExit(const char* func)
   132 {
   133     OWF_Debug_TraceUndent();
   134     if (func)
   135     {
   136         OWF_Debug_Trace("EXIT %s", func);
   137     }
   138 }
   139 
   140 
   141 #ifdef __cplusplus
   142 }
   143 #endif
   144 
   145 #else
   146 
   147 
   148 #endif /* DEBUG */