[Top][All Lists]
[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;
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Toon-members] TooN internal/config.hh internal/foreign_matrix...,
Tom Drummond <=