1*a28cd43dSSascha Wildner /* 2*a28cd43dSSascha Wildner * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc. 3*a28cd43dSSascha Wildner * All rights reserved. 4*a28cd43dSSascha Wildner * 5*a28cd43dSSascha Wildner * This source code is licensed under both the BSD-style license (found in the 6*a28cd43dSSascha Wildner * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7*a28cd43dSSascha Wildner * in the COPYING file in the root directory of this source tree). 8*a28cd43dSSascha Wildner * You may select, at your option, one of the above-listed licenses. 9*a28cd43dSSascha Wildner */ 10*a28cd43dSSascha Wildner 11*a28cd43dSSascha Wildner #ifndef ZSTD_ERRORS_H_398273423 12*a28cd43dSSascha Wildner #define ZSTD_ERRORS_H_398273423 13*a28cd43dSSascha Wildner 14*a28cd43dSSascha Wildner #if defined (__cplusplus) 15*a28cd43dSSascha Wildner extern "C" { 16*a28cd43dSSascha Wildner #endif 17*a28cd43dSSascha Wildner 18*a28cd43dSSascha Wildner /*===== dependency =====*/ 19*a28cd43dSSascha Wildner #include <stddef.h> /* size_t */ 20*a28cd43dSSascha Wildner 21*a28cd43dSSascha Wildner 22*a28cd43dSSascha Wildner /* ===== ZSTDERRORLIB_API : control library symbols visibility ===== */ 23*a28cd43dSSascha Wildner #ifndef ZSTDERRORLIB_VISIBILITY 24*a28cd43dSSascha Wildner # if defined(__GNUC__) && (__GNUC__ >= 4) 25*a28cd43dSSascha Wildner # define ZSTDERRORLIB_VISIBILITY __attribute__ ((visibility ("default"))) 26*a28cd43dSSascha Wildner # else 27*a28cd43dSSascha Wildner # define ZSTDERRORLIB_VISIBILITY 28*a28cd43dSSascha Wildner # endif 29*a28cd43dSSascha Wildner #endif 30*a28cd43dSSascha Wildner #if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) 31*a28cd43dSSascha Wildner # define ZSTDERRORLIB_API __declspec(dllexport) ZSTDERRORLIB_VISIBILITY 32*a28cd43dSSascha Wildner #elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) 33*a28cd43dSSascha Wildner # define ZSTDERRORLIB_API __declspec(dllimport) ZSTDERRORLIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ 34*a28cd43dSSascha Wildner #else 35*a28cd43dSSascha Wildner # define ZSTDERRORLIB_API ZSTDERRORLIB_VISIBILITY 36*a28cd43dSSascha Wildner #endif 37*a28cd43dSSascha Wildner 38*a28cd43dSSascha Wildner /*-********************************************* 39*a28cd43dSSascha Wildner * Error codes list 40*a28cd43dSSascha Wildner *-********************************************* 41*a28cd43dSSascha Wildner * Error codes _values_ are pinned down since v1.3.1 only. 42*a28cd43dSSascha Wildner * Therefore, don't rely on values if you may link to any version < v1.3.1. 43*a28cd43dSSascha Wildner * 44*a28cd43dSSascha Wildner * Only values < 100 are considered stable. 45*a28cd43dSSascha Wildner * 46*a28cd43dSSascha Wildner * note 1 : this API shall be used with static linking only. 47*a28cd43dSSascha Wildner * dynamic linking is not yet officially supported. 48*a28cd43dSSascha Wildner * note 2 : Prefer relying on the enum than on its value whenever possible 49*a28cd43dSSascha Wildner * This is the only supported way to use the error list < v1.3.1 50*a28cd43dSSascha Wildner * note 3 : ZSTD_isError() is always correct, whatever the library version. 51*a28cd43dSSascha Wildner **********************************************/ 52*a28cd43dSSascha Wildner typedef enum { 53*a28cd43dSSascha Wildner ZSTD_error_no_error = 0, 54*a28cd43dSSascha Wildner ZSTD_error_GENERIC = 1, 55*a28cd43dSSascha Wildner ZSTD_error_prefix_unknown = 10, 56*a28cd43dSSascha Wildner ZSTD_error_version_unsupported = 12, 57*a28cd43dSSascha Wildner ZSTD_error_frameParameter_unsupported = 14, 58*a28cd43dSSascha Wildner ZSTD_error_frameParameter_windowTooLarge = 16, 59*a28cd43dSSascha Wildner ZSTD_error_corruption_detected = 20, 60*a28cd43dSSascha Wildner ZSTD_error_checksum_wrong = 22, 61*a28cd43dSSascha Wildner ZSTD_error_dictionary_corrupted = 30, 62*a28cd43dSSascha Wildner ZSTD_error_dictionary_wrong = 32, 63*a28cd43dSSascha Wildner ZSTD_error_dictionaryCreation_failed = 34, 64*a28cd43dSSascha Wildner ZSTD_error_parameter_unsupported = 40, 65*a28cd43dSSascha Wildner ZSTD_error_parameter_outOfBound = 42, 66*a28cd43dSSascha Wildner ZSTD_error_tableLog_tooLarge = 44, 67*a28cd43dSSascha Wildner ZSTD_error_maxSymbolValue_tooLarge = 46, 68*a28cd43dSSascha Wildner ZSTD_error_maxSymbolValue_tooSmall = 48, 69*a28cd43dSSascha Wildner ZSTD_error_stage_wrong = 60, 70*a28cd43dSSascha Wildner ZSTD_error_init_missing = 62, 71*a28cd43dSSascha Wildner ZSTD_error_memory_allocation = 64, 72*a28cd43dSSascha Wildner ZSTD_error_workSpace_tooSmall= 66, 73*a28cd43dSSascha Wildner ZSTD_error_dstSize_tooSmall = 70, 74*a28cd43dSSascha Wildner ZSTD_error_srcSize_wrong = 72, 75*a28cd43dSSascha Wildner ZSTD_error_dstBuffer_null = 74, 76*a28cd43dSSascha Wildner /* following error codes are __NOT STABLE__, they can be removed or changed in future versions */ 77*a28cd43dSSascha Wildner ZSTD_error_frameIndex_tooLarge = 100, 78*a28cd43dSSascha Wildner ZSTD_error_seekableIO = 102, 79*a28cd43dSSascha Wildner ZSTD_error_dstBuffer_wrong = 104, 80*a28cd43dSSascha Wildner ZSTD_error_srcBuffer_wrong = 105, 81*a28cd43dSSascha Wildner ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */ 82*a28cd43dSSascha Wildner } ZSTD_ErrorCode; 83*a28cd43dSSascha Wildner 84*a28cd43dSSascha Wildner /*! ZSTD_getErrorCode() : 85*a28cd43dSSascha Wildner convert a `size_t` function result into a `ZSTD_ErrorCode` enum type, 86*a28cd43dSSascha Wildner which can be used to compare with enum list published above */ 87*a28cd43dSSascha Wildner ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult); 88*a28cd43dSSascha Wildner ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */ 89*a28cd43dSSascha Wildner 90*a28cd43dSSascha Wildner 91*a28cd43dSSascha Wildner #if defined (__cplusplus) 92*a28cd43dSSascha Wildner } 93*a28cd43dSSascha Wildner #endif 94*a28cd43dSSascha Wildner 95*a28cd43dSSascha Wildner #endif /* ZSTD_ERRORS_H_398273423 */ 96