Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/*******************************************************************
2
 *
3
 *  ttdebug.h
4
 *
5
 *    Debugging and Logging component (specification)
6
 *
7
 *  Copyright 1996-1999 by
8
 *  David Turner, Robert Wilhelm, and Werner Lemberg.
9
 *
10
 *  This file is part of the FreeType project, and may only be used
11
 *  modified and distributed under the terms of the FreeType project
12
 *  license, LICENSE.TXT.  By continuing to use, modify, or distribute
13
 *  this file you indicate that you have read the license and
14
 *  understand and accept it fully.
15
 *
16
 *
17
 *  This component contains various macros and functions used to
18
 *  ease the debugging of the FreeType engine. Its main purpose
19
 *  is in assertion checking, tracing, and error detection.
20
 *
21
 *  There are now three debugging modes:
22
 *
23
 *  - trace mode:
24
 *
25
 *       Error and trace messages are sent to the log file
26
 *       (which can be the standard error output).  Define
27
 *       DEBUG_LEVEL_TRACE to enable this mode.
28
 *
29
 *  - error mode:
30
 *
31
 *       Only error messages are generated.  Define
32
 *       DEBUG_LEVEL_ERROR to enable this mode.
33
 *
34
 *  - release mode:
35
 *
36
 *       Error messages are neither sent nor generated. The code is
37
 *       free from any debugging parts.
38
 *
39
 ******************************************************************/
40
 
41
#ifndef TTDEBUG_H
42
#define TTDEBUG_H
43
 
44
#include "ttconfig.h"
45
#include "tttypes.h"
46
 
47
 
48
#ifdef __cplusplus
49
  extern "C" {
50
#endif
51
 
52
 
53
#if defined( DEBUG_LEVEL_TRACE )
54
 
55
  typedef enum Trace_Component_
56
  {
57
    trace_any = 0,
58
    trace_api,
59
    trace_interp,
60
    trace_load,
61
    trace_gload,
62
    trace_memory,
63
    trace_file,
64
    trace_mutex,
65
    trace_cache,
66
    trace_calc,
67
    trace_cmap,
68
    trace_extend,
69
    trace_objs,
70
    trace_raster,
71
 
72
    trace_bitmap,
73
    trace_max
74
 
75
  } Trace_Component;
76
 
77
 
78
  /* Here we define an array to hold the trace levels per component. */
79
  /* Since it is globally defined, all array members are set to 0.   */
80
  /* You should set the values in this array either in your program  */
81
  /* or with your debugger.                                          */
82
  /*                                                                 */
83
  /* Currently, up to eight levels (PTRACE0-PTRACE7, see below) are  */
84
  /* used in some parts of the engine.                               */
85
  /*                                                                 */
86
  /* For example, to have all tracing messages in the raster         */
87
  /* component, say                                                  */
88
  /*                                                                 */
89
  /*   #define DEBUG_LEVEL_TRACE                                     */
90
  /*   #include "ttdebug.h"                                          */
91
  /*                                                                 */
92
  /*   ...                                                           */
93
  /*   set_tt_trace_levels( trace_raster, 7 )                        */
94
  /*                                                                 */
95
  /* in your code before initializing the FreeType engine.           */
96
  /*                                                                 */
97
  /* Maybe it is better to define DEBUG_LEVEL_TRACE in ttconfig.h... */
98
 
99
  extern char  tt_trace_levels[trace_max];
100
 
101
  /* IMPORTANT:                                                 */
102
  /*                                                            */
103
  /*  Each component must define the macro TT_COMPONENT         */
104
  /*  to a valid Trace_Component value before using any         */
105
  /*  PTRACEx macro.                                            */
106
  /*                                                            */
107
 
108
#define  PTRACE( level, varformat )  \
109
         if ( tt_trace_levels[TT_COMPONENT] >= level ) TT_Message##varformat
110
 
111
#elif defined( DEBUG_LEVEL_ERROR )
112
 
113
#define  PTRACE( level, varformat )  /* nothing */
114
 
115
#else  /* RELEASE MODE */
116
 
117
#define TT_Assert( condition, action )  /* nothing */
118
 
119
#define PTRACE( level, varformat )      /* nothing */
120
#define PERROR( varformat )             /* nothing */
121
#define PANIC( varformat )              /* nothing */
122
 
123
#endif
124
 
125
 
126
/************************************************************************/
127
/*                                                                      */
128
/*  Define macros and fuctions that are common to the debug and trace   */
129
/*  modes.                                                              */
130
/*                                                                      */
131
 
132
#if defined( DEBUG_LEVEL_TRACE ) || defined( DEBUG_LEVEL_ERROR )
133
 
134
 
135
#define TT_Assert( condition, action )  if ( !(condition) ) ( action )
136
 
137
  void  TT_Message( const String*  fmt, ... );
138
  void  TT_Panic  ( const String*  fmt, ... );
139
  /* print a message and exit */
140
 
141
  const String*  Cur_U_Line( void*  exec );
142
 
143
#define PERROR( varformat )  TT_Message##varformat
144
#define PANIC( varformat )   TT_Panic##varformat
145
 
146
#endif
147
 
148
#if defined( DEBUG_LEVEL_TRACE )
149
 
150
  void  set_tt_trace_levels( int  index, char  value );
151
 
152
#endif
153
 
154
 
155
#define  PTRACE0( varformat )  PTRACE( 0, varformat )
156
#define  PTRACE1( varformat )  PTRACE( 1, varformat )
157
#define  PTRACE2( varformat )  PTRACE( 2, varformat )
158
#define  PTRACE3( varformat )  PTRACE( 3, varformat )
159
#define  PTRACE4( varformat )  PTRACE( 4, varformat )
160
#define  PTRACE5( varformat )  PTRACE( 5, varformat )
161
#define  PTRACE6( varformat )  PTRACE( 6, varformat )
162
#define  PTRACE7( varformat )  PTRACE( 7, varformat )
163
 
164
 
165
#ifdef __cplusplus
166
  }
167
#endif
168
 
169
 
170
#endif /* TTDEBUG_H */