#pragma once #define DISABLE_COPY(Class) \ Class(const Class&) = delete; \ Class& operator=(const Class&) = delete; #define DISABLE_MOVE(Class) \ Class(Class&&) = delete; \ Class& operator=(Class&&) = delete; #define DISABLE_COPY_AND_MOVE(Class) \ DISABLE_COPY(Class) \ DISABLE_MOVE(Class) #define LOG(Msg) \ std::cout << "\033[0m[LOG] " << __PRETTY_FUNCTION__ << ' ' << Msg << '\n'; #define WARN(Msg) \ std::cout << "\033[33m[WARN] " << __PRETTY_FUNCTION__ << ' ' << Msg << "\033[0m\n"; #define ERROR(Msg) \ std::cout << "\033[31m[ERROR] " << __PRETTY_FUNCTION__ << ' ' << Msg << '\033[0m\n';