Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/quicknes/fex/blargg_errors.h
2 views
1
// Error strings and conversion functions
2
3
// File_Extractor 1.0.0
4
#ifndef BLARGG_ERRORS_H
5
#define BLARGG_ERRORS_H
6
7
#ifndef BLARGG_COMMON_H
8
#include "blargg_common.h"
9
#endif
10
11
typedef const char blargg_err_def_t [];
12
13
// Basic errors
14
extern blargg_err_def_t blargg_err_generic;
15
extern blargg_err_def_t blargg_err_memory;
16
extern blargg_err_def_t blargg_err_caller;
17
extern blargg_err_def_t blargg_err_internal;
18
extern blargg_err_def_t blargg_err_limitation;
19
20
// File low-level
21
extern blargg_err_def_t blargg_err_file_missing; // not found
22
extern blargg_err_def_t blargg_err_file_read;
23
extern blargg_err_def_t blargg_err_file_write;
24
extern blargg_err_def_t blargg_err_file_io;
25
extern blargg_err_def_t blargg_err_file_full;
26
extern blargg_err_def_t blargg_err_file_eof;
27
28
// File high-level
29
extern blargg_err_def_t blargg_err_file_type; // wrong file type
30
extern blargg_err_def_t blargg_err_file_feature;
31
extern blargg_err_def_t blargg_err_file_corrupt;
32
33
// C string describing error, or "" if err == NULL
34
const char* blargg_err_str( blargg_err_t err );
35
36
// True iff error is of given type, or false if err == NULL
37
bool blargg_is_err_type( blargg_err_t, const char type [] );
38
39
// Details of error without describing main cause, or "" if err == NULL
40
const char* blargg_err_details( blargg_err_t err );
41
42
// Converts error string to integer code using mapping table. Calls blargg_is_err_type()
43
// for each str and returns code on first match. Returns 0 if err == NULL.
44
struct blargg_err_to_code_t {
45
const char* str;
46
int code;
47
};
48
int blargg_err_to_code( blargg_err_t err, blargg_err_to_code_t const [] );
49
50
// Converts error code back to string. If code == 0, returns NULL. If not in table,
51
// returns blargg_err_generic.
52
blargg_err_t blargg_code_to_err( int code, blargg_err_to_code_t const [] );
53
54
// Generates error string literal with details of cause
55
#define BLARGG_ERR( type, str ) (type "; " str)
56
57
// Extra space to make it clear when blargg_err_str() isn't called to get
58
// printable version of error. At some point, I might prefix error strings
59
// with a code, to speed conversion to a code.
60
#define BLARGG_ERR_TYPE( str ) " " str
61
62
// Error types to pass to BLARGG_ERR macro
63
#define BLARGG_ERR_GENERIC BLARGG_ERR_TYPE( "operation failed" )
64
#define BLARGG_ERR_MEMORY BLARGG_ERR_TYPE( "out of memory" )
65
#define BLARGG_ERR_CALLER BLARGG_ERR_TYPE( "internal usage bug" )
66
#define BLARGG_ERR_INTERNAL BLARGG_ERR_TYPE( "internal bug" )
67
#define BLARGG_ERR_LIMITATION BLARGG_ERR_TYPE( "exceeded limitation" )
68
69
#define BLARGG_ERR_FILE_MISSING BLARGG_ERR_TYPE( "file not found" )
70
#define BLARGG_ERR_FILE_READ BLARGG_ERR_TYPE( "couldn't open file" )
71
#define BLARGG_ERR_FILE_WRITE BLARGG_ERR_TYPE( "couldn't modify file" )
72
#define BLARGG_ERR_FILE_IO BLARGG_ERR_TYPE( "read/write error" )
73
#define BLARGG_ERR_FILE_FULL BLARGG_ERR_TYPE( "disk full" )
74
#define BLARGG_ERR_FILE_EOF BLARGG_ERR_TYPE( "truncated file" )
75
76
#define BLARGG_ERR_FILE_TYPE BLARGG_ERR_TYPE( "wrong file type" )
77
#define BLARGG_ERR_FILE_FEATURE BLARGG_ERR_TYPE( "unsupported file feature" )
78
#define BLARGG_ERR_FILE_CORRUPT BLARGG_ERR_TYPE( "corrupt file" )
79
80
#endif
81
82