aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/instantiate
blob: 1f4e2d6d78defd96dbc8729b2bc0867911a64ddd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
// Instantiate templates for all available types    -*-C++-*-
// (C) 2001 Erik Schnetter <schnetter@uni-tuebingen.de>

// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/instantiate,v 1.10 2004/03/01 21:35:13 schnetter Exp $

// Usage:
// Define the macro INSTANTIATE(T) to instantiate for the type T,
// then include this file,
// then undefine the macro INSTANTIATE.



// Decide which types to instantiate

#ifdef CARPET_ALL
#  undef CARPET_BYTE
#  undef CARPET_INT
#  undef CARPET_REAL
#  undef CARPET_COMPLEX
#  define CARPET_BYTE
#  define CARPET_INT
#  define CARPET_REAL
#  define CARPET_COMPLEX
#endif

#ifdef CARPET_ALL_INT
#  undef CARPET_INT1
#  undef CARPET_INT2
#  undef CARPET_INT4
#  undef CARPET_INT8
#  define CARPET_INT1
#  define CARPET_INT2
#  define CARPET_INT4
#  define CARPET_INT8
#endif

#ifdef CARPET_ALL_REAL
#  undef CARPET_REAL4
#  undef CARPET_REAL8
#  undef CARPET_REAL16
#  define CARPET_REAL4
#  define CARPET_REAL8
#  define CARPET_REAL16
#endif

#ifdef CARPET_ALL_COMPLEX
#  undef CARPET_COMPLEX8
#  undef CARPET_COMPLEX16
#  undef CARPET_COMPLEX32
#  define CARPET_COMPLEX8
#  define CARPET_COMPLEX16
#  define CARPET_COMPLEX32
#endif

#if !defined(CARPET_BYTE) && !defined(CARPET_INT) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32)
// Assume the user just wants INT, REAL, and COMPLEX
#  undef CARPET_INT
#  define CARPET_INT
#  undef CARPET_REAL
#  define CARPET_REAL
#  undef CARPET_COMPLEX
#  define CARPET_COMPLEX
#endif

#ifdef CARPET_INT
#  ifdef CCTK_INTEGER_PRECISION_1
#    undef CARPET_INT1
#    define CARPET_INT1
#  endif
#  ifdef CCTK_INTEGER_PRECISION_2
#    undef CARPET_INT2
#    define CARPET_INT2
#  endif
#  ifdef CCTK_INTEGER_PRECISION_4
#    undef CARPET_INT4
#    define CARPET_INT4
#  endif
#  ifdef CCTK_INTEGER_PRECISION_8
#    undef CARPET_INT8
#    define CARPET_INT8
#  endif
#endif
#ifdef CARPET_REAL
#  ifdef CCTK_REAL_PRECISION_4
#    undef CARPET_REAL4
#    define CARPET_REAL4
#  endif
#  ifdef CCTK_REAL_PRECISION_8
#    undef CARPET_REAL8
#    define CARPET_REAL8
#  endif
#  ifdef CCTK_REAL_PRECISION_16
#    undef CARPET_REAL16
#    define CARPET_REAL16
#  endif
#endif
#ifdef CARPET_COMPLEX
#  ifdef CCTK_REAL_PRECISION_4
#    undef CARPET_COMPLEX8
#    define CARPET_COMPLEX8
#  endif
#  ifdef CCTK_REAL_PRECISION_8
#    undef CARPET_COMPLEX16
#    define CARPET_COMPLEX16
#  endif
#  ifdef CCTK_REAL_PRECISION_16
#    undef CARPET_COMPLEX32
#    define CARPET_COMPLEX32
#  endif
#endif



// // Check
// #if !defined(CARPET_BYTE) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32)
// #  error "You have not defined which grid function types to instantiate."
// #endif



// Instantiate the desired types

#ifdef CARPET_BYTE
INSTANTIATE(CCTK_BYTE)
#endif

#ifdef CARPET_INT1
#  ifdef CCTK_INT1
INSTANTIATE(CCTK_INT1)
#  endif
#endif
#ifdef CARPET_INT2
#  ifdef CCTK_INT2
INSTANTIATE(CCTK_INT2)
#  endif
#endif
#ifdef CARPET_INT4
#  ifdef CCTK_INT4
INSTANTIATE(CCTK_INT4)
#  endif
#endif
#ifdef CARPET_INT8
#  ifdef CCTK_INT8
INSTANTIATE(CCTK_INT8)
#  endif
#endif

#ifdef CARPET_REAL4
#  ifdef CCTK_REAL4
INSTANTIATE(CCTK_REAL4)
#  endif
#endif
#ifdef CARPET_REAL8
#  ifdef CCTK_REAL8
INSTANTIATE(CCTK_REAL8)
#  endif
#endif
#ifdef CARPET_REAL16
#  ifdef CCTK_REAL16
INSTANTIATE(CCTK_REAL16)
#  endif
#endif

#ifdef CARPET_COMPLEX8
#  ifdef CCTK_REAL4
INSTANTIATE(CCTK_COMPLEX8)
#  endif
#endif
#ifdef CARPET_COMPLEX16
#  ifdef CCTK_REAL8
INSTANTIATE(CCTK_COMPLEX16)
#  endif
#endif
#ifdef CARPET_COMPLEX32
#  ifdef CCTK_REAL16
INSTANTIATE(CCTK_COMPLEX32)
#  endif
#endif