00001
00002 #ifndef vgl_io_h_matrix_2d_txx_
00003 #define vgl_io_h_matrix_2d_txx_
00004
00005
00006
00007 #include "vgl_io_h_matrix_2d.h"
00008 #include <vsl/vsl_binary_io.h>
00009
00010
00011 template <class T>
00012 void vsl_b_write(vsl_b_ostream &bfs, const vgl_h_matrix_2d<T>& t)
00013 {
00014 static const short io_version_no = 1;
00015 vsl_b_write(bfs,io_version_no);
00016 vnl_matrix_fixed<T,3,3> m = t.get_matrix();
00017 vsl_b_write(bfs,m[0][0]); vsl_b_write(bfs,m[0][1]); vsl_b_write(bfs,m[0][2]);
00018 vsl_b_write(bfs,m[1][0]); vsl_b_write(bfs,m[1][1]); vsl_b_write(bfs,m[1][2]);
00019 vsl_b_write(bfs,m[2][0]); vsl_b_write(bfs,m[2][1]); vsl_b_write(bfs,m[2][2]);
00020 }
00021
00022
00023 template <class T>
00024 void vsl_b_read(vsl_b_istream &bfs, vgl_h_matrix_2d<T>& v)
00025 {
00026 if (!bfs) return;
00027
00028 short version;
00029 vsl_b_read(bfs,version);
00030 switch (version) {
00031 case 1:
00032 T xx,xy,xt,yx,yy,yt,tx,ty,tt;
00033 vsl_b_read(bfs,xx); vsl_b_read(bfs,xy); vsl_b_read(bfs,xt);
00034 vsl_b_read(bfs,yx); vsl_b_read(bfs,yy); vsl_b_read(bfs,yt);
00035 vsl_b_read(bfs,tx); vsl_b_read(bfs,ty); vsl_b_read(bfs,tt);
00036 v.set(0,0,xx); v.set(0,1,xy); v.set(0,2,xt);
00037 v.set(1,0,yx); v.set(1,1,yy); v.set(1,2,yt);
00038 v.set(2,0,tx); v.set(2,0,ty); v.set(2,2,tt);
00039 break;
00040 default:
00041 vcl_cerr << "I/O ERROR: vgl_h_matrix_2d::b_read(vsl_b_istream&)\n"
00042 << " Unknown version number "<< version << '\n';
00043 bfs.is().clear(vcl_ios::badbit);
00044 return;
00045 }
00046 }
00047
00048
00049 #define VGL_IO_H_MATRIX_2D_INSTANTIATE(T) \
00050 template void vsl_b_read(vsl_b_istream &, vgl_h_matrix_2d<T >&); \
00051 template void vsl_b_write(vsl_b_ostream &, const vgl_h_matrix_2d<T >&)
00052
00053 #endif // vgl_io_h_matrix_2d_txx_