lamppp
Loading...
Searching...
No Matches
dispatch_type.hpp
1#pragma once
2
3#include "lamppp/common/assert.hpp"
4#include <cstdint>
5
7
13#define LMP_DISPATCH_ALL_TYPES(TYPE, ...) \
14 [&] { \
15 switch (TYPE) { \
16 case DataType::Bool: { \
17 using scalar_t = bool; \
18 return __VA_ARGS__(); \
19 } \
20 case DataType::Int16: { \
21 using scalar_t = int16_t; \
22 return __VA_ARGS__(); \
23 } \
24 case DataType::Int32: { \
25 using scalar_t = int; \
26 return __VA_ARGS__(); \
27 } \
28 case DataType::Int64: { \
29 using scalar_t = int64_t; \
30 return __VA_ARGS__(); \
31 } \
32 case DataType::Float32: { \
33 using scalar_t = float; \
34 return __VA_ARGS__(); \
35 } \
36 case DataType::Float64: { \
37 using scalar_t = double; \
38 return __VA_ARGS__(); \
39 } \
40 default: { \
41 LMP_CHECK(false) << "Type not found";\
42 } \
43 } \
44 }()
45
46