MRMD 0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
host.hpp
Go to the documentation of this file.
1// Copyright 2024 Sebastian Eibl
2// Copyright 2026 Julian Friedrich Hille
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// https://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include "verbose.hpp"
19
20#define MRMD_HOST_CHECK_1(X) \
21 { \
22 MRMD_VERBOSE_CHECK_1(X) \
23 }
24#define MRMD_HOST_CHECK_2(X, MSG) \
25 { \
26 MRMD_VERBOSE_CHECK_2(X, MSG) \
27 }
28
29#define MRMD_HOST_CHECK_NULLPTR_1(X) \
30 { \
31 MRMD_VERBOSE_CHECK_NULLPTR_1(X) \
32 }
33#define MRMD_HOST_CHECK_NULLPTR_2(X, MSG) \
34 { \
35 MRMD_VERBOSE_CHECK_NULLPTR_2(X, MSG) \
36 }
37
38#define MRMD_HOST_CHECK_NOT_NULLPTR_1(X) \
39 { \
40 MRMD_VERBOSE_CHECK_NOT_NULLPTR_1(X) \
41 }
42#define MRMD_HOST_CHECK_NOT_NULLPTR_2(X, MSG) \
43 { \
44 MRMD_VERBOSE_CHECK_NOT_NULLPTR_2(X, MSG) \
45 }
46
47#define MRMD_HOST_CHECK_EQUAL_2(X, Y) \
48 { \
49 MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
50 }
51#define MRMD_HOST_CHECK_EQUAL_3(X, Y, MSG) \
52 { \
53 MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
54 }
55
56#define MRMD_HOST_CHECK_FLOAT_EQUAL_2(X, Y) \
57 { \
58 MRMD_VERBOSE_CHECK_FLOAT_EQUAL_2(X, Y) \
59 }
60#define MRMD_HOST_CHECK_FLOAT_EQUAL_3(X, Y, MSG) \
61 { \
62 MRMD_VERBOSE_CHECK_FLOAT_EQUAL_3(X, Y, MSG) \
63 }
64
65#define MRMD_HOST_CHECK_NOT_EQUAL_2(X, Y) \
66 { \
67 MRMD_VERBOSE_CHECK_NOT_EQUAL_2(X, Y) \
68 }
69#define MRMD_HOST_CHECK_NOT_EQUAL_3(X, Y, MSG) \
70 { \
71 MRMD_VERBOSE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
72 }
73
74#define MRMD_HOST_CHECK_GREATER_2(X, Y) \
75 { \
76 MRMD_VERBOSE_CHECK_GREATER_2(X, Y) \
77 }
78#define MRMD_HOST_CHECK_GREATER_3(X, Y, MSG) \
79 { \
80 MRMD_VERBOSE_CHECK_GREATER_3(X, Y, MSG) \
81 }
82
83#define MRMD_HOST_CHECK_LESS_2(X, Y) \
84 { \
85 MRMD_VERBOSE_CHECK_LESS_2(X, Y) \
86 }
87#define MRMD_HOST_CHECK_LESS_3(X, Y, MSG) \
88 { \
89 MRMD_VERBOSE_CHECK_LESS_3(X, Y, MSG) \
90 }
91
92#define MRMD_HOST_CHECK_GREATEREQUAL_2(X, Y) \
93 { \
94 MRMD_VERBOSE_CHECK_GREATEREQUAL_2(X, Y) \
95 }
96#define MRMD_HOST_CHECK_GREATEREQUAL_3(X, Y, MSG) \
97 { \
98 MRMD_VERBOSE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
99 }
100
101#define MRMD_HOST_CHECK_LESSEQUAL_2(X, Y) \
102 { \
103 MRMD_VERBOSE_CHECK_LESSEQUAL_2(X, Y) \
104 }
105#define MRMD_HOST_CHECK_LESSEQUAL_3(X, Y, MSG) \
106 { \
107 MRMD_VERBOSE_CHECK_LESSEQUAL_3(X, Y, MSG) \
108 }
109
110#define MRMD_HOST_CHECK(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_, __VA_ARGS__)
111#define MRMD_HOST_CHECK_NULLPTR(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_NULLPTR_, __VA_ARGS__)
112#define MRMD_HOST_CHECK_NOT_NULLPTR(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_NOT_NULLPTR_, __VA_ARGS__)
113#define MRMD_HOST_CHECK_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_EQUAL_, __VA_ARGS__)
114#define MRMD_HOST_CHECK_FLOAT_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_FLOAT_EQUAL_, __VA_ARGS__)
115#define MRMD_HOST_CHECK_NOT_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_NOT_EQUAL_, __VA_ARGS__)
116#define MRMD_HOST_CHECK_GREATER(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_GREATER_, __VA_ARGS__)
117#define MRMD_HOST_CHECK_LESS(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_LESS_, __VA_ARGS__)
118#define MRMD_HOST_CHECK_GREATEREQUAL(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_GREATEREQUAL_, __VA_ARGS__)
119#define MRMD_HOST_CHECK_LESSEQUAL(...) MACRO_OVERLOAD(MRMD_HOST_CHECK_LESSEQUAL_, __VA_ARGS__)
120
121#ifndef NDEBUG
122#define MRMD_HOST_ASSERT_1(X) \
123 { \
124 MRMD_VERBOSE_CHECK_1(X) \
125 }
126#define MRMD_HOST_ASSERT_2(X, MSG) \
127 { \
128 MRMD_VERBOSE_CHECK_2(X, MSG) \
129 }
130
131#define MRMD_HOST_ASSERT_NULLPTR_1(X) \
132 { \
133 MRMD_VERBOSE_CHECK_NULLPTR_1(X) \
134 }
135#define MRMD_HOST_ASSERT_NULLPTR_2(X, MSG) \
136 { \
137 MRMD_VERBOSE_CHECK_NULLPTR_2(X, MSG) \
138 }
139
140#define MRMD_HOST_ASSERT_NOT_NULLPTR_1(X) \
141 { \
142 MRMD_VERBOSE_CHECK_NOT_NULLPTR_1(X) \
143 }
144#define MRMD_HOST_ASSERT_NOT_NULLPTR_2(X, MSG) \
145 { \
146 MRMD_VERBOSE_CHECK_NOT_NULLPTR_2(X, MSG) \
147 }
148
149#define MRMD_HOST_ASSERT_EQUAL_2(X, Y) \
150 { \
151 MRMD_VERBOSE_CHECK_EQUAL_2(X, Y) \
152 }
153#define MRMD_HOST_ASSERT_EQUAL_3(X, Y, MSG) \
154 { \
155 MRMD_VERBOSE_CHECK_EQUAL_3(X, Y, MSG) \
156 }
157
158#define MRMD_HOST_ASSERT_FLOAT_EQUAL_2(X, Y) \
159 { \
160 MRMD_VERBOSE_CHECK_FLOAT_EQUAL_2(X, Y) \
161 }
162#define MRMD_HOST_ASSERT_FLOAT_EQUAL_3(X, Y, MSG) \
163 { \
164 MRMD_VERBOSE_CHECK_FLOAT_EQUAL_3(X, Y, MSG) \
165 }
166
167#define MRMD_HOST_ASSERT_NOT_EQUAL_2(X, Y) \
168 { \
169 MRMD_VERBOSE_CHECK_NOT_EQUAL_2(X, Y) \
170 }
171#define MRMD_HOST_ASSERT_NOT_EQUAL_3(X, Y, MSG) \
172 { \
173 MRMD_VERBOSE_CHECK_NOT_EQUAL_3(X, Y, MSG) \
174 }
175
176#define MRMD_HOST_ASSERT_GREATER_2(X, Y) \
177 { \
178 MRMD_VERBOSE_CHECK_GREATER_2(X, Y) \
179 }
180#define MRMD_HOST_ASSERT_GREATER_3(X, Y, MSG) \
181 { \
182 MRMD_VERBOSE_CHECK_GREATER_3(X, Y, MSG) \
183 }
184
185#define MRMD_HOST_ASSERT_LESS_2(X, Y) \
186 { \
187 MRMD_VERBOSE_CHECK_LESS_2(X, Y) \
188 }
189#define MRMD_HOST_ASSERT_LESS_3(X, Y, MSG) \
190 { \
191 MRMD_VERBOSE_CHECK_LESS_3(X, Y, MSG) \
192 }
193
194#define MRMD_HOST_ASSERT_GREATEREQUAL_2(X, Y) \
195 { \
196 MRMD_VERBOSE_CHECK_GREATEREQUAL_2(X, Y) \
197 }
198#define MRMD_HOST_ASSERT_GREATEREQUAL_3(X, Y, MSG) \
199 { \
200 MRMD_VERBOSE_CHECK_GREATEREQUAL_3(X, Y, MSG) \
201 }
202
203#define MRMD_HOST_ASSERT_LESSEQUAL_2(X, Y) \
204 { \
205 MRMD_VERBOSE_CHECK_LESSEQUAL_2(X, Y) \
206 }
207#define MRMD_HOST_ASSERT_LESSEQUAL_3(X, Y, MSG) \
208 { \
209 MRMD_VERBOSE_CHECK_LESSEQUAL_3(X, Y, MSG) \
210 }
211
212#else
213
214#define MRMD_HOST_ASSERT_1(X) \
215 { \
216 }
217#define MRMD_HOST_ASSERT_2(X, MSG) \
218 { \
219 }
220
221#define MRMD_HOST_ASSERT_NULLPTR_1(X) \
222 { \
223 }
224#define MRMD_HOST_ASSERT_NULLPTR_2(X, MSG) \
225 { \
226 }
227
228#define MRMD_HOST_ASSERT_NOT_NULLPTR_1(X) \
229 { \
230 }
231#define MRMD_HOST_ASSERT_NOT_NULLPTR_2(X, MSG) \
232 { \
233 }
234
235#define MRMD_HOST_ASSERT_EQUAL_2(X, Y) \
236 { \
237 }
238#define MRMD_HOST_ASSERT_EQUAL_3(X, Y, MSG) \
239 { \
240 }
241
242#define MRMD_HOST_ASSERT_NOT_EQUAL_2(X, Y) \
243 { \
244 }
245#define MRMD_HOST_ASSERT_NOT_EQUAL_3(X, Y, MSG) \
246 { \
247 }
248
249#define MRMD_HOST_ASSERT_GREATER_2(X, Y) \
250 { \
251 }
252#define MRMD_HOST_ASSERT_GREATER_3(X, Y, MSG) \
253 { \
254 }
255
256#define MRMD_HOST_ASSERT_LESS_2(X, Y) \
257 { \
258 }
259#define MRMD_HOST_ASSERT_LESS_3(X, Y, MSG) \
260 { \
261 }
262
263#define MRMD_HOST_ASSERT_GREATEREQUAL_2(X, Y) \
264 { \
265 }
266#define MRMD_HOST_ASSERT_GREATEREQUAL_3(X, Y, MSG) \
267 { \
268 }
269
270#define MRMD_HOST_ASSERT_LESSEQUAL_2(X, Y) \
271 { \
272 }
273#define MRMD_HOST_ASSERT_LESSEQUAL_3(X, Y, MSG) \
274 { \
275 }
276
277#endif
278
279#define MRMD_HOST_ASSERT(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_, __VA_ARGS__)
280#define MRMD_HOST_ASSERT_NULLPTR(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_NULLPTR_, __VA_ARGS__)
281#define MRMD_HOST_ASSERT_NOT_NULLPTR(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_NOT_NULLPTR_, __VA_ARGS__)
282#define MRMD_HOST_ASSERT_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_EQUAL_, __VA_ARGS__)
283#define MRMD_HOST_ASSERT_FLOAT_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_FLOAT_EQUAL_, __VA_ARGS__)
284#define MRMD_HOST_ASSERT_NOT_EQUAL(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_NOT_EQUAL_, __VA_ARGS__)
285#define MRMD_HOST_ASSERT_GREATER(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_GREATER_, __VA_ARGS__)
286#define MRMD_HOST_ASSERT_LESS(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_LESS_, __VA_ARGS__)
287#define MRMD_HOST_ASSERT_GREATEREQUAL(...) \
288 MACRO_OVERLOAD(MRMD_HOST_ASSERT_GREATEREQUAL_, __VA_ARGS__)
289#define MRMD_HOST_ASSERT_LESSEQUAL(...) MACRO_OVERLOAD(MRMD_HOST_ASSERT_LESSEQUAL_, __VA_ARGS__)