📄 fterrors.h
字号:
/***************************************************************************//* *//* fterrors.h *//* *//* FreeType error code handling (specification). *//* *//* Copyright 1996-2001, 2002, 2004, 2007 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). You can then use the macro */ /* FT_ERROR_BASE macro to extract the generic error code from an */ /* FT_Error value. */ /* */ /* */ /* 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#undef FT_ERR_XCAT#undef FT_ERR_CAT#define FT_ERR_XCAT( x, y ) x ## y#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) /* 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_CONCAT#undef FT_ERR_BASE /* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */#ifndef FT_KEEP_ERR_PREFIX#undef FT_ERR_PREFIX#endif#endif /* __FTERRORS_H__ *//* END */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -