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
00030
00031
00032 #ifndef TEUCHOS_ARRAY_ARG_HPP
00033 #define TEUCHOS_ARRAY_ARG_HPP
00034
00039 #include "Teuchos_TestForException.hpp"
00040
00041 namespace Teuchos {
00042
00162
00163
00167 template<int N, class T>
00168 class ArrayArg {
00169 public:
00171 ArrayArg( T array[] ) { std::copy( array, array+N, array_ ); }
00172
00174 T* operator()() { return array_; }
00175
00177 operator T* () { return array_; }
00178
00179 private:
00180 T array_[N];
00181 };
00182
00184
00188 template<class T>
00189 inline ArrayArg<1,T> arrayArg( T t1 )
00190 {
00191 T array[] = { t1 };
00192 return ArrayArg<1,T>(array);
00193 }
00194
00196
00200 template<class T>
00201 inline ArrayArg<2,T> arrayArg( T t1, T t2 )
00202 {
00203 T array[] = { t1, t2 };
00204 return ArrayArg<2,T>(array);
00205 }
00206
00208
00212 template<class T>
00213 inline ArrayArg<3,T> arrayArg( T t1, T t2, T t3 )
00214 {
00215 T array[] = { t1, t2, t3 };
00216 return ArrayArg<3,T>(array);
00217 }
00218
00220
00224 template<class T>
00225 inline ArrayArg<4,T> arrayArg( T t1, T t2, T t3, T t4 )
00226 {
00227 T array[] = { t1, t2, t3, t4 };
00228 return ArrayArg<4,T>(array);
00229 }
00230
00232
00236 template<class T>
00237 inline ArrayArg<5,T> arrayArg( T t1, T t2, T t3, T t4, T t5 )
00238 {
00239 T array[] = { t1, t2, t3, t4, t5 };
00240 return ArrayArg<5,T>(array);
00241 }
00242
00244
00248 template<class T>
00249 inline ArrayArg<6,T> arrayArg( T t1, T t2, T t3, T t4, T t5, T t6 )
00250 {
00251 T array[] = { t1, t2, t3, t4, t5, t6 };
00252 return ArrayArg<6,T>(array);
00253 }
00254
00255 }
00256
00257 #endif // TEUCHOS_ARRAY_ARG_HPP