#ifndef FORTRAN_FROM_CPLUSPLUS
#define FORTRAN_FROM_CPLUSPLUS
/*
Definitions for calling FORTRAN 77 from C++
===========================================
Author: Carsten Arnholm, 25-AUG-1995 (first Windows NT impl.)
Rev1 : Carsten Arnholm, 21-DEC-1995 (Unix updates)
Rev2 : Carsten Arnholm, 03-MAR-1996 (f77cmplx.h, f77matrx.h)
*/
typedef int INTEGER; // INTEGER 4 bytes
typedef float REAL; // REAL 4 bytes
typedef double DOUBLE_PRECISION; // DOUBLE PRECISION 8 bytes
typedef int LOGICAL; // LOGICAL 4 bytes
#include "f77char.h" // character n bytes
//#include <f77cmplx.h> // complex
#include "f77matrix.h" // fmatrix class
// values for LOGICAL
#define FALSE 0
#define TRUE 1
#define F77_STUB_REQUIRED
// Macros for portable handling of linkage & calling conventions
#ifdef F77_STUB_REQUIRED
// Typically, this branch is for Unix computers
// C++ stub functions:
#define SUBROUTINE inline void
#define INTEGER_FUNCTION inline INTEGER
#define REAL_FUNCTION inline REAL
#define LOGICAL_FUNCTION inline LOGICAL
#define DOUBLE_PRECISION_FUNCTION inline DOUBLE_PRECISION
// FORTRAN functions
#define SUBROUTINE_F77 extern "C" void
#define INTEGER_FUNCTION_F77 extern "C" int
#define REAL_FUNCTION_F77 extern "C" float
#define LOGICAL_FUNCTION_F77 extern "C" int
#define DOUBLE_PRECISION_FUNCTION_F77 extern "C" double
#else
// MS Windows using Microsoft compilers
// FORTRAN functions
#define SUBROUTINE extern "C" void __stdcall
#define INTEGER_FUNCTION extern "C" INTEGER __stdcall
#define REAL_FUNCTION extern "C" REAL __stdcall
#define LOGICAL_FUNCTION extern "C" LOGICAL __stdcall
#define DOUBLE_PRECISION_FUNCTION extern "C" DOUBLE_PRECISION \
__stdcall
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1