xref: /libCEED/rust/libceed-sys/c-src/include/ceed-fortran-name.h (revision 734e90feb252640e336301d51a809646bf06c3fd)
1*734e90feSThilina Rathnayake #ifndef _ceed_fortran_name_h
2*734e90feSThilina Rathnayake #define _ceed_fortran_name_h
3*734e90feSThilina Rathnayake 
4*734e90feSThilina Rathnayake /* establishes some macros to establish
5*734e90feSThilina Rathnayake    * the FORTRAN naming convention
6*734e90feSThilina Rathnayake      default      gs_setup, etc.
7*734e90feSThilina Rathnayake      -DUPCASE     GS_SETUP, etc.
8*734e90feSThilina Rathnayake      -DUNDERSCORE gs_setup_, etc.
9*734e90feSThilina Rathnayake    * a prefix for all external (non-FORTRAN) function names
10*734e90feSThilina Rathnayake      for example, -DPREFIX=jl_   transforms fail -> jl_fail
11*734e90feSThilina Rathnayake    * a prefix for all external FORTRAN function names
12*734e90feSThilina Rathnayake      for example, -DFPREFIX=jlf_ transforms gs_setup_ -> jlf_gs_setup_
13*734e90feSThilina Rathnayake */
14*734e90feSThilina Rathnayake 
15*734e90feSThilina Rathnayake /* the following macro functions like a##b,
16*734e90feSThilina Rathnayake    but will expand a and/or b if they are themselves macros */
17*734e90feSThilina Rathnayake #define TOKEN_PASTE_(a,b) a##b
18*734e90feSThilina Rathnayake #define TOKEN_PASTE(a,b) TOKEN_PASTE_(a,b)
19*734e90feSThilina Rathnayake 
20*734e90feSThilina Rathnayake #ifdef PREFIX
21*734e90feSThilina Rathnayake #  define PREFIXED_NAME(x) TOKEN_PASTE(PREFIX,x)
22*734e90feSThilina Rathnayake #else
23*734e90feSThilina Rathnayake #  define PREFIXED_NAME(x) x
24*734e90feSThilina Rathnayake #endif
25*734e90feSThilina Rathnayake 
26*734e90feSThilina Rathnayake #ifdef FPREFIX
27*734e90feSThilina Rathnayake #  define FPREFIXED_NAME(x) TOKEN_PASTE(FPREFIX,x)
28*734e90feSThilina Rathnayake #else
29*734e90feSThilina Rathnayake #  define FPREFIXED_NAME(x) x
30*734e90feSThilina Rathnayake #endif
31*734e90feSThilina Rathnayake 
32*734e90feSThilina Rathnayake #if defined(UPCASE)
33*734e90feSThilina Rathnayake #  define FORTRAN_NAME(low,up) FPREFIXED_NAME(up)
34*734e90feSThilina Rathnayake #  define FORTRAN_UNPREFIXED(low,up) up
35*734e90feSThilina Rathnayake #elif defined(UNDERSCORE)
36*734e90feSThilina Rathnayake #  define FORTRAN_NAME(low,up) FPREFIXED_NAME(TOKEN_PASTE(low,_))
37*734e90feSThilina Rathnayake #  define FORTRAN_UNPREFIXED(low,up) TOKEN_PASTE(low,_)
38*734e90feSThilina Rathnayake #else
39*734e90feSThilina Rathnayake #  define FORTRAN_NAME(low,up) FPREFIXED_NAME(low)
40*734e90feSThilina Rathnayake #  define FORTRAN_UNPREFIXED(low,up) low
41*734e90feSThilina Rathnayake #endif
42*734e90feSThilina Rathnayake 
43*734e90feSThilina Rathnayake #endif
44