[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Toon-members] TooN TODO internal/mbase.hh internal/vbase.hh t...
From: |
Edward Rosten |
Subject: |
[Toon-members] TooN TODO internal/mbase.hh internal/vbase.hh t... |
Date: |
Wed, 11 Feb 2009 14:12:07 +0000 |
CVSROOT: /cvsroot/toon
Module name: TooN
Changes by: Edward Rosten <edrosten> 09/02/11 14:12:07
Modified files:
. : TODO
internal : mbase.hh vbase.hh
test : mat_test.cc
Log message:
Const accessors.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/TODO?cvsroot=toon&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/mbase.hh?cvsroot=toon&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/vbase.hh?cvsroot=toon&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/TooN/test/mat_test.cc?cvsroot=toon&r1=1.3&r2=1.4
Patches:
Index: TODO
===================================================================
RCS file: /cvsroot/toon/TooN/TODO,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- TODO 10 Feb 2009 13:44:51 -0000 1.5
+++ TODO 11 Feb 2009 14:12:06 -0000 1.6
@@ -1,6 +1,3 @@
-const slices of vector
-const slices of matrices
-const vector indexing of matrices
bounds checking for matrices
slice checking for matrices
bounds checking for vectors
Index: internal/mbase.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/mbase.hh,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- internal/mbase.hh 10 Feb 2009 10:35:06 -0000 1.10
+++ internal/mbase.hh 11 Feb 2009 14:12:06 -0000 1.11
@@ -182,6 +182,10 @@
return Vec(my_data + stride()* r, num_cols(), 1, Slicing());
}
+ const Vec operator[](int r) const {
+ return Vec(const_cast<Precision*>(my_data + stride()* r),
num_cols(), 1, Slicing());
+ }
+
template<int Rstart, int Cstart, int Rlength, int Clength>
Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::RowMajor> slice()
{
@@ -190,14 +194,28 @@
return Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::RowMajor>(my_data+stride()*Rstart + Cstart, stride(),
Slicing());
}
+ template<int Rstart, int Cstart, int Rlength, int Clength>
+ const Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::RowMajor> slice() const
+ {
+ return Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::RowMajor>(const_cast<Precision*>(my_data+stride()*Rstart +
Cstart), stride(), Slicing());
+ }
+
Matrix<-1, -1, Precision, typename Slice<SliceStride>::RowMajor >
slice(int rs, int cs, int rl, int cl){
return Matrix<-1, -1, Precision, typename
Slice<SliceStride>::RowMajor >(my_data+stride()*rs +cs, rl, cl, stride(),
Slicing());
}
+ const Matrix<-1, -1, Precision, typename Slice<SliceStride>::RowMajor >
slice(int rs, int cs, int rl, int cl) const {
+ return Matrix<-1, -1, Precision, typename
Slice<SliceStride>::RowMajor >(const_cast<Precision*>(my_data+stride()*rs +cs),
rl, cl, stride(), Slicing());
+ }
+
Matrix<Cols, Rows, Precision, typename Slice<SliceStride>::ColMajor>
T(){
return Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::ColMajor>(my_data, num_rows(), num_cols(), stride(),
Slicing());
}
+
+ const Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::ColMajor> T() const{
+ return Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::ColMajor>(const_cast<Precision*>(my_data), num_rows(),
num_cols(), stride(), Slicing());
+ }
};
@@ -259,6 +277,10 @@
return Vec(my_data + r, num_cols(), stride(), Slicing());
}
+ const Vec operator[](int r) const {
+ return Vec(const_cast<Precision*>(my_data + r), num_cols(),
stride(), Slicing());
+ }
+
template<int Rstart, int Cstart, int Rlength, int Clength>
Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::ColMajor> slice()
{
@@ -267,13 +289,27 @@
return Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::ColMajor>(my_data+Rstart + stride()*Cstart, stride(),
Slicing());
}
+ template<int Rstart, int Cstart, int Rlength, int Clength>
+ const Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::ColMajor> slice() const
+ {
+ return Matrix<Rlength, Clength, Precision, typename
Slice<SliceStride>::ColMajor>(const_cast<Precision*>(my_data+Rstart +
stride()*Cstart), stride(), Slicing());
+ }
+
Matrix<-1, -1, Precision, typename Slice<SliceStride>::ColMajor >
slice(int rs, int cs, int rl, int cl){
return Matrix<-1, -1, Precision, typename
Slice<SliceStride>::ColMajor >(my_data+rs +stride()*cs, rl, cl, stride(),
Slicing());
}
+ const Matrix<-1, -1, Precision, typename Slice<SliceStride>::ColMajor >
slice(int rs, int cs, int rl, int cl)const{
+ return Matrix<-1, -1, Precision, typename
Slice<SliceStride>::ColMajor >(const_cast<Precision*>(my_data+rs +stride()*cs),
rl, cl, stride(), Slicing());
+ }
+
Matrix<Cols, Rows, Precision, typename Slice<SliceStride>::RowMajor>
T(){
return Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::RowMajor>(my_data, num_rows(), num_cols(), stride(),
Slicing());
}
+
+ const Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::RowMajor> T() const {
+ return Matrix<Cols, Rows, Precision, typename
Slice<SliceStride>::RowMajor>(const_cast<Precision*>(my_data), num_rows(),
num_cols(), stride(), Slicing());
+ }
};
Index: internal/vbase.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/vbase.hh,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- internal/vbase.hh 10 Feb 2009 14:35:24 -0000 1.9
+++ internal/vbase.hh 11 Feb 2009 14:12:06 -0000 1.10
@@ -74,12 +74,22 @@
return my_data[i * stride()];
}
+
template<int Start, int Length>
Vector<Length, Precision, SliceVBase<Length, Stride, Precision> >
slice(){
return Vector<Length, Precision, SliceVBase<Length, Stride,
Precision> >(my_data + stride()*Start, stride(), Slicing());
}
+ template<int Start, int Length>
+ const Vector<Length, Precision, SliceVBase<Length, Stride, Precision> >
slice() const {
+ return Vector<Length, Precision, SliceVBase<Length, Stride,
Precision> >(const_cast<Precision*>(my_data + stride()*Start), stride(),
Slicing());
+ }
+
Vector<-1, Precision, SliceVBase<-1, Stride, Precision> > slice(int
start, int length){
return Vector<-1, Precision, SliceVBase<-1, Stride, Precision>
>(my_data + stride()*start, length, stride(), Slicing());
}
+
+ const Vector<-1, Precision, SliceVBase<-1, Stride, Precision> >
slice(int start, int length) const {
+ return Vector<-1, Precision, SliceVBase<-1, Stride, Precision>
>(const_cast<Precision*>(my_data + stride()*start), length, stride(),
Slicing());
+ }
};
Index: test/mat_test.cc
===================================================================
RCS file: /cvsroot/toon/TooN/test/mat_test.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- test/mat_test.cc 7 Feb 2009 18:49:03 -0000 1.3
+++ test/mat_test.cc 11 Feb 2009 14:12:07 -0000 1.4
@@ -5,9 +5,9 @@
using namespace TooN;
using namespace std;
-template<int R, int C, class P, class L> void foo(Matrix<R,C,P,L>& m)
+
+template<int R, int C, class P, class L> void set(Matrix<R,C,P,L>& m)
{
- cout << "In foo:\n";
m[0][0] = 1;
m[0][1] = 2;
m[0][2] = 3;
@@ -20,6 +20,11 @@
m[2][1] = 10;
m[2][2] = 11;
m[2][3] = 12;
+}
+
+template<int R, int C, class P, class L> void foo(const Matrix<R,C,P,L>& m)
+{
+ cout << "In foo:\n";
cout << "Slices:\n";
cout << m << endl;
@@ -46,7 +51,9 @@
int main()
{
Matrix<3,4> m;
+ set(m);
foo(m);
Matrix<3,4,double,ColMajor> n;
+ set(n);
foo(n);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Toon-members] TooN TODO internal/mbase.hh internal/vbase.hh t...,
Edward Rosten <=