ViennaLS
Loading...
Searching...
No Matches
lsPreCompileMacros.hpp
Go to the documentation of this file.
1#pragma once
2
3#ifdef VIENNALS_USE_PRECOMPILED
4
5#define PRECOMPILE_PRECISION_DIMENSION(className) \
6 typedef className<double, 2> className##_double_2; \
7 typedef className<double, 3> className##_double_3; \
8 typedef className<float, 2> className##_float_2; \
9 typedef className<float, 3> className##_float_3; \
10 extern template class className<double, 2>; \
11 extern template class className<double, 3>; \
12 extern template class className<float, 2>; \
13 extern template class className<float, 3>;
14
15#define PRECOMPILE_PRECISION(className) \
16 typedef className<double> className##_double; \
17 typedef className<float> className##_float; \
18 extern template class className<double>; \
19 extern template class className<float>;
20
21#else
22
23// do nothing if we use header only
24#define PRECOMPILE_PRECISION_DIMENSION(className) \
25 typedef className<double, 2> className##_double_2; \
26 typedef className<double, 3> className##_double_3; \
27 typedef className<float, 2> className##_float_2; \
28 typedef className<float, 3> className##_float_3;
29
30#define PRECOMPILE_PRECISION(className) \
31 typedef className<double> className##_double; \
32 typedef className<float> className##_float;
33
34#endif
35
36#define PRECOMPILE_SPECIALIZE(className) \
37 template class className<double, 2>; \
38 template class className<double, 3>; \
39 template class className<float, 2>; \
40 template class className<float, 3>;
41
42#define PRECOMPILE_SPECIALIZE_PRECISION(className) \
43 template class className<double>; \
44 template class className<float>;