Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_ExpandScalarTypeMacros.hpp
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_EXPAND_SCALAR_TYPE_MACROS_HPP
11#define TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
12
13
21
22#ifdef HAVE_TEUCHOS_INST_FLOAT
23# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)\
24 INSTANT_MACRO(float)
25#else
26# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)
27#endif
28
29
30#define TEUCHOS_MACRO_EXPAND_DOUBLE(INSTANT_MACRO)\
31 INSTANT_MACRO(double)
32
33#ifdef HAVE_TEUCHOS_INST_COMPLEX_FLOAT
34# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)\
35 INSTANT_MACRO(std::complex<float>)
36#else
37# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)
38#endif
39
40
41#ifdef HAVE_TEUCHOS_INST_COMPLEX_DOUBLE
42# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)\
43 INSTANT_MACRO(std::complex<double>)
44#else
45# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)
46#endif
47
48#ifdef HAVE_TEUCHOS_LONG_DOUBLE
49# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)\
50 INSTANT_MACRO(long double)
51#else
52# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)
53#endif
54
55
59#define TEUCHOS_MACRO_EXPAND_REAL_SCALAR_TYPES(MACRONAME) \
60 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
61 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME)
62
63
67#define TEUCHOS_MACRO_EXPAND_SCALAR_TYPES(MACRONAME)\
68 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
69 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME) \
70 TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(MACRONAME) \
71 TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(MACRONAME) \
72 TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(MACRONAME)
73
74
75#endif // TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
Macros for helping to templated classes create explicit instantiations.