Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
core
src
Teuchos_F77_wrappers.h
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#ifndef _TEUCHOS_F77_WRAPPERS_H_
43
#define _TEUCHOS_F77_WRAPPERS_H_
44
49
#include "
Teuchos_ConfigDefs.hpp
"
50
51
/* Define fcd (Fortran Teuchos_fcd descriptor) for non-standard situations */
52
53
#if defined(CRAY_T3X)
54
55
# include <fortran.h>
56
# define F77_CALL_PREFIX
57
# define FORTRAN_CHAR_1_ARG(ARG_NAME) fcd* ARG_NAME
58
# define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const fcd& ARG_NAME
59
# define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME
60
61
#elif defined(INTEL_CXML)
62
63
# define F77_CALL_PREFIX __stdcall
64
# define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME, unsigned int
65
# define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME, unsigned int
66
# define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME, 1
67
68
#elif defined(INTEL_MKL)
69
70
# define F77_CALL_PREFIX
71
# define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME
72
# define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME
73
# define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME, 1
74
75
#else
76
77
# define F77_CALL_PREFIX
78
# define FORTRAN_CHAR_1_ARG(ARG_NAME) char* ARG_NAME
79
# define FORTRAN_CONST_CHAR_1_ARG(ARG_NAME) const char& ARG_NAME
80
# define FORTRAN_CHAR_1_ARG_CALL(ARG_NAME) ARG_NAME
81
82
#endif
83
84
/* RAB: 20030924: ToDo: Find a way to see if const is supported or not by C or
85
just decide that this will only be for C++ code and be done with it. */
86
87
/* External macros */
88
89
#define FORTRAN_NAME_UL(UNAME,LNAME) F77_FUNC(LNAME,UNAME)
90
91
#define FORTRAN_FUNC_DECL_UL(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE F77_CALL_PREFIX FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME)
92
93
#define FORTRAN_FUNC_CALL_UL(UFUNC_NAME,LFUNC_NAME) FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME)
94
95
#define FORTRAN_FUNC_PTR_DECL_UL(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE (F77_CALL_PREFIX *FORTRAN_NAME_UL(UFUNC_NAME,LFUNC_NAME))
96
97
#define FORTRAN_COMMMON_BLOCK_NAME_UL(UNAME,LNAME) FORTRAN_NAME_UL(UNAME,LNAME)\
98
99
#define FORTRAN_NAME_UL_(UNAME,LNAME) F77_FUNC_(LNAME,UNAME)
100
101
#define FORTRAN_FUNC_DECL_UL_(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE F77_CALL_PREFIX FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME)
102
103
#define FORTRAN_FUNC_CALL_UL_(UFUNC_NAME,LFUNC_NAME) FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME)
104
105
#define FORTRAN_FUNC_PTR_DECL_UL_(TYPE,UFUNC_NAME,LFUNC_NAME) TYPE (F77_CALL_PREFIX *FORTRAN_NAME_UL_(UFUNC_NAME,LFUNC_NAME))
106
107
#define FORTRAN_COMMMON_BLOCK_NAME_UL_(UNAME,LNAME) FORTRAN_NAME_UL_(UNAME,LNAME)\
108
109
#ifdef __cplusplus
110
111
// These are the platform dependent C++ equivalents of fortran types
112
// RAB: 2003/11/20: ToDo: Move this into Teuchos namespace at some point
113
namespace
FortranTypes {
114
115
typedef
int
f_int;
// INTEGER
116
typedef
float
f_real;
// REAL
117
typedef
double
f_dbl_prec;
// DOUBLE PRECISION
118
typedef
int
f_logical;
// LOGICAL
119
typedef
char
f_char;
// CHARACTER*1
120
typedef
unsigned
int
f_char_len;
// length argument for a CHARACTER*(*)
121
//typedef std::complex<f_real> f_complex; // COMPLEX
122
//typedef std::complex<f_dbl_prec> f_complex_16; // COMPLEX*16
123
124
enum
{ F_TRUE =
true
, F_FALSE =
false
};
// Let compiler figure this out!
125
126
#endif
/* __cplusplus */
127
128
}
// namespace FortranTypes
129
130
#endif // _TEUCHOS_F77_WRAPPERS_H_
Teuchos_ConfigDefs.hpp
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
Generated by
1.8.5