Develop Biology
The language of life
IsPointer.h
Go to the documentation of this file.
1
/*
2
* This file is a part of the Biology project by eons LLC.
3
* Biology (aka Develop Biology) is a framework for approaching software
4
* development from a natural sciences perspective.
5
*
6
* Copyright (C) 2021 Séon O'Shannon & eons LLC
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU Affero General Public License as
10
* published by the Free Software Foundation, either version 3 of the
11
* License, or (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
17
*
18
* You should have received a copy of the GNU Affero General Public License
19
* along with this program. If not, see <https://www.gnu.org/licenses/>.
20
*/
21
22
#pragma once
23
24
#include "
bio/common/macros/LanguageMacros.h
"
25
26
//@formatter:off
27
#if BIO_CPP_VERSION >= 11
28
#include <type_traits>
29
#endif
30
//@formatter:on
31
32
namespace
bio
{
33
namespace
utility {
34
35
//@formatter:off
36
#if BIO_CPP_VERSION < 11
37
template
<
typename
T>
38
struct
IsPointerImplementation
{
static
const
bool
m_value
=
false
;};
39
40
template
<
typename
T>
41
struct
IsPointerImplementation
<T*> {
static
const
bool
m_value =
true
;};
42
#endif
43
//@formatter:on
44
50
template
<
typename
T >
51
inline
bool
IsPointer
()
52
{
53
//@formatter:off
54
#if BIO_CPP_VERSION >= 11
55
return
std::is_pointer<T>::value;
56
#else
57
return
IsPointerImplementation< T >::m_value
;
58
#endif
59
//@formatter:on
60
}
61
68
template
<
typename
T >
69
inline
bool
IsPointer
(
const
T t)
70
{
71
return
IsPointer< T >();
72
}
73
81
template
<
typename
T >
82
inline
T&
Dereference
(T& t)
83
{
84
return
t;
85
}
86
94
template
<
typename
T >
95
inline
T&
Dereference
(T* t)
96
{
97
return
*t;
98
}
99
100
}
//utility namespace
101
}
//bio namespace
LanguageMacros.h
bio::utility::Dereference
T & Dereference(T &t)
Definition:
IsPointer.h:82
bio::utility::IsPointer
bool IsPointer()
Definition:
IsPointer.h:51
bio
Definition:
Cell.h:31
bio::utility::IsPointerImplementation
Definition:
IsPointer.h:38
bio::utility::IsPointerImplementation::m_value
static const bool m_value
Definition:
IsPointer.h:38
inc
bio
common
IsPointer.h
Generated by
1.9.4