blob: aa084a14211c134b624db2b7ed609f54cc6a903b (
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
|
/*@@
@header cctk_types.h
@date Mon Jun 21 21:03:27 1999
@author Tom Goodale
@desc
Defines the appropriate types based upon the precision.
Should be included by config.h .
@enddesc
@@*/
#ifndef _CCTK_TYPES_H_
#define _CCTK_TYPES_H_
/* Make sure that config.h is available in case someone includes
* this by hand.
*/
#ifndef _CONFIG_H_
#include "config.h"
#endif
/* Define stuff for C. */
#ifdef CCODE
/* Structures for complex types */
#ifdef CCTK_REAL16
typedef struct
{
CCTK_REAL16 Re;
CCTK_REAL16 Im;
} CCTK_COMPLEX32;
#endif
#ifdef CCTK_REAL8
typedef struct
{
CCTK_REAL8 Re;
CCTK_REAL8 Im;
} CCTK_COMPLEX16;
#endif
#ifdef CCTK_REAL4
typedef struct
{
CCTK_REAL4 Re;
CCTK_REAL4 Im;
} CCTK_COMPLEX8;
#endif
/* Character type */
typedef unsigned char CCTK_CHAR;
#endif /* CCODE */
/* Define stuff for fortran. */
#ifdef FCODE
#define CCTK_POINTER integer*SIZEOF_CHAR_P
#define CCTK_STRING CCTK_POINTER
#define CCTK_REAL16 REAL*16
#define CCTK_REAL8 REAL*8
#define CCTK_REAL4 REAL*4
#define CCTK_INT8 INTEGER*8
#define CCTK_INT4 INTEGER*4
#define CCTK_INT2 INTEGER*2
#define CCTK_COMPLEX32 COMPLEX*32
#define CCTK_COMPLEX16 COMPLEX*16
#define CCTK_COMPLEX8 COMPLEX*8
#define CCTK_CHAR CHARACTER
#endif /*FCODE */
/* Now pick the types based upon the precision variable. */
/* Floating point precision */
#ifdef CCTK_REAL_PRECISION_16
#define CCTK_REAL CCTK_REAL16
#endif
#ifdef CCTK_REAL_PRECISION_8
#define CCTK_REAL CCTK_REAL8
#endif
#ifdef CCTK_REAL_PRECISION_4
#define CCTK_REAL CCTK_REAL4
#endif
/* Integer precision */
#ifdef CCTK_INTEGER_PRECISION_8
#define CCTK_INT CCTK_INT8
#endif
#ifdef CCTK_INTEGER_PRECISION_4
#define CCTK_INT CCTK_INT4
#endif
#ifdef CCTK_INTEGER_PRECISION_2
#define CCTK_INT CCTK_INT2
#endif
/* Complex precision */
#ifdef CCTK_REAL_PRECISION_16
#define CCTK_COMPLEX CCTK_COMPLEX32
#endif
#ifdef CCTK_REAL_PRECISION_8
#define CCTK_COMPLEX CCTK_COMPLEX16
#endif
#ifdef CCTK_REAL_PRECISION_4
#define CCTK_COMPLEX CCTK_COMPLEX8
#endif
#endif /*_CCTK_TYPES_H_ */
|