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_ARRAY_ARG_HPP
00030 #define TEUCHOS_ARRAY_ARG_HPP
00031
00036 #include "Teuchos_TestForException.hpp"
00037
00038 namespace Teuchos {
00039
00163 template<int N, class T>
00164 class ArrayArg {
00165 public:
00167 ArrayArg( T array[] ) { std::copy( array, array+N, array_ ); }
00168
00170 T* operator()() { return array_; }
00171
00173 operator T* () { return array_; }
00174
00175 private:
00176 T array_[N];
00177 };
00178
00183 template<class T>
00184 inline ArrayArg<1,T> arrayArg( T t1 )
00185 {
00186 T array[] = { t1 };
00187 return ArrayArg<1,T>(array);
00188 }
00189
00194 template<class T>
00195 inline ArrayArg<2,T> arrayArg( T t1, T t2 )
00196 {
00197 T array[] = { t1, t2 };
00198 return ArrayArg<2,T>(array);
00199 }
00200
00205 template<class T>
00206 inline ArrayArg<3,T> arrayArg( T t1, T t2, T t3 )
00207 {
00208 T array[] = { t1, t2, t3 };
00209 return ArrayArg<3,T>(array);
00210 }
00211
00216 template<class T>
00217 inline ArrayArg<4,T> arrayArg( T t1, T t2, T t3, T t4 )
00218 {
00219 T array[] = { t1, t2, t3, t4 };
00220 return ArrayArg<4,T>(array);
00221 }
00222
00227 template<class T>
00228 inline ArrayArg<5,T> arrayArg( T t1, T t2, T t3, T t4, T t5 )
00229 {
00230 T array[] = { t1, t2, t3, t4, t5 };
00231 return ArrayArg<5,T>(array);
00232 }
00233
00238 template<class T>
00239 inline ArrayArg<6,T> arrayArg( T t1, T t2, T t3, T t4, T t5, T t6 )
00240 {
00241 T array[] = { t1, t2, t3, t4, t5, t6 };
00242 return ArrayArg<6,T>(array);
00243 }
00244
00245 }
00246
00247 #endif // TEUCHOS_ARRAY_ARG_HPP