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