Block-Structured AMR Software Framework
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
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