Block-Structured AMR Software Framework
AMReX_BLFort.H
Go to the documentation of this file.
1 #ifndef AMREX_BLFORT_H_
2 #define AMREX_BLFORT_H_
3 #include <AMReX_Config.H>
4 
5 #include <AMReX_INT.H>
6 #include <AMReX_ArrayLim.H>
7 #include <AMReX_REAL.H>
8 #include <AMReX_SPACE.H>
9 
10 #ifndef BL_LANG_FORT
11 
12 #if defined(BL_FORT_USE_UPPERCASE)
13 #define AMREX_FORT_NAME(A,B) A
14 #elif defined(BL_FORT_USE_LOWERCASE)
15 #define AMREX_FORT_NAME(A,B) B
16 #elif defined(BL_FORT_USE_UNDERSCORE)
17 #define AMREX_FORT_NAME(A,B) B##_
18 #elif !defined(BL_NO_FORT)
19 #error "One of BL_FORT_USE_{UPPERCASE,LOWERCASE,UNDERSCORE} must be defined"
20 #endif
21 
22 #if defined(__cplusplus) && !defined(BL_NO_FORT)
23 #define BL_FORT_PROC_DECL(A,B) extern "C" void AMREX_FORT_NAME(A,B)
24 #else
25 #define BL_FORT_PROC_DECL(A,B) void AMREX_FORT_NAME(A,B)
26 #endif
27 #define BL_FORT_PROC_CALL(A,B) AMREX_FORT_NAME(A,B)
28 #define BL_FORT_PROC_NAME(A,B) AMREX_FORT_NAME(A,B)
29 
30 #define BL_FORT_FAB_ARG(A) amrex_real* A##_fab, AMREX_ARLIM_P(A##_lo), AMREX_ARLIM_P(A##_hi)
31 #define BL_FORT_IFAB_ARG(A) int* A##_fab, AMREX_ARLIM_P(A##_lo), AMREX_ARLIM_P(A##_hi)
32 #define BL_FORT_FAB_VAL_3D(A) A##_fab, A##_lo, A##_hi
33 #define BL_FORT_FAB_ARG_3D(A) amrex_real* A##_fab, const int* A##_lo, const int* A##_hi
34 #define BL_FORT_FAB_ARG_ANYD(A) amrex_real* A##_fab, const int* A##_lo, const int* A##_hi
35 #define BL_FORT_IFAB_ARG_3D(A) int* A##_fab, const int* A##_lo, const int* A##_hi
36 #define BL_FORT_IFAB_ARG_ANYD(A) int* A##_fab, const int* A##_lo, const int* A##_hi
37 
38 #endif
39 
40 #endif