libc8
CHIP-8 utility library
exception.h
Go to the documentation of this file.
1
8#ifndef LIBC8_EXCEPTION_H
9#define LIBC8_EXCEPTION_H
10
11#include <stdio.h>
12
13#define EXCEPTION_MESSAGE_SIZE 64
14
15#define NULLCHECK1(a) if (!(a)) { \
16 sprintf(c8_exception, "At %s", __func__); \
17 handle_exception(NULL_ARGUMENT_EXCEPTION); \
18}
19
20#define NULLCHECK2(a,b) if (!(a) || !(b)) { \
21 sprintf(c8_exception, "At %s", __func__);\
22 handle_exception(NULL_ARGUMENT_EXCEPTION); \
23}
24
25#define NULLCHECK3(a,b,c) if (!(a) || !(b) || !(c)) { \
26 sprintf(c8_exception, "At %s", __func__); \
27 handle_exception(NULL_ARGUMENT_EXCEPTION); \
28}
29
30#define NULL_ARGUMENT_EXCEPTION (-3)
31#define INVALID_INSTRUCTION_EXCEPTION (-4)
32#define TOO_MANY_LABELS_EXCEPTION (-5)
33#define STACK_OVERFLOW_EXCEPTION (-6)
34#define INVALID_ARGUMENT_EXCEPTION (-7)
35#define INVALID_ARGUMENT_EXCEPTION_INTERNAL (-8)
36#define DUPLICATE_LABEL_EXCEPTION (-9)
37#define INVALID_SYMBOL_EXCEPTION (-10)
38#define TOO_MANY_MALLOCS_EXCEPTION (-11)
39#define UNKNOWN_EXCEPTION (-12)
40#define TOO_MANY_SYMBOLS_EXCEPTION (-13)
41#define LOAD_FILE_FAILURE_EXCEPTION (-14)
42#define FILE_TOO_BIG_EXCEPTION (-15)
43#define INVALID_COLOR_PALETTE_EXCEPTION (-16)
44#define INVALID_QUIRK_EXCEPTION (-17)
45#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION (-18)
46#define INVALID_FONT_EXCEPTION (-19)
47
48#define NULL_ARGUMENT_EXCEPTION_MESSAGE "A NULL argument was passed to a function."
49#define INVALID_INSTRUCTION_EXCEPTION_MESSAGE "An invalid instruction exists in the input file."
50#define TOO_MANY_LABELS_EXCEPTION_MESSAGE "Too many labels are defined in the input file."
51#define STACK_OVERFLOW_EXCEPTION_MESSAGE "A stack overflow occurred during execution."
52#define INVALID_ARGUMENT_EXCEPTION_MESSAGE "An invalid instruction argument was given."
53#define INVALID_ARGUMENT_EXCEPTION_INTERNAL_MESSAGE "An invalid argument was passed internally."
54#define DUPLICATE_LABEL_EXCEPTION_MESSAGE "A label was defined multiple times."
55#define INVALID_SYMBOL_EXCEPTION_MESSAGE "An invalid symbol exists in the input file."
56#define TOO_MANY_MALLOCS_EXCEPTION_MESSAGE "Too many mallocs."
57#define UNKNOWN_EXCEPTION_MESSAGE "An unknown error has occurred."
58#define TOO_MANY_SYMBOLS_EXCEPTION_MESSAGE "Too many symbols exist in the input file."
59#define LOAD_FILE_FAILURE_EXCEPTION_MESSAGE "Failed to load file."
60#define FILE_TOO_BIG_EXCEPTION_MESSAGE "The given file is too big."
61#define INVALID_COLOR_PALETTE_EXCEPTION_MESSAGE "Invalid color palette."
62#define INVALID_QUIRK_EXCEPTION_MESSAGE "Invalid quirk."
63#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION_MESSAGE "Failed to initialize graphics."
64#define INVALID_FONT_EXCEPTION_MESSAGE "Invalid font."
65
70
71void handle_exception(int);
72
73#endif
void handle_exception(int)
Definition: exception.c:38
#define EXCEPTION_MESSAGE_SIZE
Definition: exception.h:13
char c8_exception[EXCEPTION_MESSAGE_SIZE]
Definition: exception.c:16