Line data Source code
1 : /**
2 : * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
3 : * All rights reserved.
4 : *
5 : * This source code is licensed under the BSD-style license found in the
6 : * LICENSE file in the root directory of this source tree. An additional grant
7 : * of patent rights can be found in the PATENTS file in the same directory.
8 : */
9 :
10 : /* Note : this module is expected to remain private, do not expose it */
11 :
12 : #ifndef ERROR_H_MODULE
13 : #define ERROR_H_MODULE
14 :
15 : #if defined (__cplusplus)
16 : extern "C" {
17 : #endif
18 :
19 :
20 : /* ****************************************
21 : * Dependencies
22 : ******************************************/
23 : #include <stddef.h> /* size_t */
24 : #include "error_public.h" /* enum list */
25 :
26 :
27 : /* ****************************************
28 : * Compiler-specific
29 : ******************************************/
30 : #if defined(__GNUC__)
31 : # define ERR_STATIC static __attribute__((unused))
32 : #elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
33 : # define ERR_STATIC static inline
34 : #elif defined(_MSC_VER)
35 : # define ERR_STATIC static __inline
36 : #else
37 : # define ERR_STATIC static /* this version may generate warnings for unused static functions; disable the relevant warning */
38 : #endif
39 :
40 :
41 : /*-****************************************
42 : * Customization (error_public.h)
43 : ******************************************/
44 : typedef ZSTD_ErrorCode ERR_enum;
45 : #define PREFIX(name) ZSTD_error_##name
46 :
47 :
48 : /*-****************************************
49 : * Error codes handling
50 : ******************************************/
51 : #ifdef ERROR
52 : # undef ERROR /* reported already defined on VS 2015 (Rich Geldreich) */
53 : #endif
54 : #define ERROR(name) ((size_t)-PREFIX(name))
55 :
56 11208540 : ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
57 :
58 0 : ERR_STATIC ERR_enum ERR_getErrorCode(size_t code) { if (!ERR_isError(code)) return (ERR_enum)0; return (ERR_enum) (0-code); }
59 :
60 :
61 : /*-****************************************
62 : * Error Strings
63 : ******************************************/
64 :
65 0 : ERR_STATIC const char* ERR_getErrorString(ERR_enum code)
66 : {
67 : static const char* notErrorCode = "Unspecified error code";
68 0 : switch( code )
69 : {
70 0 : case PREFIX(no_error): return "No error detected";
71 0 : case PREFIX(GENERIC): return "Error (generic)";
72 0 : case PREFIX(prefix_unknown): return "Unknown frame descriptor";
73 0 : case PREFIX(version_unsupported): return "Version not supported";
74 0 : case PREFIX(parameter_unknown): return "Unknown parameter type";
75 0 : case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
76 0 : case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
77 0 : case PREFIX(compressionParameter_unsupported): return "Compression parameter is out of bound";
78 0 : case PREFIX(init_missing): return "Context should be init first";
79 0 : case PREFIX(memory_allocation): return "Allocation error : not enough memory";
80 0 : case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
81 0 : case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
82 0 : case PREFIX(srcSize_wrong): return "Src size incorrect";
83 0 : case PREFIX(corruption_detected): return "Corrupted block detected";
84 0 : case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
85 0 : case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
86 0 : case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
87 0 : case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
88 0 : case PREFIX(dictionary_corrupted): return "Dictionary is corrupted";
89 0 : case PREFIX(dictionary_wrong): return "Dictionary mismatch";
90 : case PREFIX(maxCode):
91 0 : default: return notErrorCode;
92 : }
93 : }
94 :
95 0 : ERR_STATIC const char* ERR_getErrorName(size_t code)
96 : {
97 0 : return ERR_getErrorString(ERR_getErrorCode(code));
98 : }
99 :
100 : #if defined (__cplusplus)
101 : }
102 : #endif
103 :
104 : #endif /* ERROR_H_MODULE */
|