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