toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN internal/config.hh internal/foreign_matrix...


From: Tom Drummond
Subject: [Toon-members] TooN internal/config.hh internal/foreign_matrix...
Date: Sat, 11 Apr 2009 05:23:16 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Tom Drummond <twd20>    09/04/11 05:23:16

Modified files:
        internal       : config.hh foreign_matrix.hh matrix.hh mbase.hh 
        test           : test_foreign.cc 

Log message:
        fixes to foreign wrapping of data
        see test_foreign.cc for two methods of wrapping foreign data

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/config.hh?cvsroot=toon&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/foreign_matrix.hh?cvsroot=toon&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/matrix.hh?cvsroot=toon&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/TooN/internal/mbase.hh?cvsroot=toon&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/TooN/test/test_foreign.cc?cvsroot=toon&r1=1.3&r2=1.4

Patches:
Index: internal/config.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/config.hh,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- internal/config.hh  1 Apr 2009 17:51:41 -0000       1.1
+++ internal/config.hh  11 Apr 2009 05:23:15 -0000      1.2
@@ -0,0 +1,13 @@
+/* internal/config.hh.  Generated from config.hh.in by configure.  */
+/* #undef TOON_TYPEOF_DECLTYPE */
+
+#define TOON_TYPEOF_TYPEOF 1
+
+/* #undef TOON_TYPEOF___TYPEOF__ */
+
+/* #undef TOON_TYPEOF_BOOST */
+
+/* #undef TOON_TYPEOF_BUILTIN */
+
+#define PACKAGE_VERSION "version-1.0.1"
+

Index: internal/foreign_matrix.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/foreign_matrix.hh,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- internal/foreign_matrix.hh  26 Mar 2009 15:13:16 -0000      1.1
+++ internal/foreign_matrix.hh  11 Apr 2009 05:23:16 -0000      1.2
@@ -1,3 +1,4 @@
+// -*- c++ -*-
 
 
////////////////////////////////////////////////////////////////////////////////
 //
@@ -9,12 +10,16 @@
 
        struct RowMajor
        {
-               template<int Rows, int Cols, class Precision> struct Layout: 
public Internal::GenericMBase<Rows, Cols, Precision, (Rows==-1?-2:Rows), 1, 
Internal::MatrixSlice<Rows, Cols, Precision> >
+               template<int Rows, int Cols, class Precision> struct Layout: 
public Internal::GenericMBase<Rows, Cols, Precision, (Cols==-1?-2:Cols), 1, 
Internal::MatrixSlice<Rows, Cols, Precision> >
                {
-                       template<class T> Layout(Precision* p, SliceSpec<T> 
spec)
-                       :Internal::GenericMBase<Rows, Cols, Precision, 
(Rows==-1?-2:Rows), 1, Internal::MatrixSlice<Rows, Cols, Precision> >(p, spec)
-                       {
-                       }
+                       Layout(Precision* p, int r=0, int c=0)
+                               : Internal::GenericMBase<Rows,Cols,Precision, 
(Cols==-1?-2:Cols), 1, Internal::MatrixSlice<Rows, Cols, Precision> > (p, r, c, 
0, 0)
+                       {}
+
+//                     template<class T> Layout(Precision* p, SliceSpec<T> 
spec)
+//                     :Internal::GenericMBase<Rows, Cols, Precision, 
(Rows==-1?-2:Rows), 1, Internal::MatrixSlice<Rows, Cols, Precision> >(p, spec)
+//                     {
+//                     }
                };
        };
 
@@ -22,21 +27,18 @@
        {
                template<int Rows, int Cols, class Precision> struct Layout: 
public Internal::GenericMBase<Rows, Cols, Precision, 1, (Rows==-1?-2:Rows), 
Internal::MatrixSlice<Rows, Cols, Precision> >
                {
-                       template<class T> Layout(Precision* p, SliceSpec<T> 
spec)
-                       :Internal::GenericMBase<Rows, Cols, Precision, 1, 
(Rows==-1?-2:Rows), Internal::MatrixSlice<Rows, Cols, Precision> >(p, spec)
-                       {
-                       }
+                       Layout(Precision* p, int r=0, int c=0)
+                               : Internal::GenericMBase<Rows, Cols, Precision, 
1, (Rows==-1?-2:Rows), Internal::MatrixSlice<Rows, Cols, Precision> >(p, r, c, 
0, 0)
+                       {}
                };
        };
 }
 
