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
00165 template<int N, class T>
00166 class ArrayArg {
00167 public:
00169 ArrayArg( T array[] ) { std::copy( array, array+N, array_ ); }
00170
00172 T* operator()() { return array_; }
00173
00175 operator T* () { return array_; }
00176
00177 private:
00178 T array_[N];
00179 };
00180
00185 template<class T>
00186 inline ArrayArg<1,T> arrayArg( T t1 )
00187 {
00188 T array[] = { t1 };
00189 return ArrayArg<1,T>(array);
00190 }
00191
00196 template<class T>
00197 inline ArrayArg<2,T> arrayArg( T t1, T t2 )
00198 {
00199 T array[] = { t1, t2 };
00200 return ArrayArg<2,T>(array);
00201 }
00202
00207 template<class T>
00208 inline ArrayArg<3,T> arrayArg( T t1, T t2, T t3 )
00209 {
00210 T array[] = { t1, t2, t3 };
00211 return ArrayArg<3,T>(array);
00212 }
00213
00218 template<class T>
00219 inline ArrayArg<4,T> arrayArg( T t1, T t2, T t3, T t4 )
00220 {
00221 T array[] = { t1, t2, t3, t4 };
00222 return ArrayArg<4,T>(array);
00223 }
00224
00229 template<class T>
00230 inline ArrayArg<5,T> arrayArg( T t1, T t2, T t3, T t4, T t5 )
00231 {
00232 T array[] = { t1, t2, t3, t4, t5 };
00233 return ArrayArg<5,T>(array);
00234 }
00235
00240 template<class T>
00241 inline ArrayArg<6,T> arrayArg( T t1, T t2, T t3, T t4, T t5, T t6 )
00242 {
00243 T array[] = { t1, t2, t3, t4, t5, t6 };
00244 return ArrayArg<6,T>(array);
00245 }
00246
00247 }
00248
00249 #endif // TEUCHOS_ARRAY_ARG_HPP