Elements
6.2
A C++ base framework for the Euclid Software.
ElementsKernel
ElementsKernel
Number.h
Go to the documentation of this file.
1
26
#ifndef ELEMENTSKERNEL_ELEMENTSKERNEL_NUMBER_H_
27
#define ELEMENTSKERNEL_ELEMENTSKERNEL_NUMBER_H_
28
29
#include <cmath>
// for round
30
#include <type_traits>
// for is_floating_point, is_integral
31
32
#include "
ElementsKernel/Export.h
"
// ELEMENTS_API
33
34
namespace
Elements
{
35
47
template
<
typename
TargetType,
typename
SourceType>
48
ELEMENTS_API
TargetType
numberCast
(
const
SourceType&
s
) {
49
50
using
std::is_floating_point
;
51
using
std::is_integral
;
52
using
std::round
;
53
54
TargetType t =
static_cast<
TargetType
>
(
s
);
55
56
if
(is_floating_point<SourceType>::value && is_integral<TargetType>::value) {
57
t =
static_cast<
TargetType
>
(round(
s
));
58
}
59
60
return
t;
61
}
62
63
}
// namespace Elements
64
65
#endif // ELEMENTSKERNEL_ELEMENTSKERNEL_NUMBER_H_
66
Export.h
defines the macros to be used for explicit export of the symbols
ELEMENTS_API
#define ELEMENTS_API
Dummy definitions for the backward compatibility mode.
Definition:
Export.h:74
Elements::numberCast
ELEMENTS_API TargetType numberCast(const SourceType &s)
this function is a number cast. It behaves exactly as a static_cast except when casting from a floati...
Definition:
Number.h:48
std::is_integral
std::round
T round(T... args)
std::is_floating_point
Elements::Kernel::Units::s
constexpr double s
Definition:
SystemOfUnits.h:121
Elements
Definition:
callBackExample.h:35
Generated by
1.8.17