Teuchos_F77_wrappers.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _TEUCHOS_F77_WRAPPERS_H_
00030 #define _TEUCHOS_F77_WRAPPERS_H_
00031
00036 #include "Teuchos_ConfigDefs.hpp"
00037
00038
00039
00040 #if defined(CRAY_T3X)
00041
00042 # include <fortran.h>
00043 # define F77_CALL_PREFIX
00044 # define FORTRAN_CHAR_1_ARG(ARG_NAME) fcd* ARG_NAME
00045 # define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const fcd& ARG_NAME
00046 # define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME
00047
00048 #elif defined(INTEL_CXML)
00049
00050 # define F77_CALL_PREFIX __stdcall
00051 # define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME, unsigned int
00052 # define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME, unsigned int
00053 # define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME, 1
00054
00055 #elif defined(INTEL_MKL)
00056
00057 # define F77_CALL_PREFIX
00058 # define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME
00059 # define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME
00060 # define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME, 1
00061
00062 #else
00063
00064 # define F77_CALL_PREFIX
00065 # define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME
00066 # define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME
00067 # define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME
00068
00069 #endif
00070
00071
00072
00073
00074
00075
00076 #define FORTRAN_NAME_UL(UNAME,LNAME) F77_FUNC(LNAME,UNAME)
00077
00078 #define FORTRAN_FUNC_DECL_UL(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE F77_CALL_PREFIX FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME)
00079
00080 #define FORTRAN_FUNC_CALL_UL(UFUNC_NAME,LFUNC_NAME) FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME)
00081
00082 #define FORTRAN_FUNC_PTR_DECL_UL(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE (F77_CALL_PREFIX *FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME))
00083
00084 #define FORTRAN_COMMMON_BLOCK_NAME_UL(UNAME,LNAME) FORTRAN_NAME_UL(UNAME,LNAME)\
00085
00086 #define FORTRAN_NAME_UL_(UNAME,LNAME) F77_FUNC_(LNAME,UNAME)
00087
00088 #define FORTRAN_FUNC_DECL_UL_(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE F77_CALL_PREFIX FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME)
00089
00090 #define FORTRAN_FUNC_CALL_UL_(UFUNC_NAME,LFUNC_NAME) FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME)
00091
00092 #define FORTRAN_FUNC_PTR_DECL_UL_(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE (F77_CALL_PREFIX *FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME))
00093
00094 #define FORTRAN_COMMMON_BLOCK_NAME_UL_(UNAME,LNAME) FORTRAN_NAME_UL_(UNAME,LNAME)\
00095
00096 #ifdef __cplusplus
00097
00098
00099
00100 namespace FortranTypes {
00101
00102 typedef int f_int;
00103 typedef float f_real;
00104 typedef double f_dbl_prec;
00105 typedef int f_logical;
00106 typedef char f_char;
00107 typedef unsigned int f_char_len;
00108
00109
00110
00111 enum { F_TRUE = true, F_FALSE = false };
00112
00113 #endif
00114
00115 }
00116
00117 #endif // _TEUCHOS_F77_WRAPPERS_H_