libc8
CHIP-8 utility library
exception.h File Reference
#include <stdio.h>

Go to the source code of this file.

Macros

#define EXCEPTION_MESSAGE_SIZE   64
 
#define NULLCHECK1(a)
 
#define NULLCHECK2(a, b)
 
#define NULLCHECK3(a, b, c)
 
#define NULL_ARGUMENT_EXCEPTION   (-3)
 
#define INVALID_INSTRUCTION_EXCEPTION   (-4)
 
#define TOO_MANY_LABELS_EXCEPTION   (-5)
 
#define STACK_OVERFLOW_EXCEPTION   (-6)
 
#define INVALID_ARGUMENT_EXCEPTION   (-7)
 
#define INVALID_ARGUMENT_EXCEPTION_INTERNAL   (-8)
 
#define DUPLICATE_LABEL_EXCEPTION   (-9)
 
#define INVALID_SYMBOL_EXCEPTION   (-10)
 
#define TOO_MANY_MALLOCS_EXCEPTION   (-11)
 
#define UNKNOWN_EXCEPTION   (-12)
 
#define TOO_MANY_SYMBOLS_EXCEPTION   (-13)
 
#define LOAD_FILE_FAILURE_EXCEPTION   (-14)
 
#define FILE_TOO_BIG_EXCEPTION   (-15)
 
#define INVALID_COLOR_PALETTE_EXCEPTION   (-16)
 
#define INVALID_QUIRK_EXCEPTION   (-17)
 
#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION   (-18)
 
#define INVALID_FONT_EXCEPTION   (-19)
 
#define NULL_ARGUMENT_EXCEPTION_MESSAGE   "A NULL argument was passed to a function."
 
#define INVALID_INSTRUCTION_EXCEPTION_MESSAGE   "An invalid instruction exists in the input file."
 
#define TOO_MANY_LABELS_EXCEPTION_MESSAGE   "Too many labels are defined in the input file."
 
#define STACK_OVERFLOW_EXCEPTION_MESSAGE   "A stack overflow occurred during execution."
 
#define INVALID_ARGUMENT_EXCEPTION_MESSAGE   "An invalid instruction argument was given."
 
#define INVALID_ARGUMENT_EXCEPTION_INTERNAL_MESSAGE   "An invalid argument was passed internally."
 
#define DUPLICATE_LABEL_EXCEPTION_MESSAGE   "A label was defined multiple times."
 
#define INVALID_SYMBOL_EXCEPTION_MESSAGE   "An invalid symbol exists in the input file."
 
#define TOO_MANY_MALLOCS_EXCEPTION_MESSAGE   "Too many mallocs."
 
#define UNKNOWN_EXCEPTION_MESSAGE   "An unknown error has occurred."
 
#define TOO_MANY_SYMBOLS_EXCEPTION_MESSAGE   "Too many symbols exist in the input file."
 
#define LOAD_FILE_FAILURE_EXCEPTION_MESSAGE   "Failed to load file."
 
#define FILE_TOO_BIG_EXCEPTION_MESSAGE   "The given file is too big."
 
#define INVALID_COLOR_PALETTE_EXCEPTION_MESSAGE   "Invalid color palette."
 
#define INVALID_QUIRK_EXCEPTION_MESSAGE   "Invalid quirk."
 
#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION_MESSAGE   "Failed to initialize graphics."
 
#define INVALID_FONT_EXCEPTION_MESSAGE   "Invalid font."
 

Functions

void handle_exception (int)
 

Variables

char c8_exception [EXCEPTION_MESSAGE_SIZE]
 

Detailed Description

Note
NOT EXPORTED

Stuff for handling exceptions.

Macro Definition Documentation

◆ DUPLICATE_LABEL_EXCEPTION

#define DUPLICATE_LABEL_EXCEPTION   (-9)

◆ DUPLICATE_LABEL_EXCEPTION_MESSAGE

#define DUPLICATE_LABEL_EXCEPTION_MESSAGE   "A label was defined multiple times."

◆ EXCEPTION_MESSAGE_SIZE

#define EXCEPTION_MESSAGE_SIZE   64

◆ FAILED_GRAPHICS_INITIALIZATION_EXCEPTION

#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION   (-18)

◆ FAILED_GRAPHICS_INITIALIZATION_EXCEPTION_MESSAGE

#define FAILED_GRAPHICS_INITIALIZATION_EXCEPTION_MESSAGE   "Failed to initialize graphics."

◆ FILE_TOO_BIG_EXCEPTION

#define FILE_TOO_BIG_EXCEPTION   (-15)

◆ FILE_TOO_BIG_EXCEPTION_MESSAGE

#define FILE_TOO_BIG_EXCEPTION_MESSAGE   "The given file is too big."

◆ INVALID_ARGUMENT_EXCEPTION

#define INVALID_ARGUMENT_EXCEPTION   (-7)

◆ INVALID_ARGUMENT_EXCEPTION_INTERNAL

#define INVALID_ARGUMENT_EXCEPTION_INTERNAL   (-8)

◆ INVALID_ARGUMENT_EXCEPTION_INTERNAL_MESSAGE

#define INVALID_ARGUMENT_EXCEPTION_INTERNAL_MESSAGE   "An invalid argument was passed internally."