-
 template<int R, int C, typename Precision=double, class 
Type=Reference::RowMajor> struct Wrap
 {
        static Matrix<R, C, Precision, Type> wrap(Precision* p)
        {
-               SliceSpec<Internal::Spec_____> s;
-               return Matrix<R, C, Precision, Type>(p, s);
+               return Matrix<R, C, Precision, Type>(p);
        }
 };
 
@@ -45,9 +47,7 @@
 {
        static Matrix<R, Dynamic, Precision, Type> wrap(Precision* p, int cols)
        {
-               SliceSpec<Internal::Spec__C__> s;
-               s.c = cols;
-               return Matrix<R, Dynamic, Precision, Type>(p, s);
+               return Matrix<R, Dynamic, Precision, Type>(p, 0, cols);
        }
 };
 
@@ -56,9 +56,7 @@
 {
        static Matrix<Dynamic, C, Precision, Type> wrap(Precision* p, int rows)
        {
-               SliceSpec<Internal::Spec_R___> s;
-               s.r = rows;
-               return Matrix<Dynamic, C, Precision, Type>(p, s);
+               return Matrix<Dynamic, C, Precision, Type>(p, rows, 0);
        }
 };
 
@@ -67,10 +65,7 @@
 {
        static Matrix<Dynamic, Dynamic, Precision, Type> wrap(Precision* p, int 
rows, int cols)
        {
-               SliceSpec<Internal::Spec_RC__> s;
-               s.r = rows;
-               s.c = cols;
-               return Matrix<Dynamic, Dynamic, Precision, Type>(p, s);
+               return Matrix<Dynamic, Dynamic, Precision, Type>(p, rows, cols);
        }
 };
 

Index: internal/matrix.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/matrix.hh,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- internal/matrix.hh  8 Apr 2009 04:14:39 -0000       1.24
+++ internal/matrix.hh  11 Apr 2009 05:23:16 -0000      1.25
@@ -12,6 +12,19 @@
                
        Matrix(){}
 
+       Matrix(int rows, int cols) :
+               Layout::template Layout<Rows,Cols,Precision>(rows, cols)
+       {}
+
+       Matrix(Precision* p) :
+               Layout::template Layout<Rows, Cols, Precision>(p)
+       {}
+
+       Matrix(Precision* p, int r, int c) :
+               Layout::template Layout<Rows, Cols, Precision>(p, r, c)
+       {}
+
+
        //The stride is always passed during a slice. If it is not
        //needed, it will be ignored later and not stored.
        Matrix(Precision* data, int rowstride, int colstride, Internal::Slicing)
@@ -20,15 +33,13 @@
        Matrix(Precision* data, int rows, int cols, int rowstride, int 
colstride, Internal::Slicing)
        :Layout::template Layout<Rows, Cols, Precision>(data, rows, cols, 
rowstride, colstride){}
 
-       Matrix(int rows, int cols)
-       :Layout::template Layout<Rows,Cols,Precision>(rows, cols)
-       {}
+
        
        // Pass on a generic struct holding data about a slice
-       template<class C> 
-       Matrix(Precision* data, const SliceSpec<C>& slice)
-       :Layout::template Layout<Rows,Cols,Precision>(data, slice)
-       {}
+//     template<class C> 
+//     Matrix(Precision* data, const SliceSpec<C>& slice)
+//     :Layout::template Layout<Rows,Cols,Precision>(data, slice)
+//     {}
 
        //See vector.hh and allocator.hh for details about why the
        //copy constructor should be default.

Index: internal/mbase.hh
===================================================================
RCS file: /cvsroot/toon/TooN/internal/mbase.hh,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- internal/mbase.hh   31 Mar 2009 04:25:55 -0000      1.24
+++ internal/mbase.hh   11 Apr 2009 05:23:16 -0000      1.25
@@ -16,10 +16,10 @@
        template<int Rows, int Cols, class Precision> struct Layout: public 
