/usr/include/fortran.h is in libhypre-dev 2.8.0b-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | /*BHEADER**********************************************************************
* Copyright (c) 2008, Lawrence Livermore National Security, LLC.
* Produced at the Lawrence Livermore National Laboratory.
* This file is part of HYPRE. See file COPYRIGHT for details.
*
* HYPRE is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License (as published by the Free
* Software Foundation) version 2.1 dated February 1999.
*
* $Revision: 2.22 $
***********************************************************************EHEADER*/
/******************************************************************************
*
* Fortran <-> C interface macros
*
* Developers should only use the following in hypre:
* hypre_F90_NAME() or hypre_F90_IFACE()
* hypre_F90_NAME_BLAS()
* hypre_F90_NAME_LAPACK()
* any of the interface argument macros at the bottom of this file
*
*****************************************************************************/
#ifndef HYPRE_FORT_HEADER
#define HYPRE_FORT_HEADER
#include "_hypre_utilities.h"
/*-------------------------------------------------------
* Define specific name mangling macros to be used below
*-------------------------------------------------------*/
#define hypre_F90_NAME_1(name,NAME) name
#define hypre_F90_NAME_2(name,NAME) name##_
#define hypre_F90_NAME_3(name,NAME) name##__
#define hypre_F90_NAME_4(name,NAME) NAME
/*-------------------------------------------------------
* Define hypre_F90_NAME and hypre_F90_IFACE
*-------------------------------------------------------*/
#if (HYPRE_FMANGLE == 1)
#define hypre_F90_NAME(name,NAME) hypre_F90_NAME_1(name,NAME)
#elif (HYPRE_FMANGLE == 2)
#define hypre_F90_NAME(name,NAME) hypre_F90_NAME_2(name,NAME)
#elif (HYPRE_FMANGLE == 3)
#define hypre_F90_NAME(name,NAME) hypre_F90_NAME_3(name,NAME)
#elif (HYPRE_FMANGLE == 4)
#define hypre_F90_NAME(name,NAME) hypre_F90_NAME_4(name,NAME)
#elif defined(HYPRE_F77_FUNC_)
/* HYPRE_F77_FUNC_ macro assumes underscores exist in name */
#define hypre_F90_NAME(name,NAME) HYPRE_F77_FUNC_(name,NAME)
#else
#define hypre_F90_NAME(name,NAME) hypre_F90_NAME_2(name,NAME)
#endif
#define hypre_F90_IFACE(name,NAME) hypre_F90_NAME(name,NAME)
/*-------------------------------------------------------
* Define hypre_F90_NAME_BLAS
*-------------------------------------------------------*/
#ifdef HYPRE_USING_HYPRE_BLAS
#define hypre_F90_NAME_BLAS(name,NAME) hypre_##name
#elif (HYPRE_FMANGLE_BLAS == 1)
#define hypre_F90_NAME_BLAS(name,NAME) hypre_F90_NAME_1(name,NAME)
#elif (HYPRE_FMANGLE_BLAS == 2)
#define hypre_F90_NAME_BLAS(name,NAME) hypre_F90_NAME_2(name,NAME)
#elif (HYPRE_FMANGLE_BLAS == 3)
#define hypre_F90_NAME_BLAS(name,NAME) hypre_F90_NAME_3(name,NAME)
#elif (HYPRE_FMANGLE_BLAS == 4)
#define hypre_F90_NAME_BLAS(name,NAME) hypre_F90_NAME_4(name,NAME)
#elif defined(HYPRE_F77_FUNC)
/* HYPRE_F77_FUNC macro assumes NO underscores exist in name */
#define hypre_F90_NAME_BLAS(name,NAME) HYPRE_F77_FUNC(name,NAME)
#else
#define hypre_F90_NAME_BLAS(name,NAME) hypre_F90_NAME_2(name,NAME)
#endif
/*-------------------------------------------------------
* Define hypre_F90_NAME_LAPACK
*-------------------------------------------------------*/
#ifdef HYPRE_USING_HYPRE_LAPACK
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_##name
#elif (HYPRE_FMANGLE_LAPACK == 1)
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_F90_NAME_1(name,NAME)
#elif (HYPRE_FMANGLE_LAPACK == 2)
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_F90_NAME_2(name,NAME)
#elif (HYPRE_FMANGLE_LAPACK == 3)
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_F90_NAME_3(name,NAME)
#elif (HYPRE_FMANGLE_LAPACK == 4)
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_F90_NAME_4(name,NAME)
#elif defined(HYPRE_F77_FUNC)
/* HYPRE_F77_FUNC macro assumes NO underscores exist in name */
#define hypre_F90_NAME_LAPACK(name,NAME) HYPRE_F77_FUNC(name,NAME)
#else
#define hypre_F90_NAME_LAPACK(name,NAME) hypre_F90_NAME_2(name,NAME)
#endif
/*-------------------------------------------------------
* Define interface argument types and macros
*
* A Fortran communicator is always the size of an integer
* and hence usually the size of hypre_int.
*-------------------------------------------------------*/
typedef hypre_int hypre_F90_Comm;
typedef HYPRE_Int hypre_F90_Int;
typedef HYPRE_Int hypre_F90_IntArray;
typedef double hypre_F90_Dbl;
typedef double hypre_F90_DblArray;
typedef HYPRE_Int *hypre_F90_Obj;
typedef HYPRE_Int *hypre_F90_ObjRef;
#define hypre_F90_PassComm(arg) (hypre_MPI_Comm_f2c(*arg))
#define hypre_F90_PassInt(arg) ((HYPRE_Int) *arg)
#define hypre_F90_PassIntRef(arg) ((HYPRE_Int *) arg)
#define hypre_F90_PassIntArray(arg) ((HYPRE_Int *) arg)
#define hypre_F90_PassDbl(arg) ((double) *arg)
#define hypre_F90_PassDblRef(arg) ((double *) arg)
#define hypre_F90_PassDblArray(arg) ((double *) arg)
#define hypre_F90_PassObj(obj,arg) ((obj) *arg)
#define hypre_F90_PassObjRef(obj,arg) ((obj *) arg)
#endif
|