core/vsl/vsl_deque_io.txx

Go to the documentation of this file.
00001 // This is core/vsl/vsl_deque_io.txx
00002 #ifndef vsl_deque_io_txx_
00003 #define vsl_deque_io_txx_
00004 //:
00005 // \file
00006 // \brief  binary IO functions for vcl_deque<T>
00007 // \author K.Y.McGaul
00008 //
00009 // Implementation
00010 
00011 #include "vsl_deque_io.h"
00012 #include <vsl/vsl_binary_io.h>
00013 #include <vcl_iostream.h>
00014 
00015 //====================================================================================
00016 //: Write deque to binary stream
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 //: Read deque from binary stream
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); // Set an unrecoverable IO error on stream
00049     return;
00050   }
00051 }
00052 
00053 //====================================================================================
00054 //: Output a human readable summary to the stream
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_

Generated on Thu Aug 28 05:06:01 2008 for core/vsl by  doxygen 1.5.1