toon-members
[Top][All Lists]
Advanced

[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);
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]