Home
C++ Libraries
Thor
Aurora
Documentation
Download
Tutorials
Games
Articles
Book
Contact
Main Page
Modules
Classes
Files
File List
File Members
Tools
SafeBool.hpp
Go to the documentation of this file.
1
//
3
// Aurora C++ Library
4
// Copyright (c) 2012-2016 Jan Haller
5
//
6
// This software is provided 'as-is', without any express or implied
7
// warranty. In no event will the authors be held liable for any damages
8
// arising from the use of this software.
9
//
10
// Permission is granted to anyone to use this software for any purpose,
11
// including commercial applications, and to alter it and redistribute it
12
// freely, subject to the following restrictions:
13
//
14
// 1. The origin of this software must not be misrepresented; you must not
15
// claim that you wrote the original software. If you use this software
16
// in a product, an acknowledgment in the product documentation would be
17
// appreciated but is not required.
18
//
19
// 2. Altered source versions must be plainly marked as such, and must not be
20
// misrepresented as being the original software.
21
//
22
// 3. This notice may not be removed or altered from any source distribution.
23
//
25
28
29
#ifndef AURORA_SAFEBOOL_HPP
30
#define AURORA_SAFEBOOL_HPP
31
32
33
namespace
aurora
34
{
35
namespace
detail
36
{
37
38
// Helpers for Safe-Bool idiom (use member-function pointers since they support quite few operators)
39
struct
SafeBoolHolder
40
{
41
// Dummy function
42
void
function
() {}
43
};
44
45
}
// namespace detail
46
47
// ---------------------------------------------------------------------------------------------------------------------------
48
49
52
55
typedef
void (detail::SafeBoolHolder::*
SafeBool
)();
56
59
const
SafeBool
SafeBoolTrue
= &detail::SafeBoolHolder::function;
60
63
const
SafeBool
SafeBoolFalse
=
nullptr
;
64
67
inline
SafeBool
toSafeBool
(
bool
condition)
68
{
69
return
condition ? SafeBoolTrue :
SafeBoolFalse
;
70
}
71
73
74
}
// namespace aurora
75
76
#endif // AURORA_SAFEBOOL_HPP
aurora::SafeBool
void(detail::SafeBoolHolder::* SafeBool)()
SafeBool type.
Definition:
SafeBool.hpp:55
aurora::SafeBoolFalse
const SafeBool SafeBoolFalse
SafeBool literal, evaluates to false.
Definition:
SafeBool.hpp:63
aurora::toSafeBool
SafeBool toSafeBool(bool condition)
Conversion function from bool to SafeBool.
Definition:
SafeBool.hpp:67
aurora::SafeBoolTrue
const SafeBool SafeBoolTrue
SafeBool literal, evaluates to true.
Definition:
SafeBool.hpp:59
aurora
Definition:
DispatchTraits.hpp:39