Lightmetrica
0.0.1.50dbee3 (yosakoi)
Main Page
Classes
Files
File List
All
Classes
Functions
Variables
Typedefs
Enumerations
Enumerator
include
lightmetrica
assert.h
1
/*
2
Lightmetrica : A research-oriented renderer
3
4
Copyright (c) 2014 Hisanari Otsu
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#pragma once
21
#ifndef LM_CORE_ASSERT_H
22
#define LM_CORE_ASSERT_H
23
24
#include "logger.h"
25
#include <cassert>
26
#include <string>
27
28
#if LM_DEBUG_MODE
29
#define LM_ASSERT(cond) do { if (!(cond)) { LM_LOG_ERROR("Assertion failed : '" + std::string(#cond) + "'"); abort(); } } while (0);
30
#else
31
#define LM_ASSERT(cond) ((void)0)
32
#endif
33
34
#if LM_DEBUG_MODE
35
#define LM_UNREACHABLE() LM_ASSERT(false)
36
#else
37
#if LM_COMPILER_GCC
38
#define LM_UNREACHABLE() __builtin_unreachable()
39
#elif LM_COMPILER_MSVC
40
#define LM_UNREACHABLE() __assume(0)
41
#endif
42
#endif
43
44
#endif // LM_CORE_ASSERT_H
Generated on Wed Oct 8 2014 01:07:59 for Lightmetrica by
1.8.8