Commit bf279606 authored by Davis King's avatar Davis King

Templated the matrix_range_exp so that it can use types other than long.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%402894
parent e3c07929
...@@ -1436,12 +1436,13 @@ namespace dlib ...@@ -1436,12 +1436,13 @@ namespace dlib
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <typename T>
class matrix_range_exp; class matrix_range_exp;
template <> template <typename T>
struct matrix_traits<matrix_range_exp> struct matrix_traits<matrix_range_exp<T> >
{ {
typedef long type; typedef T type;
typedef memory_manager<char>::kernel_1a mem_manager_type; typedef memory_manager<char>::kernel_1a mem_manager_type;
typedef row_major_layout layout_type; typedef row_major_layout layout_type;
const static long NR = 0; const static long NR = 0;
...@@ -1449,15 +1450,16 @@ namespace dlib ...@@ -1449,15 +1450,16 @@ namespace dlib
const static long cost = 1; const static long cost = 1;
}; };
class matrix_range_exp : public matrix_exp<matrix_range_exp> template <typename T>
class matrix_range_exp : public matrix_exp<matrix_range_exp<T> >
{ {
public: public:
typedef matrix_traits<matrix_range_exp>::type type; typedef typename matrix_traits<matrix_range_exp>::type type;
typedef matrix_traits<matrix_range_exp>::mem_manager_type mem_manager_type; typedef typename matrix_traits<matrix_range_exp>::mem_manager_type mem_manager_type;
const static long NR = matrix_traits<matrix_range_exp>::NR; const static long NR = matrix_traits<matrix_range_exp>::NR;
const static long NC = matrix_traits<matrix_range_exp>::NC; const static long NC = matrix_traits<matrix_range_exp>::NC;
const static long cost = matrix_traits<matrix_range_exp>::cost; const static long cost = matrix_traits<matrix_range_exp>::cost;
typedef matrix_traits<matrix_range_exp>::layout_type layout_type; typedef typename matrix_traits<matrix_range_exp>::layout_type layout_type;
matrix_range_exp ( matrix_range_exp (
const matrix_range_exp& item const matrix_range_exp& item
...@@ -1469,8 +1471,8 @@ namespace dlib ...@@ -1469,8 +1471,8 @@ namespace dlib
{} {}
matrix_range_exp ( matrix_range_exp (
long start_, T start_,
long end_ T end_
) : ) :
matrix_exp<matrix_range_exp>(*this) matrix_exp<matrix_range_exp>(*this)
{ {
...@@ -1482,9 +1484,9 @@ namespace dlib ...@@ -1482,9 +1484,9 @@ namespace dlib
nr_ = std::abs(end_ - start_) + 1; nr_ = std::abs(end_ - start_) + 1;
} }
matrix_range_exp ( matrix_range_exp (
long start_, T start_,
long inc_, T inc_,
long end_ T end_
) : ) :
matrix_exp<matrix_range_exp>(*this) matrix_exp<matrix_range_exp>(*this)
{ {
...@@ -1496,12 +1498,12 @@ namespace dlib ...@@ -1496,12 +1498,12 @@ namespace dlib
inc = -inc_; inc = -inc_;
} }
long operator() ( T operator() (
long r, long r,
long long
) const { return start + r*inc; } ) const { return start + r*inc; }
long operator() ( T operator() (
long r long r
) const { return start + r*inc; } ) const { return start + r*inc; }
...@@ -1522,8 +1524,8 @@ namespace dlib ...@@ -1522,8 +1524,8 @@ namespace dlib
) const { return NC; } ) const { return NC; }
long nr_; long nr_;
long start; T start;
long inc; T inc;
}; };
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
......
...@@ -32,15 +32,15 @@ namespace dlib ...@@ -32,15 +32,15 @@ namespace dlib
return matrix_range_static_exp<start,1,end>(); return matrix_range_static_exp<start,1,end>();
} }
inline const matrix_range_exp range ( inline const matrix_range_exp<long> range (
long start, long start,
long end long end
) )
{ {
return matrix_range_exp(start,end); return matrix_range_exp<long>(start,end);
} }
inline const matrix_range_exp range ( inline const matrix_range_exp<long> range (
long start, long start,
long inc, long inc,
long end long end
...@@ -54,7 +54,7 @@ namespace dlib ...@@ -54,7 +54,7 @@ namespace dlib
<< "\n\tend: " << end << "\n\tend: " << end
); );
return matrix_range_exp(start,inc,end); return matrix_range_exp<long>(start,inc,end);
} }
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
...@@ -675,7 +675,7 @@ namespace dlib ...@@ -675,7 +675,7 @@ namespace dlib
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <typename T, long NR, long NC, typename mm, typename l, typename EXPr> template <typename T, long NR, long NC, typename mm, typename l, typename EXPr>
assignable_sub_range_matrix<T,NR,NC,mm,l,EXPr,matrix_range_exp > set_rowm ( assignable_sub_range_matrix<T,NR,NC,mm,l,EXPr,matrix_range_exp<long> > set_rowm (
matrix<T,NR,NC,mm,l>& m, matrix<T,NR,NC,mm,l>& m,
const matrix_exp<EXPr>& rows const matrix_exp<EXPr>& rows
) )
...@@ -691,13 +691,13 @@ namespace dlib ...@@ -691,13 +691,13 @@ namespace dlib
<< "\n\trows.nc(): " << rows.nc() << "\n\trows.nc(): " << rows.nc()
); );
return assignable_sub_range_matrix<T,NR,NC,mm,l,EXPr,matrix_range_exp >(m,rows.ref(),range(0,m.nc()-1)); return assignable_sub_range_matrix<T,NR,NC,mm,l,EXPr,matrix_range_exp<long> >(m,rows.ref(),range(0,m.nc()-1));
} }
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <typename T, long NR, long NC, typename mm, typename l, typename EXPc> template <typename T, long NR, long NC, typename mm, typename l, typename EXPc>
assignable_sub_range_matrix<T,NR,NC,mm,l,matrix_range_exp,EXPc > set_colm ( assignable_sub_range_matrix<T,NR,NC,mm,l,matrix_range_exp<long>,EXPc > set_colm (
matrix<T,NR,NC,mm,l>& m, matrix<T,NR,NC,mm,l>& m,
const matrix_exp<EXPc>& cols const matrix_exp<EXPc>& cols
) )
...@@ -713,7 +713,7 @@ namespace dlib ...@@ -713,7 +713,7 @@ namespace dlib
<< "\n\tcols.nc(): " << cols.nc() << "\n\tcols.nc(): " << cols.nc()
); );
return assignable_sub_range_matrix<T,NR,NC,mm,l,matrix_range_exp,EXPc >(m,range(0,m.nr()-1),cols.ref()); return assignable_sub_range_matrix<T,NR,NC,mm,l,matrix_range_exp<long>,EXPc >(m,range(0,m.nr()-1),cols.ref());
} }
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment