topical media & game development

talk show tell print

lib-of-vs-libs-free-type-2.1.4-include-freetype2-freetype-internal-ftdebug.h / h



  
************************************************************************

  
  /*                                                                         */
  /*  ftdebug.h                                                              */
  /*                                                                         */
  /*    Debugging and logging component (specification).                     */
  /*                                                                         */
  /*  Copyright 1996-2001, 2002 by                                           */
  /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  /*                                                                         */
  /*  This file is part of the FreeType project, and may only be used,       */
  /*  modified, and distributed under the terms of the FreeType project      */
  /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  /*  this file you indicate that you have read the license and              */
  /*  understand and accept it fully.                                        */
  /*                                                                         */
  /*                                                                         */
  /*  IMPORTANT: A description of FreeType's debugging support can be        */
  /*             found in "docs/DEBUG.TXT".  Read it if you need to use or   */
  /*             understand this code.                                       */
  /*                                                                         */
  
************************************************************************

  
  
  ifndef __FTDEBUG_H__
  define __FTDEBUG_H__
  
  include <ft2build.h>
  include FT_CONFIG_CONFIG_H
  
  FT_BEGIN_HEADER
  
    /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
    /* is already defined; this simplifies the following #ifdefs            */
    /*                                                                      */
  ifdef FT_DEBUG_LEVEL_TRACE
  #undef  FT_DEBUG_LEVEL_ERROR
  define FT_DEBUG_LEVEL_ERROR
  endif
  
    
**********************************************************************

  
    /*                                                                       */
    /* Define the trace enums as well as the trace levels array when they    */
    /* are needed.                                                           */
    /*                                                                       */
    
**********************************************************************

  
  
  ifdef FT_DEBUG_LEVEL_TRACE
  
  define FT_TRACE_DEF( x )  trace_ ## x ,
  
    /* defining the enumeration */
    typedef enum
    {
  include FT_INTERNAL_TRACE_H
      trace_count
  
    } FT_Trace;
  
    /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
    extern int  ft_trace_levels[trace_count];
  
  #undef FT_TRACE_DEF
  
  endif /* FT_DEBUG_LEVEL_TRACE */
  
    
**********************************************************************

  
    /*                                                                       */
    /* Define the FT_TRACE macro                                             */
    /*                                                                       */
    /* IMPORTANT!                                                            */
    /*                                                                       */
    /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */
    /* value before using any TRACE macro.                                   */
    /*                                                                       */
    
**********************************************************************

  
  
  ifdef FT_DEBUG_LEVEL_TRACE
  
  define FT_TRACE( level, varformat )                      \
            do                                              \
            {                                               \
              if ( ft_trace_levels[FT_COMPONENT] >= level ) \
                FT_Message varformat;                       \
            } while ( 0 )
  
  else /* !FT_DEBUG_LEVEL_TRACE */
  
  define FT_TRACE( level, varformat )  do ; while ( 0 )      /* nothing */
  
  endif /* !FT_DEBUG_LEVEL_TRACE */
  
    
**********************************************************************

  
    /*                                                                       */
    /* You need two opening resp. closing parentheses!                       */
    /*                                                                       */
    /* Example: FT_TRACE0(( "Value is \%i", foo ))                            */
    /*                                                                       */
    
**********************************************************************

  
  
  define FT_TRACE0( varformat )  FT_TRACE( 0, varformat )
  define FT_TRACE1( varformat )  FT_TRACE( 1, varformat )
  define FT_TRACE2( varformat )  FT_TRACE( 2, varformat )
  define FT_TRACE3( varformat )  FT_TRACE( 3, varformat )
  define FT_TRACE4( varformat )  FT_TRACE( 4, varformat )
  define FT_TRACE5( varformat )  FT_TRACE( 5, varformat )
  define FT_TRACE6( varformat )  FT_TRACE( 6, varformat )
  define FT_TRACE7( varformat )  FT_TRACE( 7, varformat )
  
    
**********************************************************************

  
    /*                                                                       */
    /*  Define the FT_ERROR macro                                            */
    /*                                                                       */
    
**********************************************************************

  
  
  ifdef FT_DEBUG_LEVEL_ERROR
  
  define FT_ERROR( varformat )  FT_Message  varformat
  
  else  /* !FT_DEBUG_LEVEL_ERROR */
  
  define FT_ERROR( varformat )  do ; while ( 0 )      /* nothing */
  
  endif /* !FT_DEBUG_LEVEL_ERROR */
  
    
**********************************************************************

  
    /*                                                                       */
    /* Define the FT_ASSERT macro                                            */
    /*                                                                       */
    
**********************************************************************

  
  
  ifdef FT_DEBUG_LEVEL_ERROR
  
  define FT_ASSERT( condition )                                      \
            do                                                        \
            {                                                         \
              if ( !( condition ) )                                   \
                FT_Panic( "assertion failed on line \%d of file \%s\n", \
                          __LINE__, __FILE__ );                       \
            } while ( 0 )
  
  else /* !FT_DEBUG_LEVEL_ERROR */
  
  define FT_ASSERT( condition )  do ; while ( 0 )
  
  endif /* !FT_DEBUG_LEVEL_ERROR */
  
    
**********************************************************************

  
    /*                                                                       */
    /*  Define 'FT_Message' and 'FT_Panic' when needed                       */
    /*                                                                       */
    
**********************************************************************

  
  
  ifdef FT_DEBUG_LEVEL_ERROR
  
  include <stdio.h>  /* for vprintf() */
  
    /* print a message */
    FT_EXPORT( void )
    FT_Message( const char*  fmt, ... );
  
    /* print a message and exit */
    FT_EXPORT( void )
    FT_Panic( const char*  fmt, ... );
  
  endif /* FT_DEBUG_LEVEL_ERROR */
  
    FT_BASE( void )
    ft_debug_init( void );
  
  if defined( _MSC_VER )      /* Visual C++ (and Intel C++) */
  
    /* we disable the warning `conditional expression is constant' here */
    /* in order to compile cleanly with the maximum level of warnings   */
  #pragma warning( disable : 4127 )
  
  endif /* _MSC_VER */
  
  FT_END_HEADER
  
  endif /* __FTDEBUG_H__ */
  
  /* END */
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.