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 #ifndef MLN_MAKE_VEC_HH
00027 # define MLN_MAKE_VEC_HH
00028
00034 # include <mln/algebra/vec.hh>
00035 # include <mln/core/concept/function.hh>
00036
00037 namespace mln
00038 {
00039
00040 namespace make
00041 {
00042
00043
00050 template <typename T>
00051 algebra::vec<1, T> vec(const T& v_0);
00052
00060 template <typename T>
00061 algebra::vec<2, T> vec(const T& v_0, const T& v_1);
00062
00071 template <typename T>
00072 algebra::vec<3, T> vec(const T& v_0, const T& v_1, const T& v_2);
00073
00083 template <typename T>
00084 algebra::vec<4, T> vec(const T& v_0, const T& v_1, const T& v_2, const T& v_3);
00085
00086
00087 # ifndef MLN_INCLUDE_ONLY
00088
00089 template <typename T>
00090 inline
00091 algebra::vec<1, T> vec(const T& v_0)
00092 {
00093 algebra::vec<1, T> tmp;
00094 tmp[0] = v_0;
00095 return tmp;
00096 }
00097
00098 template <typename T>
00099 inline
00100 algebra::vec<2, T> vec(const T& v_0, const T& v_1)
00101 {
00102 algebra::vec<2, T> tmp;
00103 tmp[0] = v_0;
00104 tmp[1] = v_1;
00105 return tmp;
00106 }
00107
00108 template <typename T>
00109 inline
00110 algebra::vec<3, T> vec(const T& v_0, const T& v_1, const T& v_2)
00111 {
00112 algebra::vec<3, T> tmp;
00113 tmp[0] = v_0;
00114 tmp[1] = v_1;
00115 tmp[2] = v_2;
00116 return tmp;
00117 }
00118
00119 template <typename T>
00120 inline
00121 algebra::vec<4, T> vec(const T& v_0, const T& v_1, const T& v_2, const T& v_3)
00122 {
00123 algebra::vec<4, T> tmp;
00124 tmp[0] = v_0;
00125 tmp[1] = v_1;
00126 tmp[2] = v_2;
00127 tmp[3] = v_3;
00128 return tmp;
00129 }
00130
00131 # endif // ! MLN_INCLUDE_ONLY
00132
00133 }
00134
00135 }
00136
00137 #endif // ! MLN_MAKE_VEC_HH