/***************************************************************************/
/*                                                                         */
/*  ftdebug.h                                                              */
/*                                                                         */
/*    Debugging and logging component (specification).                     */
/*                                                                         */
/*  Copyright 1996-1999 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.                                        */
/*                                                                         */
/***************************************************************************/


  /*************************************************************************/
  /*                                                                       */
  /* This component contains various macros and functions used to ease the */
  /* debugging of the FreeType engine.  Its main purpose is in assertion   */
  /* checking, tracing, and error detection.                               */
  /*                                                                       */
  /* There are now three debugging modes:                                  */
  /*                                                                       */
  /* - trace mode                                                          */
  /*                                                                       */
  /*   Error and trace messages are sent to the log file (which can be the */
  /*   standard error output).                                             */
  /*                                                                       */
  /* - error mode                                                          */
  /*                                                                       */
  /*   Only error messages are generated.                                  */
  /*                                                                       */
  /* - release mode:                                                       */
  /*                                                                       */
  /*   No error message is sent nor generated.  The code is free from any  */
  /*   debugging parts.                                                    */
  /*                                                                       */
  /*************************************************************************/


#ifndef FTDEBUG_H
#define FTDEBUG_H

#include <ftconfig.h>   /* for FT_DEBUG_LEVEL_TRACE, FT_DEBUG_LEVEL_ERROR */


#ifdef __cplusplus
  extern "C" {
#endif


#ifdef FT_DEBUG_LEVEL_TRACE


  typedef enum  FT_Trace_
  {
    trace_any = 0,

    /* first, define an enum for each common component */
    trace_io,        /* in ftsys */
    trace_memory,    /* in ftsys */
    trace_sync,      /* in ftsys */
    trace_stream,    /* stream manager - see ftstream.c */
    trace_calc,      /* computations   - see ftcalc.c   */
    trace_raster,    /* raster         - see ftraster.c */
    trace_list,      /* list manager   - see ftlist.c   */
    trace_objs,      /* base objects   - see ftobjs.c   */

    /* then define an enum for each TrueType driver component */
    trace_ttobjs,
    trace_ttload,
    trace_ttgload,
    trace_ttinterp,
    trace_ttcmap,
    trace_ttextend,
    trace_ttdriver,

    /* define an enum for each TrueDoc driver component */
    trace_tdobjs,
    trace_tdload,
    trace_tdgload,
    trace_tdhint,
    trace_tddriver,

    /* define an enum for each Type1 driver component */
    trace_t1objs,
    trace_t1load,
    trace_t1gload,
    trace_t1hint,
    trace_t1driver,

    /* other trace levels */
	trace_init,

    /* the last level must always be `trace_max' */
    trace_max

  } FT_Trace;

  extern char  ft_trace_levels[trace_max];


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


#define FT_TRACE( level, varformat )                       \
          if ( ft_trace_levels[FT_COMPONENT] >= level )  \
            FT_Message##varformat


  EXPORT_DEF
  void  FT_SetTraceLevel( FT_Trace  component,
                          char      level );


#elif defined( FT_DEBUG_LEVEL_ERROR )


#define FT_TRACE( level, varformat )  /* nothing */


#else  /* release mode */


#define FT_Assert( condition )  /* nothing */

#define FT_TRACE( level, varformat )      /* nothing */
#define FT_ERROR( varformat )             /* nothing */


#endif /* FT_DEBUG_LEVEL_TRACE, FT_DEBUG_LEVEL_ERROR */


  /*************************************************************************/
  /*                                                                       */
  /* Define macros and functions that are common to the debug and trace    */
  /* modes.                                                                */
  /*                                                                       */
  /* You need vprintf() to be able to compile ttdebug.c.                   */
  /*                                                                       */
  /*************************************************************************/

#if defined( FT_DEBUG_LEVEL_TRACE ) || defined( FT_DEBUG_LEVEL_ERROR )


#include "stdio.h"  /* for vprintf() */

#define FT_Assert( condition )  \
       if ( !(condition) )      \
         FT_Panic( "assertion failed on line %d of file %s\n", __LINE__, __FILE__ );

  extern void  FT_Message( const char*  fmt, ... );

  /* print a message and exit */
  extern void  FT_Panic  ( const char*  fmt, ... );

#define FT_ERROR( varformat )  FT_Message##varformat


#endif /* FT_DEBUG_LEVEL_TRACE || FT_DEBUG_LEVEL_ERROR */


#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 )


#ifdef __cplusplus
  }
#endif


#endif /* FTDEBUG_H */


/* END */
