vrshoot

annotate libs/ft2static/freetype/internal/ftdebug.h @ 0:b2f14e535253

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Feb 2014 19:58:19 +0200
parents
children
rev   line source
nuclear@0 1 /***************************************************************************/
nuclear@0 2 /* */
nuclear@0 3 /* ftdebug.h */
nuclear@0 4 /* */
nuclear@0 5 /* Debugging and logging component (specification). */
nuclear@0 6 /* */
nuclear@0 7 /* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008, 2009 by */
nuclear@0 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
nuclear@0 9 /* */
nuclear@0 10 /* This file is part of the FreeType project, and may only be used, */
nuclear@0 11 /* modified, and distributed under the terms of the FreeType project */
nuclear@0 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
nuclear@0 13 /* this file you indicate that you have read the license and */
nuclear@0 14 /* understand and accept it fully. */
nuclear@0 15 /* */
nuclear@0 16 /* */
nuclear@0 17 /* IMPORTANT: A description of FreeType's debugging support can be */
nuclear@0 18 /* found in `docs/DEBUG.TXT'. Read it if you need to use or */
nuclear@0 19 /* understand this code. */
nuclear@0 20 /* */
nuclear@0 21 /***************************************************************************/
nuclear@0 22
nuclear@0 23
nuclear@0 24 #ifndef __FTDEBUG_H__
nuclear@0 25 #define __FTDEBUG_H__
nuclear@0 26
nuclear@0 27
nuclear@0 28 #include <ft2build.h>
nuclear@0 29 #include FT_CONFIG_CONFIG_H
nuclear@0 30 #include FT_FREETYPE_H
nuclear@0 31
nuclear@0 32
nuclear@0 33 FT_BEGIN_HEADER
nuclear@0 34
nuclear@0 35
nuclear@0 36 /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
nuclear@0 37 /* is already defined; this simplifies the following #ifdefs */
nuclear@0 38 /* */
nuclear@0 39 #ifdef FT_DEBUG_LEVEL_TRACE
nuclear@0 40 #undef FT_DEBUG_LEVEL_ERROR
nuclear@0 41 #define FT_DEBUG_LEVEL_ERROR
nuclear@0 42 #endif
nuclear@0 43
nuclear@0 44
nuclear@0 45 /*************************************************************************/
nuclear@0 46 /* */
nuclear@0 47 /* Define the trace enums as well as the trace levels array when they */
nuclear@0 48 /* are needed. */
nuclear@0 49 /* */
nuclear@0 50 /*************************************************************************/
nuclear@0 51
nuclear@0 52 #ifdef FT_DEBUG_LEVEL_TRACE
nuclear@0 53
nuclear@0 54 #define FT_TRACE_DEF( x ) trace_ ## x ,
nuclear@0 55
nuclear@0 56 /* defining the enumeration */
nuclear@0 57 typedef enum FT_Trace_
nuclear@0 58 {
nuclear@0 59 #include FT_INTERNAL_TRACE_H
nuclear@0 60 trace_count
nuclear@0 61
nuclear@0 62 } FT_Trace;
nuclear@0 63
nuclear@0 64
nuclear@0 65 /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
nuclear@0 66 extern int ft_trace_levels[trace_count];
nuclear@0 67
nuclear@0 68 #undef FT_TRACE_DEF
nuclear@0 69
nuclear@0 70 #endif /* FT_DEBUG_LEVEL_TRACE */
nuclear@0 71
nuclear@0 72
nuclear@0 73 /*************************************************************************/
nuclear@0 74 /* */
nuclear@0 75 /* Define the FT_TRACE macro */
nuclear@0 76 /* */
nuclear@0 77 /* IMPORTANT! */
nuclear@0 78 /* */
nuclear@0 79 /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */
nuclear@0 80 /* value before using any TRACE macro. */
nuclear@0 81 /* */
nuclear@0 82 /*************************************************************************/
nuclear@0 83
nuclear@0 84 #ifdef FT_DEBUG_LEVEL_TRACE
nuclear@0 85
nuclear@0 86 #define FT_TRACE( level, varformat ) \
nuclear@0 87 do \
nuclear@0 88 { \
nuclear@0 89 if ( ft_trace_levels[FT_COMPONENT] >= level ) \
nuclear@0 90 FT_Message varformat; \
nuclear@0 91 } while ( 0 )
nuclear@0 92
nuclear@0 93 #else /* !FT_DEBUG_LEVEL_TRACE */
nuclear@0 94
nuclear@0 95 #define FT_TRACE( level, varformat ) do { } while ( 0 ) /* nothing */
nuclear@0 96
nuclear@0 97 #endif /* !FT_DEBUG_LEVEL_TRACE */
nuclear@0 98
nuclear@0 99
nuclear@0 100 /*************************************************************************/
nuclear@0 101 /* */
nuclear@0 102 /* <Function> */
nuclear@0 103 /* FT_Trace_Get_Count */
nuclear@0 104 /* */
nuclear@0 105 /* <Description> */
nuclear@0 106 /* Return the number of available trace components. */
nuclear@0 107 /* */
nuclear@0 108 /* <Return> */
nuclear@0 109 /* The number of trace components. 0 if FreeType 2 is not built with */
nuclear@0 110 /* FT_DEBUG_LEVEL_TRACE definition. */
nuclear@0 111 /* */
nuclear@0 112 /* <Note> */
nuclear@0 113 /* This function may be useful if you want to access elements of */
nuclear@0 114 /* the internal `ft_trace_levels' array by an index. */
nuclear@0 115 /* */
nuclear@0 116 FT_BASE( FT_Int )
nuclear@0 117 FT_Trace_Get_Count( void );
nuclear@0 118
nuclear@0 119
nuclear@0 120 /*************************************************************************/
nuclear@0 121 /* */
nuclear@0 122 /* <Function> */
nuclear@0 123 /* FT_Trace_Get_Name */
nuclear@0 124 /* */
nuclear@0 125 /* <Description> */
nuclear@0 126 /* Return the name of a trace component. */
nuclear@0 127 /* */
nuclear@0 128 /* <Input> */
nuclear@0 129 /* The index of the trace component. */
nuclear@0 130 /* */
nuclear@0 131 /* <Return> */
nuclear@0 132 /* The name of the trace component. This is a statically allocated */
nuclear@0 133 /* C string, so do not free it after use. NULL if FreeType 2 is not */
nuclear@0 134 /* built with FT_DEBUG_LEVEL_TRACE definition. */
nuclear@0 135 /* */
nuclear@0 136 /* <Note> */
nuclear@0 137 /* Use @FT_Trace_Get_Count to get the number of available trace */
nuclear@0 138 /* components. */
nuclear@0 139 /* */
nuclear@0 140 /* This function may be useful if you want to control FreeType 2's */
nuclear@0 141 /* debug level in your application. */
nuclear@0 142 /* */
nuclear@0 143 FT_BASE( const char * )
nuclear@0 144 FT_Trace_Get_Name( FT_Int idx );
nuclear@0 145
nuclear@0 146
nuclear@0 147 /*************************************************************************/
nuclear@0 148 /* */
nuclear@0 149 /* You need two opening and closing parentheses! */
nuclear@0 150 /* */
nuclear@0 151 /* Example: FT_TRACE0(( "Value is %i", foo )) */
nuclear@0 152 /* */
nuclear@0 153 /* Output of the FT_TRACEX macros is sent to stderr. */
nuclear@0 154 /* */
nuclear@0 155 /*************************************************************************/
nuclear@0 156
nuclear@0 157 #define FT_TRACE0( varformat ) FT_TRACE( 0, varformat )
nuclear@0 158 #define FT_TRACE1( varformat ) FT_TRACE( 1, varformat )
nuclear@0 159 #define FT_TRACE2( varformat ) FT_TRACE( 2, varformat )
nuclear@0 160 #define FT_TRACE3( varformat ) FT_TRACE( 3, varformat )
nuclear@0 161 #define FT_TRACE4( varformat ) FT_TRACE( 4, varformat )
nuclear@0 162 #define FT_TRACE5( varformat ) FT_TRACE( 5, varformat )
nuclear@0 163 #define FT_TRACE6( varformat ) FT_TRACE( 6, varformat )
nuclear@0 164 #define FT_TRACE7( varformat ) FT_TRACE( 7, varformat )
nuclear@0 165
nuclear@0 166
nuclear@0 167 /*************************************************************************/
nuclear@0 168 /* */
nuclear@0 169 /* Define the FT_ERROR macro. */
nuclear@0 170 /* */
nuclear@0 171 /* Output of this macro is sent to stderr. */
nuclear@0 172 /* */
nuclear@0 173 /*************************************************************************/
nuclear@0 174
nuclear@0 175 #ifdef FT_DEBUG_LEVEL_ERROR
nuclear@0 176
nuclear@0 177 #define FT_ERROR( varformat ) FT_Message varformat
nuclear@0 178
nuclear@0 179 #else /* !FT_DEBUG_LEVEL_ERROR */
nuclear@0 180
nuclear@0 181 #define FT_ERROR( varformat ) do { } while ( 0 ) /* nothing */
nuclear@0 182
nuclear@0 183 #endif /* !FT_DEBUG_LEVEL_ERROR */
nuclear@0 184
nuclear@0 185
nuclear@0 186 /*************************************************************************/
nuclear@0 187 /* */
nuclear@0 188 /* Define the FT_ASSERT macro. */
nuclear@0 189 /* */
nuclear@0 190 /*************************************************************************/
nuclear@0 191
nuclear@0 192 #ifdef FT_DEBUG_LEVEL_ERROR
nuclear@0 193
nuclear@0 194 #define FT_ASSERT( condition ) \
nuclear@0 195 do \
nuclear@0 196 { \
nuclear@0 197 if ( !( condition ) ) \
nuclear@0 198 FT_Panic( "assertion failed on line %d of file %s\n", \
nuclear@0 199 __LINE__, __FILE__ ); \
nuclear@0 200 } while ( 0 )
nuclear@0 201
nuclear@0 202 #else /* !FT_DEBUG_LEVEL_ERROR */
nuclear@0 203
nuclear@0 204 #define FT_ASSERT( condition ) do { } while ( 0 )
nuclear@0 205
nuclear@0 206 #endif /* !FT_DEBUG_LEVEL_ERROR */
nuclear@0 207
nuclear@0 208
nuclear@0 209 /*************************************************************************/
nuclear@0 210 /* */
nuclear@0 211 /* Define `FT_Message' and `FT_Panic' when needed. */
nuclear@0 212 /* */
nuclear@0 213 /*************************************************************************/
nuclear@0 214
nuclear@0 215 #ifdef FT_DEBUG_LEVEL_ERROR
nuclear@0 216
nuclear@0 217 #include "stdio.h" /* for vfprintf() */
nuclear@0 218
nuclear@0 219 /* print a message */
nuclear@0 220 FT_BASE( void )
nuclear@0 221 FT_Message( const char* fmt,
nuclear@0 222 ... );
nuclear@0 223
nuclear@0 224 /* print a message and exit */
nuclear@0 225 FT_BASE( void )
nuclear@0 226 FT_Panic( const char* fmt,
nuclear@0 227 ... );
nuclear@0 228
nuclear@0 229 #endif /* FT_DEBUG_LEVEL_ERROR */
nuclear@0 230
nuclear@0 231
nuclear@0 232 FT_BASE( void )
nuclear@0 233 ft_debug_init( void );
nuclear@0 234
nuclear@0 235
nuclear@0 236 #if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */
nuclear@0 237
nuclear@0 238 /* We disable the warning `conditional expression is constant' here */
nuclear@0 239 /* in order to compile cleanly with the maximum level of warnings. */
nuclear@0 240 #pragma warning( disable : 4127 )
nuclear@0 241
nuclear@0 242 #endif /* _MSC_VER */
nuclear@0 243
nuclear@0 244
nuclear@0 245 FT_END_HEADER
nuclear@0 246
nuclear@0 247 #endif /* __FTDEBUG_H__ */
nuclear@0 248
nuclear@0 249
nuclear@0 250 /* END */