1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* fterrors.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType error code handling (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2002, 2004, 2007, 2013 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This special header file is used to define the handling of FT2 */ 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* enumeration constants. It can also be used to generate error message */ 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strings with a small macro trick explained below. */ 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* I - Error Formats */ 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ----------------- */ 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* defined in ftoption.h in order to make the higher byte indicate */ 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the module where the error has happened (this is not compatible */ 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* with standard builds of FreeType 2). See the file `ftmoderr.h' for */ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* more details. */ 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* II - Error Message strings */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* -------------------------- */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The error definitions below are made through special macros that */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* allow client applications to build a table of error message strings */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* if they need it. The strings are not included in a normal build of */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType 2 to save space (most client applications do not use */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* them). */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* To do so, you have to define the following macros before including */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this file: */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERROR_START_LIST :: */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This macro is called before anything else to define the start of */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the error list. It is followed by several FT_ERROR_DEF calls */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (see below). */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERROR_DEF( e, v, s ) :: */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This macro is called to define one single error. */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `v' is the error numerical value. */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `s' is the corresponding error string. */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERROR_END_LIST :: */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This macro ends the list. */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Additionally, you have to undefine __FTERRORS_H__ before #including */ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this file. */ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Here is a simple example: */ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #undef __FTERRORS_H__ */ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #define FT_ERROR_START_LIST { */ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #define FT_ERROR_END_LIST { 0, 0 } }; */ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* const struct */ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* int err_code; */ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* const char* err_msg; */ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } ft_errors[] = */ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* #include "fterrors.h" */ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTERRORS_H__ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTERRORS_H__ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* include module base error codes */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ftmoderr.h" 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** *****/ 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** SETUP MACROS *****/ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** *****/ 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_NEED_EXTERN_C 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* By default, we use `FT_Err_'. */ 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_ERR_PREFIX 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_PREFIX FT_Err_ 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERR_BASE is used as the base for module-specific errors. */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_ERR_BASE 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_BASE FT_Mod_Err_Base 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERR_BASE 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_BASE 0 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If FT_ERRORDEF is not defined, we need to define a simple */ 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* enumeration type. */ 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_ERRORDEF 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERRORDEF( e, v, s ) e = v, 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERROR_START_LIST enum { 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_NEED_EXTERN_C 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov extern "C" { 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !FT_ERRORDEF */ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this macro is used to define an error */ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERRORDEF_( e, v, s ) \ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this is only used for <module>_Err_Ok, which must be 0! */ 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_NOERRORDEF_( e, v, s ) \ 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_ERROR_START_LIST 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ERROR_START_LIST 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* now include the error codes */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fterrdef.h" 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_ERROR_END_LIST 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ERROR_END_LIST 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** *****/ 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** SIMPLE CLEANUP *****/ 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /***** *****/ 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*******************************************************************/ 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_NEED_EXTERN_C 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERROR_START_LIST 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERROR_END_LIST 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERRORDEF 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERRORDEF_ 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_NOERRORDEF_ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_NEED_EXTERN_C 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERR_BASE 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ERR_PREFIX is needed internally */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT2_BUILD_LIBRARY 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#undef FT_ERR_PREFIX 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTERRORS_H__ */ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 199