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