Edit

kc3-lang/freetype/include/fterrors.h

Branch :

  • Show log

    Commit

  • Author : Werner Lemberg
    Date : 2013-11-13 08:55:46
    Hash : fae38207
    Message : Simplify header file hierarchy. This large patch changes the header file directory layout from `include/freetype/...' to `include/...', effectively removing one level. Since the file `ft2build.h' is also located in `include' (and it stays there even after installation), all FreeType header files are now in a single directory. Applications that use (a) `freetype-config' or FreeType's `pkg-config' file to get the include directory for the compiler, and (b) the documented way for header inclusion like #include <ft2build.h> #include FT_FREETYPE_H ... don't need any change to the source code. * include/freetype/*: Move up to... * include/*: ... this directory. * builds/amiga/include/freetype/*: Move up to... * builds/amiga/include/*: ... this directory. */*: Essentially do `s@/freetype/@/@' where appropriate. * CMakeList.txt: Simplify. * builds/unix/freetype-config.in, builds/unix/freetype2.in: For `--cflags', return a single directory. * builds/unix/install.mk (install): No longer try to remove `cache' and `internal' subdirectories; instead, remove the `freetype' subdirectory.

  • include/fterrors.h
  • /***************************************************************************/
    /*                                                                         */
    /*  fterrors.h                                                             */
    /*                                                                         */
    /*    FreeType error code handling (specification).                        */
    /*                                                                         */
    /*  Copyright 1996-2002, 2004, 2007, 2013 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 special header file is used to define the handling of FT2        */
      /* enumeration constants.  It can also be used to generate error message */
      /* strings with a small macro trick explained below.                     */
      /*                                                                       */
      /* I - Error Formats                                                     */
      /* -----------------                                                     */
      /*                                                                       */
      /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
      /*   defined in ftoption.h in order to make the higher byte indicate     */
      /*   the module where the error has happened (this is not compatible     */
      /*   with standard builds of FreeType 2).  See the file `ftmoderr.h' for */
      /*   more details.                                                       */
      /*                                                                       */
      /*                                                                       */
      /* II - Error Message strings                                            */
      /* --------------------------                                            */
      /*                                                                       */
      /*   The error definitions below are made through special macros that    */
      /*   allow client applications to build a table of error message strings */
      /*   if they need it.  The strings are not included in a normal build of */
      /*   FreeType 2 to save space (most client applications do not use       */
      /*   them).                                                              */
      /*                                                                       */
      /*   To do so, you have to define the following macros before including  */
      /*   this file:                                                          */
      /*                                                                       */
      /*   FT_ERROR_START_LIST ::                                              */
      /*     This macro is called before anything else to define the start of  */
      /*     the error list.  It is followed by several FT_ERROR_DEF calls     */
      /*     (see below).                                                      */
      /*                                                                       */
      /*   FT_ERROR_DEF( e, v, s ) ::                                          */
      /*     This macro is called to define one single error.                  */
      /*     `e' is the error code identifier (e.g. FT_Err_Invalid_Argument).  */
      /*     `v' is the error numerical value.                                 */
      /*     `s' is the corresponding error string.                            */
      /*                                                                       */
      /*   FT_ERROR_END_LIST ::                                                */
      /*     This macro ends the list.                                         */
      /*                                                                       */
      /*   Additionally, you have to undefine __FTERRORS_H__ before #including */
      /*   this file.                                                          */
      /*                                                                       */
      /*   Here is a simple example:                                           */
      /*                                                                       */
      /*     {                                                                 */
      /*       #undef __FTERRORS_H__                                           */
      /*       #define FT_ERRORDEF( e, v, s )  { e, s },                       */
      /*       #define FT_ERROR_START_LIST     {                               */
      /*       #define FT_ERROR_END_LIST       { 0, 0 } };                     */
      /*                                                                       */
      /*       const struct                                                    */
      /*       {                                                               */
      /*         int          err_code;                                        */
      /*         const char*  err_msg;                                         */
      /*       } ft_errors[] =                                                 */
      /*                                                                       */
      /*       #include FT_ERRORS_H                                            */
      /*     }                                                                 */
      /*                                                                       */
      /*************************************************************************/
    
    
    #ifndef __FTERRORS_H__
    #define __FTERRORS_H__
    
    
      /* include module base error codes */
    #include FT_MODULE_ERRORS_H
    
    
      /*******************************************************************/
      /*******************************************************************/
      /*****                                                         *****/
      /*****                       SETUP MACROS                      *****/
      /*****                                                         *****/
      /*******************************************************************/
      /*******************************************************************/
    
    
    #undef  FT_NEED_EXTERN_C
    
    
      /* FT_ERR_PREFIX is used as a prefix for error identifiers. */
      /* By default, we use `FT_Err_'.                            */
      /*                                                          */
    #ifndef FT_ERR_PREFIX
    #define FT_ERR_PREFIX  FT_Err_
    #endif
    
    
      /* FT_ERR_BASE is used as the base for module-specific errors. */
      /*                                                             */
    #ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
    
    #ifndef FT_ERR_BASE
    #define FT_ERR_BASE  FT_Mod_Err_Base
    #endif
    
    #else
    
    #undef FT_ERR_BASE
    #define FT_ERR_BASE  0
    
    #endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */
    
    
      /* If FT_ERRORDEF is not defined, we need to define a simple */
      /* enumeration type.                                         */
      /*                                                           */
    #ifndef FT_ERRORDEF
    
    #define FT_ERRORDEF( e, v, s )  e = v,
    #define FT_ERROR_START_LIST     enum {
    #define FT_ERROR_END_LIST       FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
    
    #ifdef __cplusplus
    #define FT_NEED_EXTERN_C
      extern "C" {
    #endif
    
    #endif /* !FT_ERRORDEF */
    
    
      /* this macro is used to define an error */
    #define FT_ERRORDEF_( e, v, s )                                             \
              FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
    
      /* this is only used for <module>_Err_Ok, which must be 0! */
    #define FT_NOERRORDEF_( e, v, s )                             \
              FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
    
    
    #ifdef FT_ERROR_START_LIST
      FT_ERROR_START_LIST
    #endif
    
    
      /* now include the error codes */
    #include FT_ERROR_DEFINITIONS_H
    
    
    #ifdef FT_ERROR_END_LIST
      FT_ERROR_END_LIST
    #endif
    
    
      /*******************************************************************/
      /*******************************************************************/
      /*****                                                         *****/
      /*****                      SIMPLE CLEANUP                     *****/
      /*****                                                         *****/
      /*******************************************************************/
      /*******************************************************************/
    
    #ifdef FT_NEED_EXTERN_C
      }
    #endif
    
    #undef FT_ERROR_START_LIST
    #undef FT_ERROR_END_LIST
    
    #undef FT_ERRORDEF
    #undef FT_ERRORDEF_
    #undef FT_NOERRORDEF_
    
    #undef FT_NEED_EXTERN_C
    #undef FT_ERR_BASE
    
      /* FT_ERR_PREFIX is needed internally */
    #ifndef FT2_BUILD_LIBRARY
    #undef FT_ERR_PREFIX
    #endif
    
    #endif /* __FTERRORS_H__ */
    
    
    /* END */