aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/typecase
blob: abb79038d6cb7b55793c73b3b276fd19f40fb6f0 (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
179
180
181
182
183
184
185
186
187
// Instantiate type cases for all available types    -*-C++-*-
// (C) 2001 Erik Schnetter <schnetter@uni-tuebingen.de>

// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/typecase,v 1.9 2004/03/01 21:34:52 schnetter Exp $

// Usage:
// Define the macro TYPECASE(N,T) to be a typecase for the type T with name N,
// then include this file,
// then undefine the macro TYPECASE.



// Decide which types to typecase

#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



// Typecase the desired types

#ifdef CARPET_BYTE
TYPECASE(CCTK_VARIABLE_BYTE, CCTK_BYTE)
#endif

#ifdef CARPET_INT
TYPECASE(CCTK_VARIABLE_INT, CCTK_INT)
#endif
#ifdef CARPET_INT1
#  ifdef CCTK_INT1
TYPECASE(CCTK_VARIABLE_INT1, CCTK_INT1)
#  endif
#endif
#ifdef CARPET_INT2
#  ifdef CCTK_INT2
TYPECASE(CCTK_VARIABLE_INT2, CCTK_INT2)
#  endif
#endif
#ifdef CARPET_INT4
#  ifdef CCTK_INT4
TYPECASE(CCTK_VARIABLE_INT4, CCTK_INT4)
#  endif
#endif
#ifdef CARPET_INT8
#  ifdef CCTK_INT8
TYPECASE(CCTK_VARIABLE_INT8, CCTK_INT8)
#  endif
#endif

#ifdef CARPET_REAL
TYPECASE(CCTK_VARIABLE_REAL, CCTK_REAL)
#endif
#ifdef CARPET_REAL4
#  ifdef CCTK_REAL4
TYPECASE(CCTK_VARIABLE_REAL4, CCTK_REAL4)
#  endif
#endif
#ifdef CARPET_REAL8
#  ifdef CCTK_REAL8
TYPECASE(CCTK_VARIABLE_REAL8, CCTK_REAL8)
#  endif
#endif
#ifdef CARPET_REAL16
#  ifdef CCTK_REAL16
TYPECASE(CCTK_VARIABLE_REAL16, CCTK_REAL16)
#  endif
#endif

#ifdef CARPET_COMPLEX
TYPECASE(CCTK_VARIABLE_COMPLEX, CCTK_COMPLEX)
#endif
#ifdef CARPET_COMPLEX8
#  ifdef CCTK_REAL4
TYPECASE(CCTK_VARIABLE_COMPLEX8, CCTK_COMPLEX8)
#  endif
#endif
#ifdef CARPET_COMPLEX16
#  ifdef CCTK_REAL8
TYPECASE(CCTK_VARIABLE_COMPLEX16, CCTK_COMPLEX16)
#  endif
#endif
#ifdef CARPET_COMPLEX32
#  ifdef CCTK_REAL16
TYPECASE(CCTK_VARIABLE_COMPLEX32, CCTK_COMPLEX32)
#  endif
#endif