00001 #include <TooN/TooN.h> 00002 #include <iterator> 00003 #include <iostream> 00004 00005 using namespace TooN; 00006 using namespace std; 00007 00008 00009 template<int R, int C, class P, class L> void set(Matrix<R,C,P,L>& m) 00010 { 00011 m[0][0] = 1; 00012 m[0][1] = 2; 00013 m[0][2] = 3; 00014 m[0][3] = 4; 00015 m[1][0] = 5; 00016 m[1][1] = 6; 00017 m[1][2] = 7; 00018 m[1][3] = 8; 00019 m[2][0] = 9; 00020 m[2][1] = 10; 00021 m[2][2] = 11; 00022 m[2][3] = 12; 00023 } 00024 00025 template<int R, int C, class P, class L> void foo(const Matrix<R,C,P,L>& m) 00026 { 00027 cout << "In foo:\n"; 00028 00029 cout << "Slices:\n"; 00030 cout << m << endl; 00031 cout << m.template slice<0,0,2,3>() << endl; 00032 cout << m.template slice<0,0,2,3>().template slice<0,1,2,2>() << endl; 00033 00034 cout << "Transposes:\n"; 00035 cout << m.T() << endl; 00036 cout << m.T().template slice<0,0,2,3>() << endl; 00037 cout << m.T().template slice<0,0,2,3>().template slice<0,1,2,2>() << endl; 00038 00039 cout << "Subscripts:\n"; 00040 cout << m[0] << ", " << m[1] << ", " << m[2] << endl; 00041 00042 cout << m.template slice<1,1,2,2>()[0] << ", " << m.template slice<1,1,2,2>()[1] << endl; 00043 00044 cout << "Layout:\n"; 00045 00046 copy(&m[0][0], &m[0][0]+m.num_rows()*m.num_cols(), ostream_iterator<double>(cout, " ")); 00047 cout << endl; 00048 } 00049 00050 00051 int main() 00052 { 00053 Matrix<3,4> m; 00054 set(m); 00055 foo(m); 00056 00057 cout << m.my_data << endl; 00058 00059 Matrix<3,4,double,ColMajor> n; 00060 set(n); 00061 foo(n); 00062 }