1 #include "dragonfail.h" 2 #include "dragonfail_private.h" 3 #include "dragonfail_error.h" 4 5 #ifdef DRAGONFAIL_BASIC_LOG 6 #include <stdio.h> 7 #endif 8 9 #ifdef DRAGONFAIL_ABORT 10 #include <stdlib.h> 11 #endif 12 13 // extern 14 struct dgn dgn; 15 dgn_init()16inline char** dgn_init() 17 { 18 #ifndef DRAGONFAIL_SKIP 19 dgn.error = DGN_OK; 20 return dgn.log; 21 #else 22 return NULL; 23 #endif 24 } 25 dgn_reset()26inline void dgn_reset() 27 { 28 #ifndef DRAGONFAIL_SKIP 29 dgn.error = DGN_OK; 30 #endif 31 } 32 dgn_basic_log()33inline void dgn_basic_log() 34 { 35 #ifdef DRAGONFAIL_BASIC_LOG 36 #ifndef DRAGONFAIL_SKIP 37 if (dgn.error < DGN_SIZE) 38 { 39 fprintf(stderr, "%s\n", dgn.log[dgn.error]); 40 } 41 else 42 { 43 fprintf(stderr, "%s\n", dgn.log[0]); 44 } 45 #endif 46 #endif 47 } 48 dgn_output_log()49inline char* dgn_output_log() 50 { 51 if (dgn.error < DGN_SIZE) 52 { 53 return dgn.log[dgn.error]; 54 } 55 else 56 { 57 return dgn.log[0]; 58 } 59 } 60 dgn_output_code()61enum dgn_error dgn_output_code() 62 { 63 return dgn.error; 64 } 65 dgn_throw(enum dgn_error new_code)66inline void dgn_throw(enum dgn_error new_code) 67 { 68 #ifndef DRAGONFAIL_SKIP 69 dgn.error = new_code; 70 71 #ifdef DRAGONFAIL_THROW_BASIC_LOG 72 #ifdef DRAGONFAIL_BASIC_LOG 73 dgn_basic_log(); 74 #endif 75 #endif 76 77 #ifdef DRAGONFAIL_ABORT 78 abort(); 79 #endif 80 #endif 81 } 82 dgn_catch()83inline char dgn_catch() 84 { 85 #ifndef DRAGONFAIL_SKIP 86 return (dgn.error != DGN_OK); 87 #else 88 return 0; 89 #endif 90 } 91