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