ritsuko
Helper utilities for ArtifactDB C++ code
Loading...
Searching...
No Matches
as_numeric_datatype.hpp
Go to the documentation of this file.
1#ifndef RITSUKO_AS_NUMERIC_DATATYPE_HPP
2#define RITSUKO_AS_NUMERIC_DATATYPE_HPP
3
4#include "H5Cpp.h"
5
6#include <type_traits>
7#include <cstdint>
8
14namespace ritsuko {
15
16namespace hdf5 {
17
26template<typename Type_>
27const H5::PredType& as_numeric_datatype() {
28 if constexpr(std::is_same<Type_, std::uint8_t>::value) {
29 return H5::PredType::NATIVE_UINT8;
30 } else if constexpr(std::is_same<Type_, std::int8_t>::value) {
31 return H5::PredType::NATIVE_INT8;
32 } else if constexpr(std::is_same<Type_, std::uint16_t>::value) {
33 return H5::PredType::NATIVE_UINT16;
34 } else if constexpr(std::is_same<Type_, std::int16_t>::value) {
35 return H5::PredType::NATIVE_INT16;
36 } else if constexpr(std::is_same<Type_, std::uint32_t>::value) {
37 return H5::PredType::NATIVE_UINT32;
38 } else if constexpr(std::is_same<Type_, std::int32_t>::value) {
39 return H5::PredType::NATIVE_INT32;
40 } else if constexpr(std::is_same<Type_, std::uint64_t>::value) {
41 return H5::PredType::NATIVE_UINT64;
42 } else if constexpr(std::is_same<Type_, std::int64_t>::value) {
43 return H5::PredType::NATIVE_INT64;
44
45 } else if constexpr(std::is_same<Type_, char>::value) {
46 return H5::PredType::NATIVE_CHAR;
47 } else if constexpr(std::is_same<Type_, unsigned char>::value) {
48 return H5::PredType::NATIVE_UCHAR;
49 } else if constexpr(std::is_same<Type_, signed char>::value) {
50 return H5::PredType::NATIVE_SCHAR;
51 } else if constexpr(std::is_same<Type_, short>::value) {
52 return H5::PredType::NATIVE_SHORT;
53 } else if constexpr(std::is_same<Type_, unsigned short>::value) {
54 return H5::PredType::NATIVE_USHORT;
55 } else if constexpr(std::is_same<Type_, int>::value) {
56 return H5::PredType::NATIVE_INT;
57 } else if constexpr(std::is_same<Type_, unsigned int>::value) {
58 return H5::PredType::NATIVE_UINT;
59 } else if constexpr(std::is_same<Type_, long>::value) {
60 return H5::PredType::NATIVE_LONG;
61 } else if constexpr(std::is_same<Type_, unsigned long>::value) {
62 return H5::PredType::NATIVE_ULONG;
63 } else if constexpr(std::is_same<Type_, long long>::value) {
64 return H5::PredType::NATIVE_LLONG;
65 } else if constexpr(std::is_same<Type_, unsigned long long>::value) {
66 return H5::PredType::NATIVE_ULLONG;
67
68 } else if constexpr(std::is_same<Type_, float>::value) {
69 return H5::PredType::NATIVE_FLOAT;
70 } else {
71 static_assert(std::is_same<Type_, double>::value, "specified type is not yet supported");
72 return H5::PredType::NATIVE_DOUBLE;
73 }
74}
75
76}
77
78}
79
80#endif
const H5::PredType & as_numeric_datatype()
Definition as_numeric_datatype.hpp:27
Helper functions for ArtifactDB parsing and validation.
Definition Pointer.hpp:21