1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftdebug.h                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    Debugging and logging component (specification).                     */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/*  Copyright 1996-2002, 2004, 2006-2009, 2013 by                          */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  IMPORTANT: A description of FreeType's debugging support can be        */
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*             found in `docs/DEBUG.TXT'.  Read it if you need to use or   */
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*             understand this code.                                       */
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTDEBUG_H__
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTDEBUG_H__
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_CONFIG_CONFIG_H
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* is already defined; this simplifies the following #ifdefs            */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                      */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_TRACE
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef  FT_DEBUG_LEVEL_ERROR
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_DEBUG_LEVEL_ERROR
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Define the trace enums as well as the trace levels array when they    */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* are needed.                                                           */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_TRACE
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE_DEF( x )  trace_ ## x ,
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* defining the enumeration */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  FT_Trace_
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_TRACE_H
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    trace_count
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_Trace;
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  extern int  ft_trace_levels[trace_count];
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_TRACE_DEF
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_DEBUG_LEVEL_TRACE */
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Define the FT_TRACE macro                                             */
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* IMPORTANT!                                                            */
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* value before using any TRACE macro.                                   */
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_TRACE
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE( level, varformat )                      \
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          do                                              \
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          {                                               \
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            if ( ft_trace_levels[FT_COMPONENT] >= level ) \
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              FT_Message varformat;                       \
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          } while ( 0 )
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else /* !FT_DEBUG_LEVEL_TRACE */
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
950a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_TRACE( level, varformat )  do { } while ( 0 )      /* nothing */
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_DEBUG_LEVEL_TRACE */
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Trace_Get_Count                                                 */
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Return the number of available trace components.                   */
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The number of trace components.  0 if FreeType 2 is not built with */
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_DEBUG_LEVEL_TRACE definition.                                   */
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This function may be useful if you want to access elements of      */
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    the internal `ft_trace_levels' array by an index.                  */
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE( FT_Int )
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Count( void );
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Function>                                                            */
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    FT_Trace_Get_Name                                                  */
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Return the name of a trace component.                              */
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Input>                                                               */
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The index of the trace component.                                  */
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Return>                                                              */
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The name of the trace component.  This is a statically allocated   */
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    C string, so do not free it after use.  NULL if FreeType 2 is not  */
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    built with FT_DEBUG_LEVEL_TRACE definition.                        */
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    Use @FT_Trace_Get_Count to get the number of available trace       */
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    components.                                                        */
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This function may be useful if you want to control FreeType 2's    */
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    debug level in your application.                                   */
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE( const char * )
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Name( FT_Int  idx );
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* You need two opening and closing parentheses!                         */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Example: FT_TRACE0(( "Value is %i", foo ))                            */
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Output of the FT_TRACEX macros is sent to stderr.                     */
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE0( varformat )  FT_TRACE( 0, varformat )
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE1( varformat )  FT_TRACE( 1, varformat )
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE2( varformat )  FT_TRACE( 2, varformat )
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE3( varformat )  FT_TRACE( 3, varformat )
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE4( varformat )  FT_TRACE( 4, varformat )
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE5( varformat )  FT_TRACE( 5, varformat )
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE6( varformat )  FT_TRACE( 6, varformat )
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE7( varformat )  FT_TRACE( 7, varformat )
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Define the FT_ERROR macro.                                            */
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Output of this macro is sent to stderr.                               */
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_ERROR
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERROR( varformat )  FT_Message  varformat
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else  /* !FT_DEBUG_LEVEL_ERROR */
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
1810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_ERROR( varformat )  do { } while ( 0 )      /* nothing */
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_DEBUG_LEVEL_ERROR */
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
188727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /* Define the FT_ASSERT and FT_THROW macros.  The call to `FT_Throw'     */
189727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /* makes it possible to easily set a breakpoint at this function.        */
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_ERROR
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ASSERT( condition )                                      \
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          do                                                        \
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          {                                                         \
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            if ( !( condition ) )                                   \
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              FT_Panic( "assertion failed on line %d of file %s\n", \
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                        __LINE__, __FILE__ );                       \
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          } while ( 0 )
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
203727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_THROW( e )                                   \
204727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease          ( FT_Throw( FT_ERR_CAT( FT_ERR_PREFIX, e ),   \
205727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                      __LINE__,                         \
206727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease                      __FILE__ )                      | \
207727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease            FT_ERR_CAT( FT_ERR_PREFIX, e )            )
208727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else /* !FT_DEBUG_LEVEL_ERROR */
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
2110a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_ASSERT( condition )  do { } while ( 0 )
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
213727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#define FT_THROW( e )  FT_ERR_CAT( FT_ERR_PREFIX, e )
214727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_DEBUG_LEVEL_ERROR */
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Define `FT_Message' and `FT_Panic' when needed.                       */
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_ERROR
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "stdio.h"  /* for vfprintf() */
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* print a message */
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE( void )
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Message( const char*  fmt,
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              ... );
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* print a message and exit */
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE( void )
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Panic( const char*  fmt,
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            ... );
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
238727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  /* report file name and line number of an error */
239727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_BASE( int )
240727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  FT_Throw( FT_Error     error,
241727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease            int          line,
242727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease            const char*  file );
243727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_DEBUG_LEVEL_ERROR */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE( void )
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  ft_debug_init( void );
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTDEBUG_H__ */
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
256