MRMD
0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
device.hpp
Go to the documentation of this file.
1
// Copyright 2024 Sebastian Eibl
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#pragma once
16
17
#include "cmake.hpp"
18
#include "
normal.hpp
"
19
#include "
verbose.hpp
"
20
21
#ifdef VERBOSE_ASSERT
22
#define MRMD_DEVICE_CHECK_1(X) \
23
{ \
24
MRMD_VERBOSE_CHECK_1(X) \
25
}
26
#define MRMD_DEVICE_CHECK_2(X, MSG) \
27
{ \
28
MRMD_VERBOSE_CHECK_2(X, MSG) \
29
}
30
31
#define MRMD_DEVICE_CHECK_NULLPTR_1(X) \
32
{ \
33
MRMD_VERBOSE_CHECK_NULLPTR_1(X) \
34
}
35
#define MRMD_DEVICE_CHECK_NULLPTR_2(X, MSG) \
36
{ \
37
MRMD_VERBOSE_CHECK_NULLPTR_2(X, MSG) \
38
}
39
40
#define MRMD_DEVICE_CHECK_NOT_NULLPTR_1(X) \
41
{ \
42
MRMD_VERBOSE_CHECK_NOT_NULLPTR_1(X) \
43
}
44
#define MRMD_DEVICE_CHECK_NOT_NULLPTR_2(X, MSG) \
45
{ \
46
MRMD_VERBOSE_CHECK_NOT_NULLPTR_2(X, MSG) \
47
}
48
49
#define MRMD_DEVICE_CHECK_EQUAL_2(X, Y) \
50
{ \
51
MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
52
}
53
#define MRMD_DEVICE_CHECK_EQUAL_3(X, Y, MSG) \
54
{ \
55
MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
56
}
57
58
#define MRMD_DEVICE_CHECK_FLOAT_EQUAL_2(X, Y) \
59
{ \
60
MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
61
}
62
#define MRMD_DEVICE_CHECK_FLOAT_EQUAL_3(X, Y, MSG) \
63
{ \
64
MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
65
}
66
67
#define MRMD_DEVICE_CHECK_NOT_EQUAL_2(X, Y) \
68
{ \
69
MRMD_VERBOSE_CHECK_NOT_EQUAL_2(X, Y) \
70
}
71
#define MRMD_DEVICE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
72
{ \
73
MRMD_VERBOSE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
74
}
75
76
#define MRMD_DEVICE_CHECK_GREATER_2(X, Y) \
77
{ \
78
MRMD_VERBOSE_CHECK_GREATER_2(X, Y) \
79
}
80
#define MRMD_DEVICE_CHECK_GREATER_3(X, Y, MSG) \
81
{ \
82
MRMD_VERBOSE_CHECK_GREATER_3(X, Y, MSG) \
83
}
84
85
#define MRMD_DEVICE_CHECK_LESS_2(X, Y) \
86
{ \
87
MRMD_VERBOSE_CHECK_LESS_2(X, Y) \
88
}
89
#define MRMD_DEVICE_CHECK_LESS_3(X, Y, MSG) \
90
{ \
91
MRMD_VERBOSE_CHECK_LESS_3(X, Y, MSG) \
92
}
93
94
#define MRMD_DEVICE_CHECK_GREATEREQUAL_2(X, Y) \
95
{ \
96
MRMD_VERBOSE_CHECK_GREATEREQUAL_2(X, Y) \
97
}
98
#define MRMD_DEVICE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
99
{ \
100
MRMD_VERBOSE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
101
}
102
103
#define MRMD_DEVICE_CHECK_LESSEQUAL_2(X, Y) \
104
{ \
105
MRMD_VERBOSE_CHECK_LESSEQUAL_2(X, Y) \
106
}
107
#define MRMD_DEVICE_CHECK_LESSEQUAL_3(X, Y, MSG) \
108
{ \
109
MRMD_VERBOSE_CHECK_LESSEQUAL_3(X, Y, MSG) \
110
}
111
#else
112
#define MRMD_DEVICE_CHECK_1(X) \
113
{ \
114
MRMD_NORMAL_CHECK_1(X) \
115
}
116
#define MRMD_DEVICE_CHECK_2(X, MSG) \
117
{ \
118
MRMD_NORMAL_CHECK_2(X, MSG) \
119
}
120
121
#define MRMD_DEVICE_CHECK_NULLPTR_1(X) \
122
{ \
123
MRMD_NORMAL_CHECK_NULLPTR_1(X) \
124
}
125
#define MRMD_DEVICE_CHECK_NULLPTR_2(X, MSG) \
126
{ \
127
MRMD_NORMAL_CHECK_NULLPTR_2(X, MSG) \
128
}
129
130
#define MRMD_DEVICE_CHECK_NOT_NULLPTR_1(X) \
131
{ \
132
MRMD_NORMAL_CHECK_NOT_NULLPTR_1(X) \
133
}
134
#define MRMD_DEVICE_CHECK_NOT_NULLPTR_2(X, MSG) \
135
{ \
136
MRMD_NORMAL_CHECK_NOT_NULLPTR_2(X, MSG) \
137
}
138
139
#define MRMD_DEVICE_CHECK_EQUAL_2(X, Y) \
140
{ \
141
MRMD_NORMAL_CHECK_EQUAL_2(X, Y) \
142
}
143
#define MRMD_DEVICE_CHECK_EQUAL_3(X, Y, MSG) \
144
{ \
145
MRMD_NORMAL_CHECK_EQUAL_3(X, Y, MSG) \
146
}
147
148
#define MRMD_DEVICE_CHECK_FLOAT_EQUAL_2(X, Y) \
149
{ \
150
MRMD_NORMAL_CHECK_EQUAL_2(X, Y) \
151
}
152
#define MRMD_DEVICE_CHECK_FLOAT_EQUAL_3(X, Y, MSG) \
153
{ \
154
MRMD_NORMAL_CHECK_EQUAL_3(X, Y, MSG) \
155
}
156
157
#define MRMD_DEVICE_CHECK_NOT_EQUAL_2(X, Y) \
158
{ \
159
MRMD_NORMAL_CHECK_NOT_EQUAL_2(X, Y) \
160
}
161
#define MRMD_DEVICE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
162
{ \
163
MRMD_NORMAL_CHECK_NOT_EQUAL_3(X, Y, MSG) \
164
}
165
166
#define MRMD_DEVICE_CHECK_GREATER_2(X, Y) \
167
{ \
168
MRMD_NORMAL_CHECK_GREATER_2(X, Y) \
169
}
170
#define MRMD_DEVICE_CHECK_GREATER_3(X, Y, MSG) \
171
{ \
172
MRMD_NORMAL_CHECK_GREATER_3(X, Y, MSG) \
173
}
174
175
#define MRMD_DEVICE_CHECK_LESS_2(X, Y) \
176
{ \
177
MRMD_NORMAL_CHECK_LESS_2(X, Y) \
178
}
179
#define MRMD_DEVICE_CHECK_LESS_3(X, Y, MSG) \
180
{ \
181
MRMD_NORMAL_CHECK_LESS_3(X, Y, MSG) \
182
}
183
184
#define MRMD_DEVICE_CHECK_GREATEREQUAL_2(X, Y) \
185
{ \
186
MRMD_NORMAL_CHECK_GREATEREQUAL_2(X, Y) \
187
}
188
#define MRMD_DEVICE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
189
{ \
190
MRMD_NORMAL_CHECK_GREATEREQUAL_3(X, Y, MSG) \
191
}
192
193
#define MRMD_DEVICE_CHECK_LESSEQUAL_2(X, Y) \
194
{ \
195
MRMD_NORMAL_CHECK_LESSEQUAL_2(X, Y) \
196
}
197
#define MRMD_DEVICE_CHECK_LESSEQUAL_3(X, Y, MSG) \
198
{ \
199
MRMD_NORMAL_CHECK_LESSEQUAL_3(X, Y, MSG) \
200
}
201
#endif
202
203
#define MRMD_DEVICE_CHECK(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_, __VA_ARGS__)
204
#define MRMD_DEVICE_CHECK_NULLPTR(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_EQUAL_, __VA_ARGS__)
205
#define MRMD_DEVICE_CHECK_NOT_NULLPTR(...) \
206
MACRO_OVERLOAD(MRMD_DEVICE_CHECK_NOT_NULLPTR_, __VA_ARGS__)
207
#define MRMD_DEVICE_CHECK_EQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_EQUAL_, __VA_ARGS__)
208
#define MRMD_DEVICE_CHECK_NOT_EQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_NOT_EQUAL_, __VA_ARGS__)
209
#define MRMD_DEVICE_CHECK_GREATER(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_GREATER_, __VA_ARGS__)
210
#define MRMD_DEVICE_CHECK_LESS(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_LESS_, __VA_ARGS__)
211
#define MRMD_DEVICE_CHECK_GREATEREQUAL(...) \
212
MACRO_OVERLOAD(MRMD_DEVICE_CHECK_GREATEREQUAL_, __VA_ARGS__)
213
#define MRMD_DEVICE_CHECK_LESSEQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_CHECK_LESSEQUAL_, __VA_ARGS__)
214
215
#ifndef NDEBUG
216
#ifdef VERBOSE_ASSERT
217
#define MRMD_DEVICE_ASSERT_1(X) \
218
{ \
219
MRMD_VERBOSE_CHECK_1(X) \
220
}
221
#define MRMD_DEVICE_ASSERT_2(X, MSG) \
222
{ \
223
MRMD_VERBOSE_CHECK_2(X, MSG) \
224
}
225
226
#define MRMD_DEVICE_ASSERT_NULLPTR_1(X) \
227
{ \
228
MRMD_VERBOSE_CHECK_NULLPTR_1(X) \
229
}
230
#define MRMD_DEVICE_ASSERT_NULLPTR_2(X, MSG) \
231
{ \
232
MRMD_VERBOSE_CHECK_NULLPTR_2(X, MSG) \
233
}
234
235
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_1(X) \
236
{ \
237
MRMD_VERBOSE_CHECK_NOT_NULLPTR_1(X) \
238
}
239
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_2(X, MSG) \
240
{ \
241
MRMD_VERBOSE_CHECK_NOT_NULLPTR_2(X, MSG) \
242
}
243
244
#define MRMD_DEVICE_ASSERT_EQUAL_2(X, Y) \
245
{ \
246
MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
247
}
248
#define MRMD_DEVICE_ASSERT_EQUAL_3(X, Y, MSG) \
249
{ \
250
MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
251
}
252
253
#define MRMD_DEVICE_ASSERT_FLOAT_EQUAL_2(X, Y) \
254
{ \
255
MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
256
}
257
#define MRMD_DEVICE_ASSERT_FLOAT_EQUAL_3(X, Y, MSG) \
258
{ \
259
MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
260
}
261
262
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_2(X, Y) \
263
{ \
264
MRMD_VERBOSE_CHECK_NOT_EQUAL_2(X, Y) \
265
}
266
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_3(X, Y, MSG) \
267
{ \
268
MRMD_VERBOSE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
269
}
270
271
#define MRMD_DEVICE_ASSERT_GREATER_2(X, Y) \
272
{ \
273
MRMD_VERBOSE_CHECK_GREATER_2(X, Y) \
274
}
275
#define MRMD_DEVICE_ASSERT_GREATER_3(X, Y, MSG) \
276
{ \
277
MRMD_VERBOSE_CHECK_GREATER_3(X, Y, MSG) \
278
}
279
280
#define MRMD_DEVICE_ASSERT_LESS_2(X, Y) \
281
{ \
282
MRMD_VERBOSE_CHECK_LESS_2(X, Y) \
283
}
284
#define MRMD_DEVICE_ASSERT_LESS_3(X, Y, MSG) \
285
{ \
286
MRMD_VERBOSE_CHECK_LESS_3(X, Y, MSG) \
287
}
288
289
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_2(X, Y) \
290
{ \
291
MRMD_VERBOSE_CHECK_GREATEREQUAL_2(X, Y) \
292
}
293
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_3(X, Y, MSG) \
294
{ \
295
MRMD_VERBOSE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
296
}
297
298
#define MRMD_DEVICE_ASSERT_LESSEQUAL_2(X, Y) \
299
{ \
300
MRMD_VERBOSE_CHECK_LESSEQUAL_2(X, Y) \
301
}
302
#define MRMD_DEVICE_ASSERT_LESSEQUAL_3(X, Y, MSG) \
303
{ \
304
MRMD_VERBOSE_CHECK_LESSEQUAL_3(X, Y, MSG) \
305
}
306
#else
307
#define MRMD_DEVICE_ASSERT_1(X) \
308
{ \
309
MRMD_NORMAL_CHECK_1(X) \
310
}
311
#define MRMD_DEVICE_ASSERT_2(X, MSG) \
312
{ \
313
MRMD_NORMAL_CHECK_2(X, MSG) \
314
}
315
316
#define MRMD_DEVICE_ASSERT_NULLPTR_1(X) \
317
{ \
318
MRMD_NORMAL_CHECK_NULLPTR_1(X) \
319
}
320
#define MRMD_DEVICE_ASSERT_NULLPTR_2(X, MSG) \
321
{ \
322
MRMD_NORMAL_CHECK_NULLPTR_2(X, MSG) \
323
}
324
325
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_1(X) \
326
{ \
327
MRMD_NORMAL_CHECK_NOT_NULLPTR_1(X) \
328
}
329
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_2(X, MSG) \
330
{ \
331
MRMD_NORMAL_CHECK_NOT_NULLPTR_2(X, MSG) \
332
}
333
334
#define MRMD_DEVICE_ASSERT_EQUAL_2(X, Y) \
335
{ \
336
MRMD_NORMAL_CHECK_EQUAL_2(X, Y) \
337
}
338
#define MRMD_DEVICE_ASSERT_EQUAL_3(X, Y, MSG) \
339
{ \
340
MRMD_NORMAL_CHECK_EQUAL_3(X, Y, MSG) \
341
}
342
343
#define MRMD_DEVICE_ASSERT_FLOAT_EQUAL_2(X, Y) \
344
{ \
345
MRMD_NORMAL_CHECK_EQUAL_2(X, Y) \
346
}
347
#define MRMD_DEVICE_ASSERT_FLOAT_EQUAL_3(X, Y, MSG) \
348
{ \
349
MRMD_NORMAL_CHECK_EQUAL_3(X, Y, MSG) \
350
}
351
352
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_2(X, Y) \
353
{ \
354
MRMD_NORMAL_CHECK_NOT_EQUAL_2(X, Y) \
355
}
356
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_3(X, Y, MSG) \
357
{ \
358
MRMD_NORMAL_CHECK_NOT_EQUAL_3(X, Y, MSG) \
359
}
360
361
#define MRMD_DEVICE_ASSERT_GREATER_2(X, Y) \
362
{ \
363
MRMD_NORMAL_CHECK_GREATER_2(X, Y) \
364
}
365
#define MRMD_DEVICE_ASSERT_GREATER_3(X, Y, MSG) \
366
{ \
367
MRMD_NORMAL_CHECK_GREATER_3(X, Y, MSG) \
368
}
369
370
#define MRMD_DEVICE_ASSERT_LESS_2(X, Y) \
371
{ \
372
MRMD_NORMAL_CHECK_LESS_2(X, Y) \
373
}
374
#define MRMD_DEVICE_ASSERT_LESS_3(X, Y, MSG) \
375
{ \
376
MRMD_NORMAL_CHECK_LESS_3(X, Y, MSG) \
377
}
378
379
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_2(X, Y) \
380
{ \
381
MRMD_NORMAL_CHECK_GREATEREQUAL_2(X, Y) \
382
}
383
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_3(X, Y, MSG) \
384
{ \
385
MRMD_NORMAL_CHECK_GREATEREQUAL_3(X, Y, MSG) \
386
}
387
388
#define MRMD_DEVICE_ASSERT_LESSEQUAL_2(X, Y) \
389
{ \
390
MRMD_NORMAL_CHECK_LESSEQUAL_2(X, Y) \
391
}
392
#define MRMD_DEVICE_ASSERT_LESSEQUAL_3(X, Y, MSG) \
393
{ \
394
MRMD_NORMAL_CHECK_LESSEQUAL_3(X, Y, MSG) \
395
}
396
#endif
397
398
#else
399
400
#define MRMD_DEVICE_ASSERT_1(X) \
401
{ \
402
}
403
#define MRMD_DEVICE_ASSERT_2(X, MSG) \
404
{ \
405
}
406
407
#define MRMD_DEVICE_ASSERT_NULLPTR_1(X) \
408
{ \
409
}
410
#define MRMD_DEVICE_ASSERT_NULLPTR_2(X, MSG) \
411
{ \
412
}
413
414
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_1(X) \
415
{ \
416
}
417
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR_2(X, MSG) \
418
{ \
419
}
420
421
#define MRMD_DEVICE_ASSERT_EQUAL_2(X, Y) \
422
{ \
423
}
424
#define MRMD_DEVICE_ASSERT_EQUAL_3(X, Y, MSG) \
425
{ \
426
}
427
428
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_2(X, Y) \
429
{ \
430
}
431
#define MRMD_DEVICE_ASSERT_NOT_EQUAL_3(X, Y, MSG) \
432
{ \
433
}
434
435
#define MRMD_DEVICE_ASSERT_GREATER_2(X, Y) \
436
{ \
437
}
438
#define MRMD_DEVICE_ASSERT_GREATER_3(X, Y, MSG) \
439
{ \
440
}
441
442
#define MRMD_DEVICE_ASSERT_LESS_2(X, Y) \
443
{ \
444
}
445
#define MRMD_DEVICE_ASSERT_LESS_3(X, Y, MSG) \
446
{ \
447
}
448
449
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_2(X, Y) \
450
{ \
451
}
452
#define MRMD_DEVICE_ASSERT_GREATEREQUAL_3(X, Y, MSG) \
453
{ \
454
}
455
456
#define MRMD_DEVICE_ASSERT_LESSEQUAL_2(X, Y) \
457
{ \
458
}
459
#define MRMD_DEVICE_ASSERT_LESSEQUAL_3(X, Y, MSG) \
460
{ \
461
}
462
463
#endif
464
465
#define MRMD_DEVICE_ASSERT(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_, __VA_ARGS__)
466
#define MRMD_DEVICE_ASSERT_NULLPTR(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_EQUAL_, __VA_ARGS__)
467
#define MRMD_DEVICE_ASSERT_NOT_NULLPTR(...) \
468
MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_NOT_NULLPTR_, __VA_ARGS__)
469
#define MRMD_DEVICE_ASSERT_EQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_EQUAL_, __VA_ARGS__)
470
#define MRMD_DEVICE_ASSERT_NOT_EQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_NOT_EQUAL_, __VA_ARGS__)
471
#define MRMD_DEVICE_ASSERT_GREATER(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_GREATER_, __VA_ARGS__)
472
#define MRMD_DEVICE_ASSERT_LESS(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_LESS_, __VA_ARGS__)
473
#define MRMD_DEVICE_ASSERT_GREATEREQUAL(...) \
474
MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_GREATEREQUAL_, __VA_ARGS__)
475
#define MRMD_DEVICE_ASSERT_LESSEQUAL(...) MACRO_OVERLOAD(MRMD_DEVICE_ASSERT_LESSEQUAL_, __VA_ARGS__)
normal.hpp
verbose.hpp
mrmd
assert
device.hpp
Generated by
1.9.8