xref: /aosp_15_r20/external/zstd/lib/zstd_errors.h (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
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