1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* fterrors.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType error code handling (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/* Copyright 1996-2002, 2004, 2007, 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 special header file is used to define the handling of FT2 */ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* enumeration constants. It can also be used to generate error message */ 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* strings with a small macro trick explained below. */ 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* I - Error Formats */ 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* ----------------- */ 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* defined in ftoption.h in order to make the higher byte indicate */ 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the module where the error has happened (this is not compatible */ 31a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* with standard builds of FreeType 2). See the file `ftmoderr.h' for */ 32a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* more details. */ 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* II - Error Message strings */ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* -------------------------- */ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The error definitions below are made through special macros that */ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* allow client applications to build a table of error message strings */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* if they need it. The strings are not included in a normal build of */ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType 2 to save space (most client applications do not use */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* them). */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* To do so, you have to define the following macros before including */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this file: */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_ERROR_START_LIST :: */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This macro is called before anything else to define the start of */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the error list. It is followed by several FT_ERROR_DEF calls */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (see below). */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_ERROR_DEF( e, v, s ) :: */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This macro is called to define one single error. */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `v' is the error numerical value. */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `s' is the corresponding error string. */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_ERROR_END_LIST :: */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This macro ends the list. */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Additionally, you have to undefine __FTERRORS_H__ before #including */ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this file. */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Here is a simple example: */ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* { */ 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #undef __FTERRORS_H__ */ 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #define FT_ERROR_START_LIST { */ 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #define FT_ERROR_END_LIST { 0, 0 } }; */ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* const struct */ 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* { */ 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* int err_code; */ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* const char* err_msg; */ 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* } ft_errors[] = */ 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #include FT_ERRORS_H */ 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* } */ 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTERRORS_H__ 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTERRORS_H__ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* include module base error codes */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_MODULE_ERRORS_H 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** SETUP MACROS *****/ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_NEED_EXTERN_C 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* By default, we use `FT_Err_'. */ 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_ERR_PREFIX 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERR_PREFIX FT_Err_ 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_ERR_BASE is used as the base for module-specific errors. */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_ERR_BASE 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERR_BASE FT_Mod_Err_Base 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERR_BASE 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERR_BASE 0 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If FT_ERRORDEF is not defined, we need to define a simple */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* enumeration type. */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_ERRORDEF 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERRORDEF( e, v, s ) e = v, 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERROR_START_LIST enum { 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_NEED_EXTERN_C 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project extern "C" { 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* !FT_ERRORDEF */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this macro is used to define an error */ 146a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_ERRORDEF_( e, v, s ) \ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this is only used for <module>_Err_Ok, which must be 0! */ 150a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define FT_NOERRORDEF_( e, v, s ) \ 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_ERROR_START_LIST 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ERROR_START_LIST 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* now include the error codes */ 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_ERROR_DEFINITIONS_H 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_ERROR_END_LIST 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ERROR_END_LIST 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** SIMPLE CLEANUP *****/ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*******************************************************************/ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FT_NEED_EXTERN_C 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERROR_START_LIST 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERROR_END_LIST 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERRORDEF 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERRORDEF_ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_NOERRORDEF_ 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_NEED_EXTERN_C 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERR_BASE 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 190a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* FT_ERR_PREFIX is needed internally */ 191a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#ifndef FT2_BUILD_LIBRARY 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#undef FT_ERR_PREFIX 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTERRORS_H__ */ 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 199