00001
00002 #ifndef vsl_deque_io_txx_
00003 #define vsl_deque_io_txx_
00004
00005
00006
00007
00008
00009
00010
00011 #include "vsl_deque_io.h"
00012 #include <vsl/vsl_binary_io.h>
00013 #include <vcl_iostream.h>
00014
00015
00016
00017 template <class T>
00018 void vsl_b_write(vsl_b_ostream& s, const vcl_deque<T>& v)
00019 {
00020 const short version_no = 1;
00021 vsl_b_write(s, version_no);
00022 vsl_b_write(s, v.size());
00023 for (unsigned i=0; i<v.size(); i++)
00024 vsl_b_write(s,v[i]);
00025 }
00026
00027
00028
00029 template <class T>
00030 void vsl_b_read(vsl_b_istream& is, vcl_deque<T>& v)
00031 {
00032 if (!is) return;
00033
00034 unsigned deque_size;
00035 short ver;
00036 vsl_b_read(is, ver);
00037 switch (ver)
00038 {
00039 case 1:
00040 vsl_b_read(is, deque_size);
00041 v.resize(deque_size);
00042 for (unsigned i=0; i<deque_size; i++)
00043 vsl_b_read(is,v[i]);
00044 break;
00045 default:
00046 vcl_cerr << "I/O ERROR: vsl_b_read(vsl_b_istream&, vcl_deque<T>&)\n"
00047 << " Unknown version number "<< ver << '\n';
00048 is.is().clear(vcl_ios::badbit);
00049 return;
00050 }
00051 }
00052
00053
00054
00055 template <class T>
00056 void vsl_print_summary(vcl_ostream& os, const vcl_deque<T> &v)
00057 {
00058 os << "Deque length: " << v.size() << vcl_endl;
00059 for (unsigned int i=0; i<v.size() && i<5; i++)
00060 {
00061 os << ' ' << i << ": ";
00062 vsl_print_summary(os,v[i]);
00063 os << vcl_endl;
00064 }
00065 if (v.size() > 5)
00066 os << " ...\n";
00067 }
00068
00069
00070 #define VSL_DEQUE_IO_INSTANTIATE(T) \
00071 template void vsl_print_summary(vcl_ostream&, const vcl_deque<T >&); \
00072 template void vsl_b_write(vsl_b_ostream& s, const vcl_deque<T >& v); \
00073 template void vsl_b_read(vsl_b_istream& s, vcl_deque<T >& v)
00074
00075 #endif // vsl_deque_io_txx_