42#ifndef TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
43#define TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
54#ifdef HAVE_TEUCHOS_INST_FLOAT
55# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)\
58# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)
62#define TEUCHOS_MACRO_EXPAND_DOUBLE(INSTANT_MACRO)\
65#ifdef HAVE_TEUCHOS_INST_COMPLEX_FLOAT
66# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)\
67 INSTANT_MACRO(std::complex<float>)
69# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)
73#ifdef HAVE_TEUCHOS_INST_COMPLEX_DOUBLE
74# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)\
75 INSTANT_MACRO(std::complex<double>)
77# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)
80#ifdef HAVE_TEUCHOS_LONG_DOUBLE
81# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)\
82 INSTANT_MACRO(long double)
84# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)
91#define TEUCHOS_MACRO_EXPAND_REAL_SCALAR_TYPES(MACRONAME) \
92 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
93 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME)
99#define TEUCHOS_MACRO_EXPAND_SCALAR_TYPES(MACRONAME)\
100 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
101 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME) \
102 TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(MACRONAME) \
103 TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(MACRONAME) \
104 TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(MACRONAME)
Macros for helping to templated classes create explicit instantiations.