fennec
Loading...
Searching...
No Matches
assert.h
Go to the documentation of this file.
1
// =====================================================================================================================
2
// fennec, a free and open source game engine
3
// Copyright © 2025 Medusa Slockbower
4
//
5
// This program is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with this program. If not, see <https://www.gnu.org/licenses/>.
17
// =====================================================================================================================
18
30
31
#ifndef FENNEC_LANG_ASSERT_H
32
#define FENNEC_LANG_ASSERT_H
33
66
67
#if FENNEC_COMPILER_MSVC
68
#define __PRETTY_FUNCTION__ __FUNCSIG__
69
#endif
70
71
using
assert_handler = void (*)(
const
char
*,
const
char
*, int ,
const
char
*);
72
73
void
_assert_impl(
const
char
* expression,
const
char
* file,
int
line,
const
char
* function,
const
char
* desc,
bool
halt);
74
75
// flagged unlikely to optimize branch prediction
76
#define assert(expression, description) \
77
if(not(expression)) [[unlikely]] { \
78
_assert_impl(#expression, __FILE__, __LINE__, __PRETTY_FUNCTION__, description, not FENNEC_RELEASE); \
79
}
80
81
#define assertf(expression, description) \
82
if(not(expression)) [[unlikely]] { \
83
_assert_impl(#expression, __FILE__, __LINE__, __PRETTY_FUNCTION__, description, true); \
84
}
85
86
#if FENNEC_RELEASE
87
#define assertd(expression, description)
88
#else
89
#define assertd(expression, description) assert(expression, description)
90
#endif
91
92
#endif
// FENNEC_LANG_ASSERT_H
include
fennec
lang
assert.h
Generated by
1.9.8