Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
name.h
Go to the documentation of this file.
1 
14 /* the following macro functions like a##b,
15  but will expand a and/or b if they are themselves macros */
16 #ifndef NAME_H
17 #define NAME_H
18 
19 #define TOKEN_PASTE_(a,b) a##b
20 #define TOKEN_PASTE(a,b) TOKEN_PASTE_(a,b)
21 
22 #ifdef PREFIX
23 # define PREFIXED_NAME(x) TOKEN_PASTE(PREFIX,x)
24 #else
25 # define PREFIXED_NAME(x) x
26 #endif
27 
28 #ifdef FPREFIX
29 # define FPREFIXED_NAME(x) TOKEN_PASTE(FPREFIX,x)
30 #else
31 # define FPREFIXED_NAME(x) x
32 #endif
33 
34 #if defined(UPCASE)
35 # define FORTRAN_NAME(low,up) FPREFIXED_NAME(up)
36 # define FORTRAN_UNPREFIXED(low,up) up
37 #elif defined(UNDERSCORE)
38 # define FORTRAN_NAME(low,up) FPREFIXED_NAME(TOKEN_PASTE(low,_))
39 # define FORTRAN_UNPREFIXED(low,up) TOKEN_PASTE(low,_)
40 #else
41 # define FORTRAN_NAME(low,up) FPREFIXED_NAME(low)
42 # define FORTRAN_UNPREFIXED(low,up) low
43 #endif
44 
45 #endif
46