1 #ifndef teca_type_elevate_h
2 #define teca_type_elevate_h
6 #include "teca_config.h"
19 template <
typename t1,
typename t2>
30 template <
typename t1,
typename t2>
33 #define teca_type_select(_class, _ret, _t1, _t2) \
36 struct _class<_t1, _t2> \
42 static _ret cast(_t1 arg){ return arg; } \
45 static constexpr const char *type_name() \
49 #define teca_type_elevate_case(_ret, _t1, _t2) \
50 teca_type_select(elevate, _ret, _t1, _t2) \
52 #define teca_type_elevate_sym_case(_ret, _t1, _t2) \
53 teca_type_elevate_case(_ret, _t1, _t2) \
54 teca_type_elevate_case(_ret, _t2, _t1)
56 #define teca_type_decay_case(_ret, _t1, _t2) \
57 teca_type_select(decay, _ret, _t1, _t2) \
59 #define teca_type_decay_sym_case(_ret, _t1, _t2) \
60 teca_type_decay_case(_ret, _t1, _t2) \
61 teca_type_decay_case(_ret, _t2, _t1)
64 teca_type_elevate_case(
double,
double,
double)
65 teca_type_elevate_sym_case(
double,
double,
float)
66 teca_type_elevate_sym_case(
double,
double,
char)
67 teca_type_elevate_sym_case(
double,
double,
short)
68 teca_type_elevate_sym_case(
double,
double,
int)
69 teca_type_elevate_sym_case(
double,
double,
long)
70 teca_type_elevate_sym_case(
double,
double,
long long)
71 teca_type_elevate_sym_case(
double,
double,
unsigned char)
72 teca_type_elevate_sym_case(
double,
double,
unsigned short)
73 teca_type_elevate_sym_case(
double,
double,
unsigned int)
74 teca_type_elevate_sym_case(
double,
double,
unsigned long)
75 teca_type_elevate_sym_case(
double,
double,
unsigned long long)
77 teca_type_elevate_case(
float,
float,
float)
78 teca_type_elevate_sym_case(
float,
float,
char)
79 teca_type_elevate_sym_case(
float,
float,
short)
80 teca_type_elevate_sym_case(
float,
float,
int)
81 teca_type_elevate_sym_case(
float,
float,
long)
82 teca_type_elevate_sym_case(
float,
float,
long long)
83 teca_type_elevate_sym_case(
float,
float,
unsigned char)
84 teca_type_elevate_sym_case(
float,
float,
unsigned short)
85 teca_type_elevate_sym_case(
float,
float,
unsigned int)
86 teca_type_elevate_sym_case(
float,
float,
unsigned long)
87 teca_type_elevate_sym_case(
float,
float,
unsigned long long)
89 teca_type_elevate_case(
long long,
long long,
long long)
90 teca_type_elevate_sym_case(
long long,
long long,
char)
91 teca_type_elevate_sym_case(
long long,
long long,
short)
92 teca_type_elevate_sym_case(
long long,
long long,
int)
93 teca_type_elevate_sym_case(
long long,
long long,
long)
94 teca_type_elevate_sym_case(
long long,
long long,
unsigned char)
95 teca_type_elevate_sym_case(
long long,
long long,
unsigned short)
96 teca_type_elevate_sym_case(
long long,
long long,
unsigned int)
97 teca_type_elevate_sym_case(
long long,
long long,
unsigned long)
98 teca_type_elevate_sym_case(
long long,
long long,
unsigned long long)
100 teca_type_elevate_case(
unsigned long long,
unsigned long long,
unsigned long long)
101 teca_type_elevate_sym_case(
long long,
unsigned long long,
char)
102 teca_type_elevate_sym_case(
long long,
unsigned long long,
short)
103 teca_type_elevate_sym_case(
long long,
unsigned long long,
int)
104 teca_type_elevate_sym_case(
long long,
unsigned long long,
long)
105 teca_type_elevate_sym_case(
unsigned long long,
unsigned long long,
unsigned char)
106 teca_type_elevate_sym_case(
unsigned long long,
unsigned long long,
unsigned short)
107 teca_type_elevate_sym_case(
unsigned long long,
unsigned long long,
unsigned int)
108 teca_type_elevate_sym_case(
unsigned long long,
unsigned long long,
unsigned long)
110 teca_type_elevate_case(
long,
long,
long)
111 teca_type_elevate_sym_case(
long,
long,
char)
112 teca_type_elevate_sym_case(
long,
long,
short)
113 teca_type_elevate_sym_case(
long,
long,
int)
114 teca_type_elevate_sym_case(
long,
long,
unsigned char)
115 teca_type_elevate_sym_case(
long,
long,
unsigned short)
116 teca_type_elevate_sym_case(
long,
long,
unsigned int)
117 teca_type_elevate_sym_case(
long,
long,
unsigned long)
119 teca_type_elevate_case(
unsigned long,
unsigned long,
unsigned long)
120 teca_type_elevate_sym_case(
long,
unsigned long,
char)
121 teca_type_elevate_sym_case(
long,
unsigned long,
short)
122 teca_type_elevate_sym_case(
long,
unsigned long,
int)
123 teca_type_elevate_sym_case(
unsigned long,
unsigned long,
unsigned char)
124 teca_type_elevate_sym_case(
unsigned long,
unsigned long,
unsigned short)
125 teca_type_elevate_sym_case(
unsigned long,
unsigned long,
unsigned int)
127 teca_type_elevate_case(
int,
int,
int)
128 teca_type_elevate_sym_case(
int,
int,
char)
129 teca_type_elevate_sym_case(
int,
int,
short)
130 teca_type_elevate_sym_case(
int,
int,
unsigned char)
131 teca_type_elevate_sym_case(
int,
int,
unsigned short)
132 teca_type_elevate_sym_case(
int,
int,
unsigned int)
134 teca_type_elevate_case(
unsigned int,
unsigned int,
unsigned int)
135 teca_type_elevate_sym_case(
int,
unsigned int,
char)
136 teca_type_elevate_sym_case(
int,
unsigned int,
short)
137 teca_type_elevate_sym_case(
unsigned int,
unsigned int,
unsigned char)
138 teca_type_elevate_sym_case(
unsigned int,
unsigned int,
unsigned short)
140 teca_type_elevate_case(
short,
short,
short)
141 teca_type_elevate_sym_case(
short,
short,
char)
142 teca_type_elevate_sym_case(
short,
short,
unsigned char)
143 teca_type_elevate_sym_case(
short,
short,
unsigned short)
145 teca_type_elevate_case(
unsigned short,
unsigned short,
unsigned short)
146 teca_type_elevate_sym_case(
short,
unsigned short,
char)
147 teca_type_elevate_sym_case(
unsigned short,
unsigned short,
unsigned char)
149 teca_type_elevate_case(
char,
char,
char)
150 teca_type_elevate_sym_case(
char,
char,
unsigned char)
152 teca_type_elevate_case(
unsigned char,
unsigned char,
unsigned char)
155 teca_type_decay_case(
double,
double,
double)
156 teca_type_decay_sym_case(
float,
double,
float)
157 teca_type_decay_sym_case(
char,
double,
char)
158 teca_type_decay_sym_case(
int,
double,
int)
159 teca_type_decay_sym_case(
long,
double,
long)
160 teca_type_decay_sym_case(
long long,
double,
long long)
161 teca_type_decay_sym_case(
unsigned char,
double,
unsigned char)
162 teca_type_decay_sym_case(
unsigned int,
double,
unsigned int)
163 teca_type_decay_sym_case(
unsigned long,
double,
unsigned long)
164 teca_type_decay_sym_case(
unsigned long long,
double,
unsigned long long)
166 teca_type_decay_case(
float,
float,
float)
167 teca_type_decay_sym_case(
char,
float,
char)
168 teca_type_decay_sym_case(
int,
float,
int)
169 teca_type_decay_sym_case(
long,
float,
long)
170 teca_type_decay_sym_case(
long long,
float,
long long)
171 teca_type_decay_sym_case(
unsigned char,
float,
unsigned char)
172 teca_type_decay_sym_case(
unsigned int,
float,
unsigned int)
173 teca_type_decay_sym_case(
unsigned long,
float,
unsigned long)
174 teca_type_decay_sym_case(
unsigned long long,
float,
unsigned long long)
176 teca_type_decay_case(
long long,
long long,
long long)
177 teca_type_decay_sym_case(
char,
long long,
char)
178 teca_type_decay_sym_case(
int,
long long,
int)
179 teca_type_decay_sym_case(
long,
long long,
long)
180 teca_type_decay_sym_case(
unsigned char,
long long,
unsigned char)
181 teca_type_decay_sym_case(
unsigned int,
long long,
unsigned int)
182 teca_type_decay_sym_case(
unsigned long,
long long,
unsigned long)
183 teca_type_decay_sym_case(
unsigned long long,
long long,
unsigned long long)
185 teca_type_decay_case(
unsigned long long,
unsigned long long,
unsigned long long)
186 teca_type_decay_sym_case(
unsigned char,
unsigned long long,
char)
187 teca_type_decay_sym_case(
unsigned int,
unsigned long long,
int)
188 teca_type_decay_sym_case(
unsigned long,
unsigned long long,
long)
189 teca_type_decay_sym_case(
unsigned char,
unsigned long long,
unsigned char)
190 teca_type_decay_sym_case(
unsigned int,
unsigned long long,
unsigned int)
191 teca_type_decay_sym_case(
unsigned long,
unsigned long long,
unsigned long)
193 teca_type_decay_case(
long,
long,
long)
194 teca_type_decay_sym_case(
char,
long,
char)
195 teca_type_decay_sym_case(
int,
long,
int)
196 teca_type_decay_sym_case(
unsigned char,
long,
unsigned char)
197 teca_type_decay_sym_case(
unsigned int,
long,
unsigned int)
198 teca_type_decay_sym_case(
unsigned long,
long,
unsigned long)
200 teca_type_decay_case(
unsigned long,
unsigned long,
unsigned long)
201 teca_type_decay_sym_case(
unsigned char,
unsigned long,
char)
202 teca_type_decay_sym_case(
unsigned int,
unsigned long,
int)
203 teca_type_decay_sym_case(
unsigned char,
unsigned long,
unsigned char)
204 teca_type_decay_sym_case(
unsigned int,
unsigned long,
unsigned int)
206 teca_type_decay_case(
int,
int,
int)
207 teca_type_decay_sym_case(
char,
int,
char)
208 teca_type_decay_sym_case(
unsigned char,
int,
unsigned char)
209 teca_type_decay_sym_case(
unsigned int,
int,
unsigned int)
211 teca_type_decay_case(
unsigned int,
unsigned int,
unsigned int)
212 teca_type_decay_sym_case(
unsigned char,
unsigned int,
char)
213 teca_type_decay_sym_case(
unsigned char,
unsigned int,
unsigned char)
215 teca_type_decay_case(
char,
char,
char)
216 teca_type_decay_sym_case(
unsigned char,
char,
unsigned char)
218 teca_type_decay_case(
unsigned char,
unsigned char,
unsigned char)
p_teca_error_handler error_handler TECA_EXPORT
The global error handler instance.
Select a type based on input type(s)
Definition: teca_type_select.h:10
Select the lower precision type.
Definition: teca_type_select.h:31
Select the higher precision type.
Definition: teca_type_select.h:20