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 Thu Nov 21 2024 09:21:39 for Teuchos Package Browser (Single Doxygen Collection) by
1.8.5