00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
00030 #define TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP
00031
00032
00039 #include "Teuchos_ConfigDefs.hpp"
00040
00041 #ifdef HAVE_TEUCHOS_FLOAT
00042 # define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)\
00043 INSTANT_MACRO(float)
00044 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)\
00045 template class CLASSNAME<float>;
00046 #else
00047 # define TEUCHOS_MACRO_EXPAND_FLOAT(INSTANT_MACRO)
00048 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)
00049 #endif
00050
00051
00052 #define TEUCHOS_MACRO_EXPAND_DOUBLE(INSTANT_MACRO)\
00053 INSTANT_MACRO(double)
00054 #define TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)\
00055 template class CLASSNAME<double>;
00056
00057 #if defined(HAVE_TEUCHOS_COMPLEX) && defined(HAVE_TEUCHOS_FLOAT)
00058 # define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)\
00059 INSTANT_MACRO(std::complex<float>)
00060 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)\
00061 template class CLASSNAME<std::complex<float> >;
00062 #else
00063 # define TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(INSTANT_MACRO)
00064 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)
00065 #endif
00066
00067
00068 #ifdef HAVE_TEUCHOS_COMPLEX
00069 # define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)\
00070 INSTANT_MACRO(std::complex<double>)
00071 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)\
00072 template class CLASSNAME<std::complex<double> >;
00073 #else
00074 # define TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(INSTANT_MACRO)
00075 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
00076 #endif
00077
00078
00082 #define TEUCHOS_MACRO_EXPAND_REAL_SCALAR_TYPES(MACRONAME) \
00083 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
00084 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME)
00085
00086
00090 #define TEUCHOS_MACRO_EXPAND_SCALAR_TYPES(MACRONAME)\
00091 TEUCHOS_MACRO_EXPAND_FLOAT(MACRONAME) \
00092 TEUCHOS_MACRO_EXPAND_DOUBLE(MACRONAME) \
00093 TEUCHOS_MACRO_EXPAND_COMPLEX_FLOAT(MACRONAME) \
00094 TEUCHOS_MACRO_EXPAND_COMPLEX_DOUBLE(MACRONAME)
00095
00096
00097 #endif // TEUCHOS_EXPAND_SCALAR_TYPE_MACROS_HPP