GenericMBase<Rows, Cols, Precision, RowStride, ColStride, MatrixSlice<Rows, 
Cols, Precision> >
        {
                //Optional constructors.
-               Layout(Precision* p, int rowstride, int colstride)
-                       
:GenericMBase<Rows,Cols,Precision,RowStride,ColStride,MatrixSlice<Rows, Cols, 
Precision> >(p, rowstride, colstride, Internal::SpecifyStride())
-               {
-               }
+//             Layout(Precision* p, int rowstride, int colstride)
+//                     
:GenericMBase<Rows,Cols,Precision,RowStride,ColStride,MatrixSlice<Rows, Cols, 
Precision> >(p, rowstride, colstride, Internal::SpecifyStride())
+//             {
+//             }
                
                Layout(Precision* p, int rows, int cols, int rowstride, int 
colstride)
                        
:GenericMBase<Rows,Cols,Precision,RowStride,ColStride,MatrixSlice<Rows, Cols, 
Precision> >(p, rows, cols, rowstride, colstride)
@@ -64,12 +64,12 @@
        //Both size and stride require two integer parameters.
        //In the case where only one is required, the meaning is 
        //ambiguous. Therefore a tag is used to specify the meaning.
-       GenericMBase(Precision* p, int r, int c, Internal::SpecifySize)
-       :Mem(p, r, c)
-       {}
+//     GenericMBase(Precision* p, int r, int c, Internal::SpecifySize)
+//     :Mem(p, r, c)
+//     {}
 
-       GenericMBase(Precision* p, int rs, int cs, Internal::SpecifyStride)
-       :Mem(p),RowStrideHolder<RowStride>(rs),ColStrideHolder<ColStride>(cs) {}
+//     GenericMBase(Precision* p, int rs, int cs, Internal::SpecifyStride)
+//     :Mem(p),RowStrideHolder<RowStride>(rs),ColStrideHolder<ColStride>(cs) {}
 
 
        GenericMBase(Precision* p, int r, int c, int rowstride, int colstride)
@@ -90,22 +90,22 @@
 
        //Unpack slice specifications in to specific constructors
        //These slice specifications are not allowed to ignore superfluous data.
-       GenericMBase(Precision* p, const Spec_____& s):Mem(p                    
)                                                                               
                               {}
-       GenericMBase(Precision* p, const Spec____C& s):Mem(p                    
)                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec___R_& s):Mem(p                    
), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())                       
                               {}
-       GenericMBase(Precision* p, const Spec___RC& s):Mem(p                    
), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec__C__& s):Mem(p, s.c 
,SpecifyCols())                                                                 
                                             {}
-       GenericMBase(Precision* p, const Spec__C_C& s):Mem(p, s.c, 
SpecifyCols())                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec__CR_& s):Mem(p, s.c, 
SpecifyCols()), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())          
                                            {}
-       GenericMBase(Precision* p, const Spec__CRC& s):Mem(p, s.c, 
SpecifyCols()), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec_R___& s):Mem(p, s.r, 
SpecifyRows())                                                                  
                                            {}
-       GenericMBase(Precision* p, const Spec_R__C& s):Mem(p, s.r, 
SpecifyRows())                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec_R_R_& s):Mem(p, s.r, 
SpecifyRows()), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())          
                                            {}
-       GenericMBase(Precision* p, const Spec_R_RC& s):Mem(p, s.r, 
SpecifyRows()), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec_RC__& s):Mem(p, s.r, s.c          
)                                                                               
                               {}
-       GenericMBase(Precision* p, const Spec_RC_C& s):Mem(p, s.r, s.c          
)                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
-       GenericMBase(Precision* p, const Spec_RCR_& s):Mem(p, s.r, s.c          
), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())                       
                               {}
-       GenericMBase(Precision* p, const Spec_RCRC& s):Mem(p, s.r, s.c          
), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec_____& s):Mem(p                    
)                                                                               
                               {}
+//     GenericMBase(Precision* p, const Spec____C& s):Mem(p                    
)                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec___R_& s):Mem(p                    
), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())                       
                               {}
