1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftdebug.c                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    Debugging and logging component (body).                              */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/*  Copyright 1996-2001, 2002, 2004, 2008, 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
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* This component contains various macros and functions used to ease the */
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* debugging of the FreeType engine.  Its main purpose is in assertion   */
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* checking, tracing, and error detection.                               */
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* There are now three debugging modes:                                  */
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* - trace mode                                                          */
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   Error and trace messages are sent to the log file (which can be the */
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   standard error output).                                             */
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* - error mode                                                          */
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   Only error messages are generated.                                  */
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* - release mode:                                                       */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   No error message is sent or generated.  The code is free from any   */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   debugging parts.                                                    */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_DEBUG_H
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#ifdef FT_DEBUG_LEVEL_ERROR
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* documentation is in ftdebug.h */
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( void )
54a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  FT_Message( const char*  fmt,
55a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang              ... )
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_list  ap;
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_start( ap, fmt );
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    vfprintf( stderr, fmt, ap );
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_end( ap );
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* documentation is in ftdebug.h */
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( void )
69a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  FT_Panic( const char*  fmt,
70a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang            ... )
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_list  ap;
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_start( ap, fmt );
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    vfprintf( stderr, fmt, ap );
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    va_end( ap );
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    exit( EXIT_FAILURE );
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
82a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
83a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* documentation is in ftdebug.h */
84a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
85a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  FT_BASE_DEF( int )
86a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  FT_Throw( FT_Error     error,
87a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang            int          line,
88a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang            const char*  file )
89a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  {
90a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_UNUSED( error );
91a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_UNUSED( line );
92a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_UNUSED( file );
93a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
94a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    return 0;
95a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  }
96a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_DEBUG_LEVEL_ERROR */
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_DEBUG_LEVEL_TRACE
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* array of trace levels, initialized to 0 */
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  int  ft_trace_levels[trace_count];
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* define array of trace toggle names */
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_TRACE_DEF( x )  #x ,
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  static const char*  ft_trace_toggles[trace_count + 1] =
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_TRACE_H
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    NULL
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  };
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_TRACE_DEF
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* documentation is in ftdebug.h */
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( FT_Int )
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Count( void )
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return trace_count;
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* documentation is in ftdebug.h */
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( const char * )
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Name( FT_Int  idx )
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    int  max = FT_Trace_Get_Count();
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    if ( idx < max )
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      return ft_trace_toggles[idx];
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    else
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      return NULL;
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Initialize the tracing sub-system.  This is done by retrieving the    */
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* value of the `FT2_DEBUG' environment variable.  It must be a list of  */
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* toggles, separated by spaces, `;', or `,'.  Example:                  */
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    export FT2_DEBUG="any:3 memory:7 stream:5"                         */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* This requests that all levels be set to 3, except the trace level for */
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* the memory and stream components which are set to 7 and 5,            */
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* respectively.                                                         */
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* See the file <include/freetype/internal/fttrace.h> for details of the */
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* available toggle names.                                               */
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* The level must be between 0 and 7; 0 means quiet (except for serious  */
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* runtime errors), and 7 means _very_ verbose.                          */
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( void )
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  ft_debug_init( void )
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    const char*  ft2_debug = getenv( "FT2_DEBUG" );
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    if ( ft2_debug )
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    {
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      const char*  p = ft2_debug;
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      const char*  q;
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      for ( ; *p; p++ )
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      {
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        /* skip leading whitespace and separators */
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' )
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          continue;
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        /* read toggle name, followed by ':' */
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        q = p;
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        while ( *p && *p != ':' )
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          p++;
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
184a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang        if ( !*p )
185a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          break;
186a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        if ( *p == ':' && p > q )
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        {
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          FT_Int  n, i, len = (FT_Int)( p - q );
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          FT_Int  level = -1, found = -1;
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          for ( n = 0; n < trace_count; n++ )
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          {
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            const char*  toggle = ft_trace_toggles[n];
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            for ( i = 0; i < len; i++ )
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            {
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              if ( toggle[i] != q[i] )
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                break;
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            }
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            if ( i == len && toggle[i] == 0 )
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            {
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              found = n;
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              break;
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            }
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          }
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          /* read level */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          p++;
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          if ( *p )
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          {
215a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang            level = *p - '0';
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            if ( level < 0 || level > 7 )
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              level = -1;
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          }
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          if ( found >= 0 && level >= 0 )
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          {
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            if ( found == trace_any )
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            {
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              /* special case for `any' */
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              for ( n = 0; n < trace_count; n++ )
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                ft_trace_levels[n] = level;
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            }
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project            else
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project              ft_trace_levels[found] = level;
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project          }
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        }
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      }
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    }
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else  /* !FT_DEBUG_LEVEL_TRACE */
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( void )
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  ft_debug_init( void )
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* nothing */
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( FT_Int )
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Count( void )
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return 0;
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_BASE_DEF( const char * )
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_Trace_Get_Name( FT_Int  idx )
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UNUSED( idx );
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    return NULL;
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_DEBUG_LEVEL_TRACE */
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
267