jaulib v1.3.8
Jau Support Library (C++, Java, ..)
Loading...
Searching...
No Matches
float_types.hpp
Go to the documentation of this file.
1/*
2 * Author: Svenson Han Gothel <shg@jausoft.com>
3 * Copyright (c) 2020-2024 Gothel Software e.K.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining
6 * a copy of this software and associated documentation files (the
7 * "Software"), to deal in the Software without restriction, including
8 * without limitation the rights to use, copy, modify, merge, publish,
9 * distribute, sublicense, and/or sell copies of the Software, and to
10 * permit persons to whom the Software is furnished to do so, subject to
11 * the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef JAU_FLOAT_TYPES_HPP_
26#define JAU_FLOAT_TYPES_HPP_
27
28#if __cplusplus > 202002L
29 #include <stdfloat>
30#endif
31
32#include <jau/cpp_lang_util.hpp>
33#include <jau/type_info.hpp>
34
35namespace jau {
36
37 /** \addtogroup Floats
38 *
39 * @{
40 */
41
42 #if __cplusplus > 202002L
43 /** https://en.cppreference.com/w/cpp/types/floating-point */
44 typedef std::float32_t float32_t;
45 typedef std::float64_t float64_t;
46 #else
47 static_assert(32 == sizeof(float)<<3);
48 static_assert(64 == sizeof(double)<<3);
49 typedef float float32_t;
50 typedef double float64_t;
51 #endif
52
53 namespace float_literals {
54 constexpr float32_t operator ""_f32(long double __v) { return (float32_t)__v; }
55 constexpr float64_t operator ""_f64(long double __v) { return (float64_t)__v; }
56 } // float_literals
57
58 class float_ctti {
59 public:
60 /// jau::float_32_t or just float
61 static const jau::type_info& f32() { return jau::static_ctti<float32_t>(); }
62 /// jau::float_64_t or just double
63 static const jau::type_info& f64() { return jau::static_ctti<float64_t>(); }
64 };
65
66 /**@}*/
67
68} // namespace jau
69
70#endif /* JAU_FLOAT_TYPES_HPP_ */
static const jau::type_info & f32()
jau::float_32_t or just float
static const jau::type_info & f64()
jau::float_64_t or just double
Generic type information using either Runtime type information (RTTI) or Compile time type informatio...
const jau::type_info & static_ctti() noexcept
Returns a static global reference of make_ctti<T>(true) w/ identity instance.
float float32_t
double float64_t
__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.
Definition backtrace.hpp:32