00001
00002
00003
00004
00005
00006
00007 #include "vsl_vector_io.h"
00008 #include <vsl/vsl_binary_io.h>
00009 #include <vcl_iostream.h>
00010
00011
00012
00013 VCL_DEFINE_SPECIALIZATION
00014 void vsl_b_write(vsl_b_ostream& s, const vcl_vector<vcl_vector<bool> >& v)
00015 {
00016 const short version_no = 1;
00017 vsl_b_write(s, version_no);
00018 unsigned n = v.size();
00019 vsl_b_write(s, n);
00020 for (unsigned i=0; i<n; ++i)
00021 {
00022 unsigned m = v[i].size();
00023 vsl_b_write(s, m);
00024 for (unsigned j=0; j<m; ++j)
00025 {
00026 vsl_b_write(s, v[i][j]);
00027 }
00028 }
00029 }
00030
00031
00032
00033 VCL_DEFINE_SPECIALIZATION
00034 void vsl_b_read(vsl_b_istream& is, vcl_vector<vcl_vector<bool> >& v)
00035 {
00036 if (!is) return;
00037
00038 unsigned n, m;
00039 short ver;
00040 vsl_b_read(is, ver);
00041 switch (ver)
00042 {
00043 case 1:
00044 vsl_b_read(is, n);
00045 v.resize(n);
00046 for (unsigned i=0; i<n; ++i)
00047 {
00048 vsl_b_read(is, m);
00049 v[i].resize(m);
00050 for (unsigned j=0; j<m; ++j)
00051 {
00052 bool b;
00053 vsl_b_read(is, b);
00054 v[i][j] = b;
00055 }
00056 }
00057 break;
00058
00059 default:
00060 vcl_cerr << "I/O ERROR: vsl_b_read(vsl_b_istream&, vcl_vector<vcl_vector<T> >&)\n"
00061 << " Unknown version number "<< ver << '\n';
00062 is.is().clear(vcl_ios::badbit);
00063 return;
00064 }
00065 }
00066
00067
00068
00069 VCL_DEFINE_SPECIALIZATION
00070 void vsl_print_summary(vcl_ostream& os, const vcl_vector<vcl_vector<bool> >& v)
00071 {
00072 unsigned n = v.size();
00073 os << "Vector length: " << n << '\n';
00074 for (unsigned int i=0; i<n && i<5; i++)
00075 {
00076 os << ' ' << i << ": ";
00077 unsigned m = v[i].size();
00078 os << "\tVector length: " << m << '\n';
00079 for (unsigned int j=0; j<m && j<5; j++)
00080 {
00081 os << ' ' << j << ": ";
00082 vsl_print_summary(os, v[i][j]);
00083 }
00084 if (m > 5) os << " ... ";
00085 os << '\n';
00086 }
00087 if (n > 5) os << " ...";
00088 os << "\n\n";
00089 }
00090
00091