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_