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