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
// ----------------------------------------------------------------------------------------
template <typename T>
class matrix_range_exp;
template <>
struct matrix_traits<matrix_range_exp>
template <typename T>
struct matrix_traits<matrix_range_exp<T> >
{
typedef long type;
typedef T type;
typedef memory_manager<char>::kernel_1a mem_manager_type;
typedef row_major_layout layout_type;
const static long NR = 0;
......@@ -1449,15 +1450,16 @@ namespace dlib
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:
typedef 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>::type 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 NC = matrix_traits<matrix_range_exp>::NC;
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 (
const matrix_range_exp& item
......@@ -1469,8 +1471,8 @@ namespace dlib
{}
matrix_range_exp (
long start_,
long end_
T start_,
T end_
) :
matrix_exp<matrix_range_exp>(*this)
{
......@@ -1482,9 +1484,9 @@ namespace dlib
nr_ = std::abs(end_ - start_) + 1;
}
matrix_range_exp (
long start_,
long inc_,
long end_
T start_,
T inc_,
T end_
) :
matrix_exp<matrix_range_exp>(*this)
{
......@@ -1496,12 +1498,12 @@ namespace dlib
inc = -inc_;
}
long operator() (
T operator() (
long r,
long
) const { return start + r*inc; }
long operator() (
T operator() (
long r
) const { return start + r*inc; }
......@@ -1522,8 +1524,8 @@ namespace dlib
) const { return NC; }
long nr_;
long start;
long inc;
T start;
T inc;
};
// ----------------------------------------------------------------------------------------
......
......@@ -32,15 +32,15 @@ namespace dlib
return matrix_range_static_exp<start,1,end>();
}
inline const matrix_range_exp range (
inline const matrix_range_exp<long> range (
long start,
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 inc,
long end
......@@ -54,7 +54,7 @@ namespace dlib
<< "\n\tend: " << end
);
return matrix_range_exp(start,inc,end);
return matrix_range_exp<long>(start,inc,end);
}
// ----------------------------------------------------------------------------------------
......@@ -675,7 +675,7 @@ namespace dlib
// ----------------------------------------------------------------------------------------
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,
const matrix_exp<EXPr>& rows
)
......@@ -691,13 +691,13 @@ namespace dlib
<< "\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>
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,
const matrix_exp<EXPc>& cols
)
......@@ -713,7 +713,7 @@ namespace dlib
<< "\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