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_EXPLICIT_INSTANTIATION_HELPERS_HPP
00030 #define TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP
00031
00032
00039 #include "Teuchos_ConfigDefs.hpp"
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #ifdef HAVE_TEUCHOS_FLOAT
00053 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)\
00054 INSTANT_MACRO(float)
00055 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)\
00056 template class CLASSNAME<float>;
00057 #else
00058 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(INSTANT_MACRO)
00059 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME)
00060 #endif
00061
00062
00063 #define TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(INSTANT_MACRO)\
00064 INSTANT_MACRO(double)
00065 #define TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)\
00066 template class CLASSNAME<double>;
00067
00068 #if defined(HAVE_TEUCHOS_COMPLEX) && defined(HAVE_TEUCHOS_FLOAT)
00069 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)\
00070 INSTANT_MACRO(std::complex<float>)
00071 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)\
00072 template class CLASSNAME<std::complex<float> >;
00073 #else
00074 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(INSTANT_MACRO)
00075 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME)
00076 #endif
00077
00078
00079 #ifdef HAVE_TEUCHOS_COMPLEX
00080 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)\
00081 INSTANT_MACRO(std::complex<double>)
00082 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)\
00083 template class CLASSNAME<std::complex<double> >;
00084 #else
00085 # define TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(INSTANT_MACRO)
00086 # define TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
00087 #endif
00088
00089
00093 #define TEUCHOS_MACRO_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(MACRONAME) \
00094 TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
00095 TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME)
00096
00097
00101 #define TEUCHOS_MACRO_TEMPLATE_INSTANT_SCALAR_TYPES(MACRONAME)\
00102 TEUCHOS_MACRO_TEMPLATE_INSTANT_FLOAT(MACRONAME) \
00103 TEUCHOS_MACRO_TEMPLATE_INSTANT_DOUBLE(MACRONAME) \
00104 TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_FLOAT(MACRONAME) \
00105 TEUCHOS_MACRO_TEMPLATE_INSTANT_COMPLEX_DOUBLE(MACRONAME)
00106
00107
00111 #define TEUCHOS_CLASS_TEMPLATE_INSTANT_REAL_SCALAR_TYPES(CLASSNAME)\
00112 TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
00113 TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME)
00114
00115
00119 #define TEUCHOS_CLASS_TEMPLATE_INSTANT_SCALAR_TYPES(CLASSNAME)\
00120 TEUCHOS_CLASS_TEMPLATE_INSTANT_FLOAT(CLASSNAME) \
00121 TEUCHOS_CLASS_TEMPLATE_INSTANT_DOUBLE(CLASSNAME) \
00122 TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_FLOAT(CLASSNAME) \
00123 TEUCHOS_CLASS_TEMPLATE_INSTANT_COMPLEX_DOUBLE(CLASSNAME)
00124
00125
00126 #endif // TEUCHOS_EXPLICIT_INSTANTIATION_HELPERS_HPP