◆ INVALID_ARGUMENT_EXCEPTION_MESSAGE

#define INVALID_ARGUMENT_EXCEPTION_MESSAGE   "An invalid instruction argument was given."

◆ INVALID_COLOR_PALETTE_EXCEPTION

#define INVALID_COLOR_PALETTE_EXCEPTION   (-16)

◆ INVALID_COLOR_PALETTE_EXCEPTION_MESSAGE

#define INVALID_COLOR_PALETTE_EXCEPTION_MESSAGE   "Invalid color palette."

◆ INVALID_FONT_EXCEPTION

#define INVALID_FONT_EXCEPTION   (-19)

◆ INVALID_FONT_EXCEPTION_MESSAGE

#define INVALID_FONT_EXCEPTION_MESSAGE   "Invalid font."

◆ INVALID_INSTRUCTION_EXCEPTION

#define INVALID_INSTRUCTION_EXCEPTION   (-4)

◆ INVALID_INSTRUCTION_EXCEPTION_MESSAGE

#define INVALID_INSTRUCTION_EXCEPTION_MESSAGE   "An invalid instruction exists in the input file."

◆ INVALID_QUIRK_EXCEPTION

#define INVALID_QUIRK_EXCEPTION   (-17)

◆ INVALID_QUIRK_EXCEPTION_MESSAGE

#define INVALID_QUIRK_EXCEPTION_MESSAGE   "Invalid quirk."

◆ INVALID_SYMBOL_EXCEPTION

#define INVALID_SYMBOL_EXCEPTION   (-10)

◆ INVALID_SYMBOL_EXCEPTION_MESSAGE

#define INVALID_SYMBOL_EXCEPTION_MESSAGE   "An invalid symbol exists in the input file."

◆ LOAD_FILE_FAILURE_EXCEPTION

#define LOAD_FILE_FAILURE_EXCEPTION   (-14)

◆ LOAD_FILE_FAILURE_EXCEPTION_MESSAGE

#define LOAD_FILE_FAILURE_EXCEPTION_MESSAGE   "Failed to load file."

◆ NULL_ARGUMENT_EXCEPTION

#define NULL_ARGUMENT_EXCEPTION   (-3)

◆ NULL_ARGUMENT_EXCEPTION_MESSAGE

#define NULL_ARGUMENT_EXCEPTION_MESSAGE   "A NULL argument was passed to a function."

◆ NULLCHECK1

#define NULLCHECK1 (   a)
Value:
if (!(a)) { \
sprintf(c8_exception, "At %s", __func__); \
handle_exception(NULL_ARGUMENT_EXCEPTION); \
}
char c8_exception[EXCEPTION_MESSAGE_SIZE]
Definition: exception.c:16
#define NULL_ARGUMENT_EXCEPTION
Definition: exception.h:30

◆ NULLCHECK2

#define NULLCHECK2 (   a,
 
)
Value:
if (!(a) || !(b)) { \
sprintf(c8_exception, "At %s", __func__);\
handle_exception(NULL_ARGUMENT_EXCEPTION); \
}

◆ NULLCHECK3

#define NULLCHECK3 (   a,
  b,
 
)
Value:
if (!(a) || !(b) || !(c)) { \
sprintf(c8_exception, "At %s", __func__); \
handle_exception(NULL_ARGUMENT_EXCEPTION); \
}

◆ STACK_OVERFLOW_EXCEPTION

#define STACK_OVERFLOW_EXCEPTION   (-6)

◆ STACK_OVERFLOW_EXCEPTION_MESSAGE

#define STACK_OVERFLOW_EXCEPTION_MESSAGE   "A stack overflow occurred during execution."

◆ TOO_MANY_LABELS_EXCEPTION

#define TOO_MANY_LABELS_EXCEPTION   (-5)

◆ TOO_MANY_LABELS_EXCEPTION_MESSAGE

#define TOO_MANY_LABELS_EXCEPTION_MESSAGE   "Too many labels are defined in the input file."

◆ TOO_MANY_MALLOCS_EXCEPTION

#define TOO_MANY_MALLOCS_EXCEPTION   (-11)

◆ TOO_MANY_MALLOCS_EXCEPTION_MESSAGE

#define TOO_MANY_MALLOCS_EXCEPTION_MESSAGE   "Too many mallocs."

◆ TOO_MANY_SYMBOLS_EXCEPTION

#define TOO_MANY_SYMBOLS_EXCEPTION   (-13)

◆ TOO_MANY_SYMBOLS_EXCEPTION_MESSAGE

#define TOO_MANY_SYMBOLS_EXCEPTION_MESSAGE   "Too many symbols exist in the input file."

◆ UNKNOWN_EXCEPTION

#define UNKNOWN_EXCEPTION   (-12)

◆ UNKNOWN_EXCEPTION_MESSAGE

#define UNKNOWN_EXCEPTION_MESSAGE   "An unknown error has occurred."

Function Documentation

◆ handle_exception()

void handle_exception ( int  code)

Variable Documentation

◆ c8_exception

char c8_exception[EXCEPTION_MESSAGE_SIZE]
extern

Message to print when calling handle_exception with a non-zero code