10#ifndef TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
11#define TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
22#ifdef HAVE_TEUCHOS_INST_FLOAT
23# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)\
26# define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)
30#define TEUCHOS_MACRO_EXPAND_DOUBLE(INSTANT_MACRO)\
33#ifdef HAVE_TEUCHOS_INST_COMPLEX_FLOAT
34# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)\
35 INSTANT_MACRO(std::complex<float>)
37# define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)
41#ifdef HAVE_TEUCHOS_INST_COMPLEX_DOUBLE
42# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)\
43 INSTANT_MACRO(std::complex<double>)
45# define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)
48#ifdef HAVE_TEUCHOS_LONG_DOUBLE
49# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)\
50 INSTANT_MACRO(long double)
52# define TEUCHOS_MACRO_EXPAND_LONG_DOUBLE(INSTANT_MACRO)
59#define TEUCHOS_MACRO_EXPAND_REAL_SCALAR_TYPES(MACRONAME) \
60 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
61 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME)
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)
Macros for helping to templated classes create explicit instantiations.