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_ExplicitInstantiationHelpers.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Teuchos: Common Tools Package
4
//
5
// Copyright 2004 NTESS and the Teuchos contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
11
#define TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
12
13
21
#include "
Teuchos_ConfigDefs.hpp
"
22
23
24
//
25
// 2007/07/10: rabartl: NOTE: Semicolons must only be used at the lowest level
26
// of final code to ensure that there will not be any empty semicolon lines
27
// that might issue a compiler warning or error. In general, I like to define
28
// macros that need a semicolon when you use them because my emacs mode will
29
// then do the indentation correctly. However, this is not a big deal since
30
// these macros only get used in a final *.cpp file and at that point they are
31
// only used once in the entire mostly empty file.
32
//
33
34
#ifdef HAVE_TEUCHOS_INST_FLOAT
35
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)\
36
INSTANT_MACRO(float)
37
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)\
38
template class CLASSNAME<float>;
39
#else
40
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)
41
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)
42
#endif
43
44
45
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(INSTANT_MACRO)\
46
INSTANT_MACRO(double)
47
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)\
48
template class CLASSNAME<double>;
49
50
51
#ifdef HAVE_TEUCHOS_INST_COMPLEX_FLOAT
52
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)\
53
INSTANT_MACRO(std::complex<float>)
54
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)\
55
template class CLASSNAME<std::complex<float> >;
56
#else
57
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)
58
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)
59
#endif
60
61
62
#ifdef HAVE_TEUCHOS_INST_COMPLEX_DOUBLE
63
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)\
64
INSTANT_MACRO(std::complex<double>)
65
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)\
66
template class CLASSNAME<std::complex<double> >;
67
#else
68
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)
69
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
70
#endif
71
72
#ifdef HAVE_TEUCHOS_LONG_DOUBLE
73
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_LONG_DOUBLE(INSTANT_MACRO)\
74
INSTANT_MACRO(long double)
75
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_LONG_DOUBLE(CLASSNAME)\
76
template class CLASSNAME<long double>;
77
#else
78
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_LONG_DOUBLE(INSTANT_MACRO)
79
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_LONG_DOUBLE(CLASSNAME)
80
#endif
81
82
83
#ifdef HAVE_TEUCHOSCORE_QUADMATH
84
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT128(INSTANT_MACRO)\
85
INSTANT_MACRO(__float128)
86
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT128(CLASSNAME)\
87
template class CLASSNAME<__float128>;
88
#else
89
# define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT128(INSTANT_MACRO)
90
# define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT128(CLASSNAME)
91
#endif // HAVE_TEUCHOSCORE_QUADMATH
92
93
97
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(MACRONAME) \
98
TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
99
TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME)
100
101
105
#define TEUCHOS_MACRO_TEMPLATE_INSTANT_SCALAR_TYPES(MACRONAME)\
106
TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
107
TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME) \
108
TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(MACRONAME) \
109
TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(MACRONAME)
110
111
115
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(CLASSNAME)\
116
TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
117
TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)
118
119
123
#define TEUCHOS_CLASS_TEMPLATE_INSTANT_SCALAR_TYPES(CLASSNAME)\
124
TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
125
TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME) \
126
TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME) \
127
TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
128
129
130
#endif // TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
Teuchos_ConfigDefs.hpp
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
Generated on Fri May 16 2025 09:21:49 for Teuchos Package Browser (Single Doxygen Collection) by
1.8.5