+//     GenericMBase(Precision* p, const Spec___RC& s):Mem(p                    
), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec__C__& s):Mem(p, s.c 
,SpecifyCols())                                                                 
                                             {}
+//     GenericMBase(Precision* p, const Spec__C_C& s):Mem(p, s.c, 
SpecifyCols())                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec__CR_& s):Mem(p, s.c, 
SpecifyCols()), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())          
                                            {}
+//     GenericMBase(Precision* p, const Spec__CRC& s):Mem(p, s.c, 
SpecifyCols()), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec_R___& s):Mem(p, s.r, 
SpecifyRows())                                                                  
                                            {}
+//     GenericMBase(Precision* p, const Spec_R__C& s):Mem(p, s.r, 
SpecifyRows())                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec_R_R_& s):Mem(p, s.r, 
SpecifyRows()), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())          
                                            {}
+//     GenericMBase(Precision* p, const Spec_R_RC& s):Mem(p, s.r, 
SpecifyRows()), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec_RC__& s):Mem(p, s.r, s.c          
)                                                                               
                               {}
+//     GenericMBase(Precision* p, const Spec_RC_C& s):Mem(p, s.r, s.c          
)                                                        
,ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
+//     GenericMBase(Precision* p, const Spec_RCR_& s):Mem(p, s.r, s.c          
), RowStrideHolder<RowStride>(s.rs, Internal::NoIgnore())                       
                               {}
+//     GenericMBase(Precision* p, const Spec_RCRC& s):Mem(p, s.r, s.c          
), RowStrideHolder<RowStride>(s.rs, 
Internal::NoIgnore()),ColStrideHolder<ColStride>(s.cs,Internal::NoIgnore()){}
 
        using Mem::my_data;
        using Mem::num_cols;

Index: test/test_foreign.cc
===================================================================
RCS file: /cvsroot/toon/TooN/test/test_foreign.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- test/test_foreign.cc        26 Mar 2009 15:13:17 -0000      1.3
+++ test/test_foreign.cc        11 Apr 2009 05:23:16 -0000      1.4
@@ -6,14 +6,28 @@
 
 int main()
 {
-       double data[]={1, 2, 3, 4};
+       double data[]={1, 2, 3, 4, 5, 6};
 
-       Matrix<2> m = Identity;
 
-       cout << m << endl;
+       cout << Matrix<2,3,double, Reference::RowMajor> (data) << endl;
+       cout << Matrix<2,-1,double, Reference::RowMajor> (data,2,3) << endl;
+       cout << Matrix<-1,3,double, Reference::RowMajor> (data,2,3) << endl;
+       cout << Matrix<-1,-1,double, Reference::RowMajor> (data,2,3) << endl;
 
-       cout << Wrap<-1,2>::wrap(data, 1) << endl;
+       cout << Wrap<2,3>::wrap(data) << endl;
+       cout << Wrap<2,Dynamic>::wrap(data,3) << endl;
+       cout << Wrap<Dynamic,3>::wrap(data,2) << endl;
+       cout << Wrap<Dynamic, Dynamic>::wrap(data,2,3) << endl;
 
-       cout << m + Wrap<-1,2>::wrap(data,2);
+
+       cout << Matrix<2,3,double, Reference::ColMajor> (data) << endl;
+       cout << Matrix<2,-1,double, Reference::ColMajor> (data,2,3) << endl;
+       cout << Matrix<-1,3,double, Reference::ColMajor> (data,2,3) << endl;
+       cout << Matrix<-1,-1,double, Reference::ColMajor> (data,2,3) << endl;
+
+       cout << Wrap<2,3,double,Reference::ColMajor>::wrap(data) << endl;
+       cout << Wrap<2,Dynamic,double,Reference::ColMajor>::wrap(data,3) << 
endl;
+       cout << Wrap<Dynamic,3,double,Reference::ColMajor>::wrap(data,2) << 
endl;
+       cout << Wrap<Dynamic, 
Dynamic,double,Reference::ColMajor>::wrap(data,2,3) << endl;
 
 };




reply via email to

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