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