Teuchos - Trilinos Tools Package
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_ExplicitInstantiationHelpers.hpp
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_EXPLICIT_INSTANTIATION_HELPERS_HPP
43
#define TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
44
45
53
#include "
Teuchos_ConfigDefs.hpp
"
54
55
56
//
57
// 2007/07/10: rabartl: NOTE: Semicolons must only be used at the lowest level
58
// of final code to ensure that there will not be any empty semicolon lines
59
// that might issue a compiler warning or error. In general, I like to define
60
// macros that need a semicolon when you use them because my emacs mode will
61
// then do the indentation correctly. However, this is not a big deal since
62
// these macros only get used in a final *.cpp file and at that point they are
63
// only used once in the entire mostly empty file.
64
//
65
66
#ifdef HAVE_TEUCHOS_FLOAT
67
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)\
68
INSTANT_MACRO(float)
69
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)\
70
template class CLASSNAME<float>;
71
#else
72
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)
73
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)
74
#endif
75
76
77
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(INSTANT_MACRO)\
78
INSTANT_MACRO(double)
79
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)\
80
template class CLASSNAME<double>;
81
82
#if defined(HAVE_TEUCHOS_COMPLEX) && defined(HAVE_TEUCHOS_FLOAT)
83
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)\
84
INSTANT_MACRO(std::complex<float>)
85
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)\
86
template class CLASSNAME<std::complex<float> >;
87
#else
88
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)
89
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)
90
#endif
91
92
93
#ifdef HAVE_TEUCHOS_COMPLEX
94
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)\
95
INSTANT_MACRO(std::complex<double>)
96
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)\
97
template class CLASSNAME<std::complex<double> >;
98
#else
99
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)
100
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
101
#endif
102
103
104
#ifdef HAVE_TEUCHOSCORE_QUADMATH
105
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT128(INSTANT_MACRO)\
106
INSTANT_MACRO(__float128)
107
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT128(CLASSNAME)\
108
template class CLASSNAME<__float128>;
109
#else
110
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT128(INSTANT_MACRO)
111
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT128(CLASSNAME)
112
#endif // HAVE_TEUCHOSCORE_QUADMATH
113
114
118
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(MACRONAME) \
119
TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
120
TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME)
121
122
126
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_SCALAR_TYPES(MACRONAME)\
127
TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
128
TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME) \
129
TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(MACRONAME) \
130
TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(MACRONAME)
131
132
136
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(CLASSNAME)\
137
TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
138
TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)
139
140
144
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_SCALAR_TYPES(CLASSNAME)\
145
TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
146
TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME) \
147
TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME) \
148
TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
149
150
151
#endif // TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
Teuchos_ConfigDefs.hpp
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
Generated by
1.8.5