#pragma once #ifndef _NB_ERROR #define _NB_ERROR #include "ErrorsImpl.hpp" #include "Logger.hpp" namespace nb { #ifdef _NB_AUTOLOG #ifdef _NB_CODE_ERROR_LOCATIONS #ifndef LOG #define LOG(args...) nb::logger.log(args, __FILE__, __LINE__) #endif // LOG #ifndef WARN #define WARN(args...) nb::logger.warn(args, __FILE__, __LINE__) #endif // WARN #ifndef ERROR #define ERROR(args...) nb::logger.error(args, __FILE__, __LINE__) #endif // ERROR #else #ifndef LOG #define LOG(args...) nb::logger.log(args) #endif // LOG #ifndef WARN #define WARN(args...) nb::logger.warn(args) #endif // WARN #ifndef ERROR #define ERROR(args...) nb::logger.error(args) #endif // ERROR #endif // _NB_CODE_ERROR_LOCATIONS #endif // _NB_AUTOLOG #ifndef THROW #ifdef _NB_AUTOLOG #define THROW(args...) ERROR(args); nb::logger.stop(); throw args #else #define THROW(args...) throw args #endif // _NB_CODE_ERROR_LOCATIONS #endif // THROW } // namespace nb #endif // _NB_ERROR