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