namespace Slime { #define v_major 0 #define v_minor 1 #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) #define VERSION_STRING "v" STRINGIZE(v_major) "." STRINGIZE(v_minor) " - built on " __DATE__ " " __TIME__ const char* version_string = VERSION_STRING; const int major_version = v_major; const int minor_version = v_minor; #undef v_major #undef v_minor #undef STRINGIZE2 #undef STRINGIZE #undef VERSION_STRING } namespace Slime::Globals { char* bin_path = nullptr; Log_Level log_level = Log_Level::Debug; bool debug_log = false; Array_List load_path; namespace Current_Execution { Array_List cs; // call stack Array_List pcs; // program counter stack Array_List ams; // apply marker stack Array_List> nass; // next action stack stack Array_List> ats; // and then stack Array_List mes; // macro expansion stack Array_List envi_stack; } Error* error = nullptr; #ifdef _DONT_BREAK_ON_ERRORS bool breaking_on_errors = false; #else bool breaking_on_errors = true; #endif }