Raftel Engine
 
Loading...
Searching...
No Matches
global_macros.hpp
1#ifndef __MACROS_HPP__
2#define __MACROS_HPP__ 1
3
4#pragma once
5
6
7
8namespace ConsoleColors {
9 constexpr const char* RED = "\033[31m";
10 constexpr const char* GREEN = "\033[32m";
11 constexpr const char* YELLOW = "\033[33m";
12 constexpr const char* BLUE = "\033[34m";
13 constexpr const char* RESET = "\033[0m";
14};
15
16
17
18
19#define NO_COPYABLE_OR_MOVABLE(ClassName) \
20 ClassName(const ClassName&) = delete; \
21 ClassName& operator=(const ClassName&) = delete; \
22 ClassName(ClassName&&) = delete; \
23 ClassName& operator=(ClassName&&) = delete;
24
25#define COPYABLE_BUT_NOT_MOVABLE(ClassName) \
26 ClassName(const ClassName&) noexcept; \
27 ClassName& operator=(const ClassName&) noexcept; \
28 ClassName(ClassName&&) = delete; \
29 ClassName& operator=(ClassName&&) = delete;
30
31#define MOVABLE_BUT_NOT_COPYABLE(ClassName) \
32 ClassName(const ClassName&) = delete; \
33 ClassName& operator=(const ClassName&) = delete; \
34 ClassName(ClassName&&) noexcept; \
35 ClassName& operator=(ClassName&&) noexcept;
36
37#define COPYABLE_AND_MOVABLE(ClassName) \
38 ClassName(const ClassName&) noexcept; \
39 ClassName& operator=(const ClassName&) noexcept; \
40 ClassName(ClassName&&) noexcept; \
41 ClassName& operator=(ClassName&&) noexcept;
42
43#define TRUE 1
44#define FALSE 0
45
46#define LOG_ERROR(msg) \
47 std::cerr << ConsoleColors::RED << "[ERROR] (" << ConsoleColors::RESET << __FILE__ << ":" << __LINE__ << "): " << msg << std::endl;
48
49#ifdef _DEBUG
50 #define LOG_DEBUG(msg) std::cerr << ConsoleColors::YELLOW << "[DEBUG]: " << ConsoleColors::RESET << msg << std::endl;
51#else
52 #define LOG_DEBUG(msg)
53#endif
54
55#define SET_ERROR(msg) setError(msg, __FILE__, __LINE__)
56
57#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
58
59#define PRINT_VAR(var) \
60 std::cout << ConsoleColors::BLUE << #var << ConsoleColors::RESET <<" = " << (var) << std::endl;
61
62#define TIMER_START() \
63 auto start_time = std::chrono::high_resolution_clock::now();
64
65#define TIMER_END() \
66 { \
67 auto end_time = std::chrono::high_resolution_clock::now(); \
68 auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time); \
69 std::cout << "Elapsed time: " << duration.count() << " ms" << std::endl; \
70 }
71
72#define CHECK_GL_ERROR() \
73 { \
74 GLenum err = glGetError(); \
75 if (err != GL_NO_ERROR) { \
76 LOG_ERROR("OpenGL error: " + std::to_string(err) + " at " + __FILE__ + ":" + std::to_string(__LINE__)); \
77 } \
78 }
79
80#endif